{"version":3,"file":"coopse.script.recipeItemApp.486feca9.js","mappings":";ybACA,OACEA,WAFmC,oBAAXC,QAA0BA,OAAOD,YAAcC,OAAOD,WAAWE,KAAKD,SCGhG,IAAIE,EACJ,MAAMC,EAAQ,IAAIC,WAAW,IACd,SAASC,IAEtB,IAAKH,IAEHA,EAAoC,oBAAXF,QAA0BA,OAAOE,iBAAmBF,OAAOE,gBAAgBD,KAAKD,SAEpGE,GACH,MAAM,IAAII,MAAM,4GAIpB,OAAOJ,EAAgBC,EACzB,CCXA,MAAMI,EAAY,GAElB,IAAK,IAAIC,EAAI,EAAGA,EAAI,MAAOA,EACzBD,EAAUE,MAAMD,EAAI,KAAOE,SAAS,IAAIC,MAAM,ICmBhD,MAxBA,SAAYC,EAASC,EAAKC,GACxB,GAAI,EAAOf,aAAec,IAAQD,EAChC,OAAO,EAAOb,aAIhB,MAAMgB,GADNH,EAAUA,GAAW,CAAC,GACDI,SAAWJ,EAAQP,KAAOA,KAK/C,GAHAU,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBF,EAAK,CACPC,EAASA,GAAU,EAEnB,IAAK,IAAIN,EAAI,EAAGA,EAAI,KAAMA,EACxBK,EAAIC,EAASN,GAAKO,EAAKP,GAGzB,OAAOK,CACT,CAEA,ODbK,SAAyBI,EAAKH,EAAS,GAG5C,OAAOP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,IAChf,CCSSI,CAAgBH,EACzB,yBC1BA,IAAII,EAAM,CACT,wCAAyC,CACxC,MACA,KACA,KACA,IACA,KAED,4CAA6C,CAC5C,MACA,KACA,KACA,IACA,KAED,8CAA+C,CAC9C,KACA,MAED,iDAAkD,CACjD,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,+CAAgD,CAC/C,KACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,sDAAuD,CACtD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,0DAA2D,CAC1D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,0DAA2D,CAC1D,MACA,MAED,6DAA8D,CAC7D,MACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,IACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,IACA,MAED,wDAAyD,CACxD,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,8BAA+B,CAC9B,MACA,KACA,KACA,MAED,kCAAmC,CAClC,MACA,KACA,KACA,MAED,kCAAmC,CAClC,MACA,KAED,qCAAsC,CACrC,MACA,KAED,0CAA2C,CAC1C,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,kCAAmC,CAClC,MACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,MAED,4CAA6C,CAC5C,MACA,KACA,MAED,sCAAuC,CACtC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,gDAAiD,CAChD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,8DAA+D,CAC9D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,KAED,qEAAsE,CACrE,MACA,KAED,gEAAiE,CAChE,MACA,KAED,mEAAoE,CACnE,MACA,KAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,wDAAyD,CACxD,IACA,KAED,2DAA4D,CAC3D,IACA,KAED,4DAA6D,CAC5D,MACA,KACA,KACA,IACA,MAED,gEAAiE,CAChE,MACA,KACA,KACA,IACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,4DAA6D,CAC5D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,MAED,gEAAiE,CAChE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,MAED,gEAAiE,CAChE,MACA,KAED,mEAAoE,CACnE,MACA,KAED,0DAA2D,CAC1D,MACA,KACA,MAED,8DAA+D,CAC9D,MACA,KACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,8DAA+D,CAC9D,MACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,MAED,qEAAsE,CACrE,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,MAED,gDAAiD,CAChD,MACA,KACA,MAED,gDAAiD,CAChD,MACA,KAED,mDAAoD,CACnD,MACA,KAED,8CAA+C,CAC9C,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,0DAA2D,CAC1D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,MAED,8DAA+D,CAC9D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,MAED,8DAA+D,CAC9D,MACA,MAED,iEAAkE,CACjE,MACA,MAED,gDAAiD,CAChD,MACA,KAED,oDAAqD,CACpD,MACA,KAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,0DAA2D,CAC1D,MACA,KACA,MAED,8DAA+D,CAC9D,MACA,KACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,iEAAkE,CACjE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,qEAAsE,CACrE,MACA,MAED,oDAAqD,CACpD,MACA,MAED,wDAAyD,CACxD,MACA,MAED,0DAA2D,CAC1D,MACA,MAED,6DAA8D,CAC7D,MACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,sDAAuD,CACtD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,oDAAqD,CACpD,MACA,KAED,uDAAwD,CACvD,MACA,KAED,6DAA8D,CAC7D,MACA,MAED,gEAAiE,CAChE,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,kEAAmE,CAClE,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,+DAAgE,CAC/D,MACA,MAED,0CAA2C,CAC1C,MACA,KACA,MAED,8CAA+C,CAC9C,MACA,KACA,MAED,8CAA+C,CAC9C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,kEAAmE,CAClE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,sEAAuE,CACtE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,sEAAuE,CACtE,MACA,MAED,yEAA0E,CACzE,MACA,MAED,sCAAuC,CACtC,KACA,KACA,KAED,0CAA2C,CAC1C,KACA,KACA,KAED,0CAA2C,CAC1C,MACA,KAED,6CAA8C,CAC7C,MACA,KAED,gCAAiC,CAChC,MACA,KACA,KACA,IACA,KACA,IACA,IACA,KAED,oCAAqC,CACpC,MACA,KACA,KACA,IACA,KACA,IACA,IACA,KAED,oCAAqC,CACpC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,sCAAuC,CACtC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,0CAA2C,CAC1C,KACA,MAED,6CAA8C,CAC7C,KACA,MAED,8CAA+C,CAC9C,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,8DAA+D,CAC9D,MACA,KACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,KACA,KACA,KACA,MAED,kEAAmE,CAClE,MACA,MAED,qEAAsE,CACrE,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,MAED,gDAAiD,CAChD,MACA,KACA,MAED,gDAAiD,CAChD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,8BAA+B,CAC9B,MACA,KAED,kCAAmC,CAClC,MACA,KAED,kCAAmC,CAClC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,8CAA+C,CAC9C,MACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,0DAA2D,CAC1D,MACA,KACA,KACA,IACA,KACA,KAED,8DAA+D,CAC9D,MACA,KACA,KACA,IACA,KACA,KAED,8DAA+D,CAC9D,MACA,MAED,iEAAkE,CACjE,MACA,MAED,4DAA6D,CAC5D,MACA,KACA,KACA,MAED,gEAAiE,CAChE,MACA,KACA,KACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kDAAmD,CAClD,KACA,KACA,KACA,KACA,KACA,KACA,MAED,sDAAuD,CACtD,KACA,KACA,KACA,KACA,KACA,KACA,MAED,sDAAuD,CACtD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,4CAA6C,CAC5C,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,gDAAiD,CAChD,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,gEAAiE,CAChE,MACA,KACA,KACA,KACA,MAED,oEAAqE,CACpE,MACA,KACA,KACA,KACA,MAED,oEAAqE,CACpE,MACA,MAED,uEAAwE,CACvE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,wEAAyE,CACxE,MACA,MAED,wEAAyE,CACxE,IACA,KAED,2EAA4E,CAC3E,IACA,KAED,4DAA6D,CAC5D,MACA,KACA,MAED,gEAAiE,CAChE,MACA,KACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,8BAA+B,CAC9B,MACA,KACA,KAED,kCAAmC,CAClC,MACA,KACA,KAED,kCAAmC,CAClC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,oCAAqC,CACpC,MACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,MAED,0CAA2C,CAC1C,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,wCAAyC,CACxC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,0DAA2D,CAC1D,KACA,KACA,MAED,8DAA+D,CAC9D,KACA,KACA,MAED,8DAA+D,CAC9D,KACA,MAED,iEAAkE,CACjE,KACA,MAED,oEAAqE,CACpE,MACA,KAED,uEAAwE,CACvE,MACA,KAED,gDAAiD,CAChD,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,wFAAyF,CACxF,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KAED,4FAA6F,CAC5F,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KAED,4FAA6F,CAC5F,MACA,MAED,+FAAgG,CAC/F,MACA,MAED,kEAAmE,CAClE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,sEAAuE,CACtE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,sEAAuE,CACtE,MACA,MAED,yEAA0E,CACzE,MACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,0CAA2C,CAC1C,MACA,KACA,MAED,8CAA+C,CAC9C,MACA,KACA,MAED,8CAA+C,CAC9C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,oCAAqC,CACpC,MACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,kCAAmC,CAClC,MACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,MAED,sCAAuC,CACtC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,oDAAqD,CACpD,MACA,KACA,MAED,wDAAyD,CACxD,MACA,KACA,MAED,0DAA2D,CAC1D,MACA,MAED,6DAA8D,CAC7D,MACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,gDAAiD,CAChD,KACA,MAED,mDAAoD,CACnD,KACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kFAAmF,CAClF,MACA,MAED,qFAAsF,CACrF,MACA,MAED,sCAAuC,CACtC,MACA,KACA,KACA,MAED,0CAA2C,CAC1C,MACA,KACA,KACA,MAED,0CAA2C,CAC1C,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,oDAAqD,CACpD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,gCAAiC,CAChC,MACA,MAED,oCAAqC,CACpC,MACA,MAED,oCAAqC,CACpC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,oCAAqC,CACpC,MACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,MAED,wCAAyC,CACxC,MACA,MAED,2CAA4C,CAC3C,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIrB,MAAM,uBAAyBe,EAAM,KAEjD,MADAM,EAAEC,KAAO,mBACHD,CACP,IAGD,IAAIE,EAAMV,EAAIE,GAAMS,EAAKD,EAAI,GAC7B,OAAOL,QAAQO,IAAIF,EAAIlB,MAAM,GAAGQ,IAAIG,EAAoBK,IAAID,MAAK,WAChE,OAAOJ,EAAoBQ,EAC5B,GACD,CACAV,EAAoBY,KAAO,WAAa,OAAOC,OAAOD,KAAKb,EAAM,EACjEC,EAAoBU,GAAK,MACzBI,EAAOC,QAAUf,yBCl/CjB,IAAID,EAAM,CACT,gDAAiD,CAChD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,qDAAsD,CACrD,KACA,MAED,yDAA0D,CACzD,KACA,MAED,0DAA2D,CAC1D,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,gDAAiD,CAChD,MACA,KACA,MAED,oDAAqD,CACpD,MACA,KACA,MAED,8DAA+D,CAC9D,MACA,MAED,kEAAmE,CAClE,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIrB,MAAM,uBAAyBe,EAAM,KAEjD,MADAM,EAAEC,KAAO,mBACHD,CACP,IAGD,IAAIE,EAAMV,EAAIE,GAAMS,EAAKD,EAAI,GAC7B,OAAOL,QAAQO,IAAIF,EAAIlB,MAAM,GAAGQ,IAAIG,EAAoBK,IAAID,MAAK,WAChE,OAAOJ,EAAoBQ,EAC5B,GACD,CACAV,EAAoBY,KAAO,WAAa,OAAOC,OAAOD,KAAKb,EAAM,EACjEC,EAAoBU,GAAK,MACzBI,EAAOC,QAAUf,yBC5DjB,IAAID,EAAM,CACT,4CAA6C,CAC5C,MACA,IAED,+CAAgD,CAC/C,MACA,IAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kCAAmC,CAClC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,sCAAuC,CACtC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,sDAAuD,CACtD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,wCAAyC,CACxC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,gDAAiD,CAChD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,4BAA6B,CAC5B,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,MAED,gCAAiC,CAChC,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,MAED,gCAAiC,CAChC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,kCAAmC,CAClC,MACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,4DAA6D,CAC5D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MAED,4DAA6D,CAC5D,MACA,IAED,+DAAgE,CAC/D,MACA,IAED,gEAAiE,CAChE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,oEAAqE,CACpE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,oEAAqE,CACpE,KACA,MAED,uEAAwE,CACvE,KACA,MAED,0CAA2C,CAC1C,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KAED,8CAA+C,CAC9C,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KAED,8CAA+C,CAC9C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,sCAAuC,CACtC,MACA,KACA,MAED,0CAA2C,CAC1C,MACA,KACA,MAED,0CAA2C,CAC1C,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,sDAAuD,CACtD,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,0DAA2D,CAC1D,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,0DAA2D,CAC1D,MACA,MAED,6DAA8D,CAC7D,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,MAED,6CAA8C,CAC7C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,0DAA2D,CAC1D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,8DAA+D,CAC9D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,8DAA+D,CAC9D,MACA,MAED,iEAAkE,CACjE,MACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,MAED,4CAA6C,CAC5C,MACA,KAED,+CAAgD,CAC/C,MACA,KAED,8CAA+C,CAC9C,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,KAED,qDAAsD,CACrD,MACA,KAED,oCAAqC,CACpC,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wCAAyC,CACxC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,MAED,4DAA6D,CAC5D,MACA,KACA,KACA,MAED,yDAA0D,CACzD,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,IACA,MAED,sDAAuD,CACtD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,IACA,MAED,sDAAuD,CACtD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,kCAAmC,CAClC,EACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,EACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,8CAA+C,CAC9C,MACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,gCAAiC,CAChC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,oDAAqD,CACpD,KACA,MAED,uDAAwD,CACvD,KACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,KACA,KACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,MAED,sDAAuD,CACtD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,MAED,sDAAuD,CACtD,MACA,KAED,yDAA0D,CACzD,MACA,KAED,sCAAuC,CACtC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,0CAA2C,CAC1C,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,0CAA2C,CAC1C,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,sDAAuD,CACtD,MACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KAED,0DAA2D,CAC1D,MACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KAED,0DAA2D,CAC1D,KACA,KAED,6DAA8D,CAC7D,KACA,KAED,4DAA6D,CAC5D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,MAED,gEAAiE,CAChE,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,MAED,gEAAiE,CAChE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kCAAmC,CAClC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,sCAAuC,CACtC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,wCAAyC,CACxC,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,4CAA6C,CAC5C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,GACA,MAED,4DAA6D,CAC5D,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,GACA,MAED,4DAA6D,CAC5D,MACA,MAED,+DAAgE,CAC/D,MACA,MAED,oDAAqD,CACpD,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wDAAyD,CACxD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,8CAA+C,CAC9C,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,kDAAmD,CAClD,IACA,KAED,qDAAsD,CACrD,IACA,KAED,gCAAiC,CAChC,MACA,KACA,KACA,KACA,MAED,oCAAqC,CACpC,MACA,KACA,KACA,KACA,MAED,oCAAqC,CACpC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,GACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,GACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MAED,gDAAiD,CAChD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,wDAAyD,CACxD,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,4DAA6D,CAC5D,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,4DAA6D,CAC5D,MACA,KAED,+DAAgE,CAC/D,MACA,KAED,4CAA6C,CAC5C,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,gDAAiD,CAChD,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAED,gDAAiD,CAChD,IACA,KAED,mDAAoD,CACnD,IACA,KAED,kCAAmC,CAClC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,8BAA+B,CAC9B,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,kCAAmC,CAClC,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,kCAAmC,CAClC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,wDAAyD,CACxD,MACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,K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","sources":["webpack:///./node_modules/uuid/dist/esm-browser/native.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/microApps/episerver/components/blocks/ lazy ^\\.\\/.*\\/.*$ namespace object","webpack:///./src/microApps/episerver/components/pagePartials/ lazy ^\\.\\/.*\\/.*$ namespace object","webpack:///./src/microApps/episerver/components/pages/ lazy ^\\.\\/.*\\/.*$ namespace object","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/SeverityLevel.js","webpack:///../../node_modules/redux-thunk/es/index.js","webpack:///../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack:///../../packages/icons/src/coopLogos/coop.svg","webpack:///../../packages/icons/src/logos/facebook.mono.svg","webpack:///../../packages/icons/src/logos/x.mono.svg","webpack:///../../packages/icons/src/stroke2/arrow-left.svg","webpack:///../../packages/icons/src/stroke2/bag1.svg","webpack:///../../packages/icons/src/stroke2/checkmark.svg","webpack:///../../packages/icons/src/stroke2/chevron-down.svg","webpack:///../../packages/icons/src/stroke2/chevron-left.svg","webpack:///../../packages/icons/src/stroke2/chevron-right.svg","webpack:///../../packages/icons/src/stroke2/chevron-up.svg","webpack:///../../packages/icons/src/stroke2/clock.svg","webpack:///../../packages/icons/src/stroke2/close.svg","webpack:///../../packages/icons/src/stroke2/eco-leaf.svg","webpack:///../../packages/icons/src/stroke2/email.svg","webpack:///../../packages/icons/src/stroke2/external-link.svg","webpack:///../../packages/icons/src/stroke2/heart-filled.svg","webpack:///../../packages/icons/src/stroke2/heart.svg","webpack:///../../packages/icons/src/stroke2/home.svg","webpack:///../../packages/icons/src/stroke2/info1.svg","webpack:///../../packages/icons/src/stroke2/minus.svg","webpack:///../../packages/icons/src/stroke2/paper.svg","webpack:///../../packages/icons/src/stroke2/plus.svg","webpack:///../../packages/icons/src/stroke2/search.svg","webpack:///../../packages/icons/src/stroke2/star-filled.svg","webpack:///../../packages/icons/src/stroke2/star.svg","webpack:///../../packages/icons/src/stroke2/trash.svg","webpack:///../../packages/icons/src/stroke2/user.svg","webpack:///../../packages/icons/src/stroke2/warning1.svg","webpack:///../../node_modules/awesome-debounce-promise/dist/index.es.js","webpack:///../../node_modules/awesome-only-resolves-last-promise/dist/index.es.js","webpack:///../../node_modules/awesome-imperative-promise/dist/index.es.js","webpack:///../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///../../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///../../node_modules/date-fns/esm/addDays/index.js","webpack:///../../node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///../../node_modules/date-fns/esm/addMonths/index.js","webpack:///../../node_modules/date-fns/esm/addSeconds/index.js","webpack:///../../node_modules/date-fns/esm/compareAsc/index.js","webpack:///../../node_modules/date-fns/esm/constants/index.js","webpack:///../../node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///../../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///../../node_modules/date-fns/esm/endOfDay/index.js","webpack:///../../node_modules/date-fns/esm/endOfMonth/index.js","webpack:///../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///../../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///../../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/index.js","webpack:///../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///../../node_modules/date-fns/esm/format/index.js","webpack:///../../node_modules/date-fns/esm/isValid/index.js","webpack:///../../node_modules/date-fns/esm/isDate/index.js","webpack:///../../node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///../../node_modules/date-fns/esm/getHours/index.js","webpack:///../../node_modules/date-fns/esm/add/index.js","webpack:///../../node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///../../node_modules/date-fns/esm/differenceInDays/index.js","webpack:///../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///../../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack:///../../node_modules/date-fns/esm/intervalToDuration/index.js","webpack:///../../node_modules/date-fns/esm/differenceInYears/index.js","webpack:///../../node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///../../node_modules/date-fns/esm/differenceInHours/index.js","webpack:///../../node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///../../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///../../node_modules/date-fns/esm/isBefore/index.js","webpack:///../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///../../node_modules/date-fns/esm/parseISO/index.js","webpack:///../../node_modules/date-fns/esm/startOfDay/index.js","webpack:///../../node_modules/date-fns/esm/toDate/index.js","webpack:///../../node_modules/debounce-promise/dist/index.js","webpack:///../../node_modules/focus-trap-react/dist/focus-trap-react.js","webpack:///../../node_modules/focus-trap/dist/focus-trap.esm.js","webpack:///../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack:///../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack:///./src/microApps/common/components/BaseRecipeTeaser/BaseRecipeTeaser.module.less","webpack:///./src/microApps/common/components/ListBlock/ListBlock.module.less","webpack:///./src/microApps/common/components/organisms/MissingItemBody/MissingItemBody.module.less","webpack:///../../packages/components/src/ActionList/ActionList.module.scss","webpack:///../../packages/components/src/Badge/Badge.module.scss","webpack:///../../packages/components/src/Modal/Modal.module.scss","webpack:///../../packages/components/src/Search/Search.module.scss","webpack:///../../node_modules/object-assign/index.js","webpack:///../../node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../../node_modules/prop-types/index.js","webpack:///../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../../node_modules/react-async-hook/dist/react-async-hook.esm.js","webpack:///../../node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///../../node_modules/react-dom/client.js","webpack:///../../node_modules/react-dom/index.js","webpack:///../../node_modules/react-fast-compare/index.js","webpack:///../../node_modules/react-helmet/es/Helmet.js","webpack:///../../node_modules/react-image/umd/index.js","webpack:///../../node_modules/react-redux/es/utils/batch.js","webpack:///../../node_modules/react-redux/es/components/Context.js","webpack:///../../node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///../../node_modules/react-redux/es/hooks/useSelector.js","webpack:///../../node_modules/react-redux/es/utils/useSyncExternalStore.js","webpack:///../../node_modules/react-redux/es/utils/Subscription.js","webpack:///../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///../../node_modules/react-redux/es/components/connect.js","webpack:///../../node_modules/react-redux/es/components/Provider.js","webpack:///../../node_modules/react-redux/es/hooks/useStore.js","webpack:///../../node_modules/react-redux/es/hooks/useDispatch.js","webpack:///../../node_modules/react-redux/es/index.js","webpack:///../../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack:///../../node_modules/react-redux/node_modules/react-is/index.js","webpack:///../../node_modules/react-responsive/dist/react-responsive.js","webpack:///../../node_modules/react-router-dom/dist/index.js","webpack:///../../node_modules/react-router-dom/node_modules/@remix-run/router/dist/router.js","webpack:///../../node_modules/react-router-dom/node_modules/react-router/dist/index.js","webpack:///../../node_modules/react-schemaorg/dist/src/index.js","webpack:///../../node_modules/react-schemaorg/dist/src/json-ld.js","webpack:///../../node_modules/react-side-effect/lib/index.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///../../node_modules/dom-helpers/esm/removeClass.js","webpack:///../../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///../../node_modules/react-transition-group/esm/utils/reflow.js","webpack:///../../node_modules/react-transition-group/esm/Transition.js","webpack:///../../node_modules/react-transition-group/esm/CSSTransition.js","webpack:///../../node_modules/dom-helpers/esm/addClass.js","webpack:///../../node_modules/dom-helpers/esm/hasClass.js","webpack:///../../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///../../node_modules/react/cjs/react.production.min.js","webpack:///../../node_modules/react/index.js","webpack:///../../node_modules/react/jsx-runtime.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///../../node_modules/redux/es/redux.js","webpack:///../../node_modules/reselect/es/defaultMemoize.js","webpack:///../../node_modules/reselect/es/index.js","webpack:///../../node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///../../node_modules/scheduler/index.js","webpack:///../../node_modules/tabbable/dist/index.esm.js","webpack:///./src/analytics/analyticsHandler.ts","webpack:///./src/appConfig.ts","webpack:///../../node_modules/@microsoft/applicationinsights-shims/dist-esm/Constants.js","webpack:///../../node_modules/@microsoft/applicationinsights-shims/dist-esm/Helpers.js","webpack:///../../node_modules/@microsoft/applicationinsights-shims/dist-esm/TsLibShims.js","webpack:///../../node_modules/@microsoft/dynamicproto-js/lib/dist/esm/dynamicproto-js.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryPluginChain.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/Constants.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/DataPointType.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/EventData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/MessageData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/DataPoint.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/MetricData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/PageViewData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/PageViewPerfData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/ExceptionData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/ExceptionDetails.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/StackFrame.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/RemoteDependencyData.js","webpack:///../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","webpack:///../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","webpack:///../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","webpack:///../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/ApplicationInsights.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/ContextTagKeys.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/Envelope.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/Data.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/Base.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","webpack:///../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","webpack:///../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","webpack:///../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","webpack:///../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","webpack:///../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/TraceParent.js","webpack:///../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","webpack:///../../node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","webpack:///../../node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","webpack:///./src/appInsights.ts","webpack:///./src/facades/storage/localStorageFacade.ts","webpack:///./src/globalDomHandlers/gaNonInteractionUserEventHandler.ts","webpack:///./src/utility/ViewPortObserver.ts","webpack:///./src/globalDomHandlers/videoClickHandler.ts","webpack:///./src/globalFunctionInvokes.ts","webpack:///./src/globalDomHandlers/bannerResizeHandler.ts","webpack:///./src/globalDomHandlers/gaPromoViewHandler.ts","webpack:///./src/microApps/base/BaseLayout.tsx","webpack:///./src/microApps/base/components/CommonLayout/CommonLayout.hooks.ts","webpack:///./src/microApps/common/components/molecules/CncFlyIn.tsx","webpack:///./src/microApps/common/hooks/usePageConsumptionTracking.ts","webpack:///./src/microApps/member/components/Consent/Consent.module.less","webpack:///./src/microApps/member/components/Consent/Consent.tsx","webpack:///./src/microApps/member/components/Consent/ConsentAdobe.tsx","webpack:///./src/microApps/member/components/Consent/ConsentSwitch.tsx","webpack:///./src/utility/upscopeUtils.ts","webpack:///../../packages/icons/src/stroke2/shield.svg","webpack:///./src/microApps/base/components/UpscopeTriggerButton.tsx","webpack:///../../packages/icons/src/logos/instagram.mono.svg","webpack:///./src/microApps/base/components/Footer/ConsentButton.tsx","webpack:///./src/microApps/base/components/Footer/Footer.module.less","webpack:///./src/microApps/base/components/Footer/FooterColumn.tsx","webpack:///./src/microApps/base/components/Footer/FooterColumns.tsx","webpack:///./src/microApps/base/components/Footer/FooterContact.tsx","webpack:///./src/microApps/base/components/Footer/FooterLogos.tsx","webpack:///./src/microApps/base/components/Footer/FooterMobile.tsx","webpack:///../../packages/icons/src/logos/youtube.mono.svg","webpack:///../../packages/icons/src/logos/linkedin.mono.svg","webpack:///./src/microApps/base/components/Footer/FooterSocial.tsx","webpack:///./src/microApps/base/components/Footer/BaseFooter.tsx","webpack:///./src/microApps/base/components/Footer/FooterMobileApps.tsx","webpack:///./src/microApps/base/components/Footer/Footer.tsx","webpack:///./src/microApps/base/components/ImpersonationNotice/ImpersonationNotice.tsx","webpack:///./src/microApps/base/components/CommonLayout/CommonLayout.tsx","webpack:///./src/microApps/base/components/Header/EpiQuickNavigatorButton/EpiQuickNavigatorButton.tsx","webpack:///./src/microApps/base/components/Header/EpiQuickNavigatorButton/EpiQuickNavigatorButton.hooks.ts","webpack:///./src/microApps/base/components/GlobalSearch/GlobalSearchBar.tsx","webpack:///./src/microApps/base/components/GlobalSearch/GlobalSearchContext.tsx","webpack:///./src/microApps/base/components/GlobalSearch/GlobalSearchOverlay.tsx","webpack:///./src/microApps/base/components/GlobalSearch/GlobalSearch.tsx","webpack:///./src/microApps/base/components/GlobalSearch/GlobalSearch.utils.ts","webpack:///./src/microApps/base/components/Header/GlobalHeader.tsx","webpack:///./src/microApps/base/components/Header/HeaderBanner.tsx","webpack:///./src/microApps/base/components/Header/FeaturedNavigation.tsx","webpack:///./src/microApps/base/components/Header/HeaderFluidBanner.tsx","webpack:///../../packages/icons/src/stroke2/menu1.svg","webpack:///./src/microApps/base/components/Header/HeaderLeftNav.tsx","webpack:///../../packages/icons/src/stroke2/dotted-circle.svg","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MenuHeaderBonusSystem/MenuHeaderBonusSystem.module.less","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MenuHeaderBonusSystem/MenuHeaderBonusSystem.tsx","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MyCoopProfileMenu.tsx","webpack:///../../packages/icons/src/stroke2/bag2.svg","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MyCoopProfileFlyIn.module.less","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MyCoopProfileFlyIn.tsx","webpack:///../../packages/icons/src/stroke2/overview.svg","webpack:///./src/microApps/base/components/Header/CncTrigger.tsx","webpack:///../../packages/icons/src/stroke2/menu5.svg","webpack:///../../packages/components/src/PopoverDialog/PopoverDialog.tsx","webpack:///../../packages/components/src/PopoverDialog/PopoverDialog.module.scss","webpack:///../../packages/components/src/PopoverLinkList/PopoverLinkList.tsx","webpack:///../../packages/components/src/PopoverLinkList/PopoverLinkList.module.scss","webpack:///./src/microApps/base/components/Header/HeaderProfileDropdown/HeaderProfilePopover.tsx","webpack:///./src/microApps/base/components/Header/HeaderProfileDropdown/HeaderProfilePopover.module.less","webpack:///./src/microApps/base/components/Header/HeaderProfileDropdown/HeaderProfilePopover.utils.ts","webpack:///./src/microApps/base/components/Header/HeaderProfileDropdown/HeaderProfileDropdown.tsx","webpack:///./src/microApps/base/components/Header/HeaderRightNav.tsx","webpack:///../../packages/components/src/TooltipNotification/TooltipNotification.module.scss","webpack:///../../packages/components/src/TooltipNotification/TooltipNotification.tsx","webpack:///./src/microApps/base/components/LoginReminderTooltip/LoginReminderTooltip.tsx","webpack:///./src/microApps/base/components/Header/HeaderStickyBanner.tsx","webpack:///./src/microApps/base/components/Header/Header.hooks.ts","webpack:///./src/microApps/base/components/Header/HeaderSearch.tsx","webpack:///./src/microApps/base/components/HeaderAlerts/HeaderAlerts.types.ts","webpack:///./src/microApps/base/components/HeaderAlerts/HeaderAlerts.utils.ts","webpack:///./src/microApps/base/components/HeaderAlerts/Alert.tsx","webpack:///./src/microApps/base/components/HeaderAlerts/HeaderAlerts.tsx","webpack:///./src/microApps/base/components/HeaderAlerts/HeaderAlertsPortal.tsx","webpack:///./src/microApps/base/components/HeaderIconButton/HeaderIconButton.module.less","webpack:///./src/microApps/base/components/HeaderIconButton/HeaderIconButton.tsx","webpack:///./src/microApps/base/components/USPNotices/USPNotice.tsx","webpack:///./src/microApps/base/components/USPNotices/USPNotices.tsx","webpack:///./src/microApps/base/components/HeaderNotices/HeaderNoticesContainer.tsx","webpack:///./src/microApps/base/components/HeaderNotices/HeaderNoticesPortal.tsx","webpack:///./src/microApps/base/components/MainPageLayout/MainPageLayoutContext.ts","webpack:///./src/microApps/base/components/MainPageLayout/MainPageLayout.tsx","webpack:///./src/microApps/episerver/api/localContentApi.ts","webpack:///./src/microApps/base/components/MyCoopProfileFlyIn/MyCoopProfileFlyIn.hooks.ts","webpack:///./src/microApps/base/components/SearchOverlay/SearchOverlay.tsx","webpack:///./src/microApps/base/components/SearchOverlay/SearchOverlay.module.less","webpack:///./src/microApps/common/utils/programaticFocus.ts","webpack:///./src/microApps/base/components/SkipLink/SkipButton.tsx","webpack:///./src/microApps/base/components/SkipLink/SkipLink.module.scss","webpack:///./src/microApps/base/components/SkipLink/SkipLink.tsx","webpack:///./src/microApps/base/components/SkipLink/SkipLink.hooks.ts","webpack:///./src/microApps/base/components/SkipLink/SkipLinkLayout.tsx","webpack:///./src/microApps/base/components/SkipLink/SkipLinkScoped.tsx","webpack:///./src/microApps/base/components/SkipLink/SkipLinkTarget.tsx","webpack:///./src/microApps/base/components/UserTypeModeSwitch/UserTypeModeSwitch.module.less","webpack:///./src/microApps/base/components/UserTypeModeSwitch/UserTypeModeSwitch.tsx","webpack:///./src/microApps/base/models/SearchFromPageType.ts","webpack:///./src/microApps/cart/components/atoms/CartSummaryAccessibilityLogger.tsx","webpack:///./src/microApps/common/exceptions/exceptionDefinitions.ts","webpack:///./src/microApps/cart/components/molecules/CartErrorNotice.tsx","webpack:///./src/microApps/cart/components/molecules/ProductListingItem/ProductListingItem.tsx","webpack:///./src/microApps/cart/components/molecules/RecipeProductListingItem/RecipeProductListingItem.tsx","webpack:///./src/microApps/cart/selectors/cartItemsSelectors.ts","webpack:///./src/microApps/cart/selectors/cartRecipeSelectors.ts","webpack:///./src/microApps/cnc/hooks/tracking/useCncNavigationTracking.ts","webpack:///./src/microApps/common/api/SyncronQueue.ts","webpack:///./src/microApps/common/api/auth/getAuthToken.ts","webpack:///./src/microApps/common/api/cart/validateCartErrorInterceptor.ts","webpack:///./src/microApps/common/api/cart/cartApi.ts","webpack:///./src/microApps/common/api/headerKeys.ts","webpack:///./src/microApps/common/api/clients/localApiAxiosErrorInterceptors.ts","webpack:///./src/microApps/common/api/clients/clientFactory.ts","webpack:///./src/microApps/common/api/clients/directAdobeCampaignAxiosClient.ts","webpack:///./src/microApps/common/api/clients/directHybrisAxiosClient.ts","webpack:///./src/microApps/common/api/clients/hybrisAxiosClient.ts","webpack:///./src/microApps/common/api/clients/localApiAxiosClient.ts","webpack:///./src/microApps/common/api/order/orderErrorInterceptors.ts","webpack:///./src/microApps/common/api/order/orderApi.ts","webpack:///./src/microApps/common/api/products/productApi.ts","webpack:///./src/microApps/common/api/products/directDynamicYieldProductClient.ts","webpack:///./src/microApps/common/api/products/directArticleServiceClient.ts","webpack:///./src/microApps/common/api/recipe/directRecipeAxiosClient.ts","webpack:///./src/microApps/common/api/recipe/recipeApi.ts","webpack:///./src/microApps/common/api/recipe/utils.ts","webpack:///./src/microApps/common/api/savedCarts/savedCartsApi.ts","webpack:///./src/microApps/common/api/store/storeApi.ts","webpack:///./src/microApps/common/api/timeslots/timeslotsApi.ts","webpack:///./src/microApps/common/api/user/userApi.ts","webpack:///./src/microApps/common/api/userProfile/userProfileApi.ts","webpack:///./src/microApps/common/api/utils.ts","webpack:///./src/microApps/common/components/A11yAnnouncer/DelayedA11yAnnouncer.tsx","webpack:///./src/microApps/common/components/A11yAnnouncer/TemporaryA11yAnnouncer.tsx","webpack:///./src/microApps/common/components/AddToCartButton/AddToCartA11yAnnouncer.tsx","webpack:///./src/microApps/common/components/AddToCartButton/AddToCartButton.tsx","webpack:///./src/microApps/common/components/B2BCrossContextNotifications/B2BCrossContextNotifications.tsx","webpack:///./src/microApps/common/components/BaseRecipeTeaser/BaseRecipeTeaser.tsx","webpack:///./src/microApps/common/components/BaseRecipeTeaser/BaseRecipeTeaserSkeleton.tsx","webpack:///./src/microApps/common/components/ButtonEpiLink/ButtonEpiLink.tsx","webpack:///./src/microApps/common/components/DynamicYieldBlock/DynamicYieldBlock.tsx","webpack:///./src/microApps/common/components/DynamicYieldBlock/DynamicYieldBuyableProductTeaser.tsx","webpack:///./src/microApps/common/components/DynamicYieldBlock/DynamicYieldFavoriteRecipeTeaser.tsx","webpack:///./src/microApps/common/components/FoodboxTeaser/FoodboxTeaser.tsx","webpack:///./src/microApps/common/components/Heading/Heading.module.less","webpack:///./src/microApps/common/components/Heading/Heading.tsx","webpack:///./src/microApps/common/components/ListBlock/ListBlock.utils.ts","webpack:///./src/microApps/common/components/ListBlock/ListBlock.hooks.ts","webpack:///./src/microApps/common/hooks/useInViewWithPrerender.ts","webpack:///./src/microApps/ecommerce/components/ItemGrid/ItemGridWithLoading.tsx","webpack:///./src/microApps/common/components/ListBlock/ListBlock.tsx","webpack:///./src/microApps/common/hooks/useGaListPositionCalculation.ts","webpack:///./src/microApps/common/components/ListBlock/ListBlockHeader.tsx","webpack:///./src/microApps/common/components/QuantityStepper/QuantityStepper.tsx","webpack:///./src/microApps/common/components/RecipeTeaser/RecipeTeaser.tsx","webpack:///./src/microApps/common/components/RecipeTeaser/RecipeTeaser.module.less","webpack:///./src/microApps/common/components/RecipeTypeComponentPicker/RecipeTypeComponentPicker.tsx","webpack:///./src/microApps/common/components/SwipableList/SwipableList.tsx","webpack:///./src/microApps/common/hooks/useA11yAnnouncerDispatch.ts","webpack:///./src/microApps/common/components/atoms/CloudinaryImage.tsx","webpack:///./src/microApps/common/components/atoms/ConditionalWrapper.tsx","webpack:///./src/microApps/common/components/atoms/DynamicHeroMedia/DynamicHeroMedia.tsx","webpack:///./src/microApps/common/components/atoms/FlyInNavigation.tsx","webpack:///./src/microApps/common/components/atoms/Image.tsx","webpack:///./src/microApps/common/components/atoms/MedicalInfo/MedicalInfo.module.less","webpack:///./src/microApps/common/components/atoms/MedicalInfo/MedicalInfo.tsx","webpack:///./src/microApps/common/components/atoms/FlyInOverlayLoader.tsx","webpack:///./src/microApps/common/components/atoms/Modal.tsx","webpack:///./src/microApps/common/components/atoms/NoticeRibbon/NoticeRibbon.types.ts","webpack:///./src/microApps/common/components/atoms/NoticeRibbon/NoticeRibbon.tsx","webpack:///./src/microApps/common/components/atoms/NumericStepper/NumericStepper.hooks.ts","webpack:///./src/microApps/common/components/atoms/NumericStepper/NumericStepper.module.scss","webpack:///./src/microApps/common/components/atoms/NumericStepper/NumericStepperAddButton.tsx","webpack:///./src/microApps/common/components/atoms/NumericStepper/NumericStepperSubtractButton.tsx","webpack:///./src/microApps/common/components/atoms/NumericStepper/UncontrolledNumericStepper.tsx","webpack:///./src/microApps/common/components/atoms/PageHead/PageHead.tsx","webpack:///./src/microApps/common/components/atoms/Portal.tsx","webpack:///./src/microApps/common/components/atoms/ProductBadge/ProductBadge.tsx","webpack:///./src/microApps/common/components/atoms/ProductBadge/ProductBadge.module.less","webpack:///./src/microApps/common/components/atoms/ExcludingTaxInfo/ExcludingTaxInfo.tsx","webpack:///./src/microApps/common/components/atoms/ProductPrice/ProductPrice.module.less","webpack:///./src/microApps/common/components/atoms/ProductPrice/ProductPrice.tsx","webpack:///./src/microApps/common/components/atoms/RawHtml/RawHtml.tsx","webpack:///./src/microApps/common/components/atoms/RawPicture/RawPicture.tsx","webpack:///./src/microApps/common/components/atoms/RawPicture/RawPicture.module.less","webpack:///./src/microApps/common/components/atoms/ResponsiveBreakpoints.tsx","webpack:///../../packages/icons/src/colored/splash-background.color.svg","webpack:///./src/microApps/common/components/atoms/Splash/Splash.tsx","webpack:///./src/microApps/common/components/atoms/Splash/Splash.module.less","webpack:///./src/microApps/common/components/atoms/StickyBottom/StickyBottom.tsx","webpack:///./src/microApps/common/components/atoms/SubstituteTrigger.tsx","webpack:///./src/microApps/common/components/atoms/Tooltip.tsx","webpack:///./src/microApps/common/components/atoms/VariantSelector.tsx","webpack:///./src/microApps/common/components/molecules/BuyableProductTeaser/BuyableProductTeaser.tsx","webpack:///./src/microApps/common/components/molecules/BuyableProductTeaser/BuyableProductTeaserSkeleton.tsx","webpack:///./src/microApps/common/components/molecules/ComponentPortals.tsx","webpack:///../../packages/icons/src/stroke2/bag-add1.svg","webpack:///./src/microApps/common/components/molecules/EcomProductTeaser/AddedToCartTeaserNotification.tsx","webpack:///./src/microApps/common/components/molecules/EcomProductTeaser/EcomProductTeaserInfo.tsx","webpack:///./src/microApps/common/components/molecules/EcomProductTeaser/EcomProductTeaserInfo.module.less","webpack:///./src/microApps/common/components/molecules/EcomProductTeaser/EcomProductTeaser.tsx","webpack:///./src/microApps/common/components/molecules/EcomProductTeaser/EcomProductTeaserSkeleton.tsx","webpack:///./src/microApps/common/components/atoms/PromoSplash/PromoSplash.tsx","webpack:///./src/microApps/common/components/atoms/PromoSplash/PromoSplash.utils.ts","webpack:///./src/microApps/common/components/molecules/EcomPromoSplash/EcomPromoSplash.utils.ts","webpack:///./src/microApps/common/components/molecules/EcomPromoSplash/EcomPromoSplash.tsx","webpack:///./src/microApps/common/components/molecules/EmphasizedButton/EmphasizedButton.tsx","webpack:///./src/microApps/common/components/molecules/EmphasizedButton/EmphasizedButton.module.less","webpack:///./src/microApps/common/components/molecules/FavoriteRecipeToggle.tsx","webpack:///./src/microApps/common/components/molecules/GroupErrorNotifications/ErrorGroupNotification.tsx","webpack:///./src/microApps/common/components/molecules/ProductSubstitutes.tsx","webpack:///./src/microApps/common/components/molecules/ProductTeaser/ProductTeaser.consts.ts","webpack:///./src/microApps/common/components/molecules/ProductTeaser/ProductTeaser.module.less","webpack:///./src/microApps/common/components/molecules/ProductTeaser/ProductTeaser.tsx","webpack:///./src/microApps/common/components/molecules/RatingStars/RatingStars.tsx","webpack:///./src/microApps/common/components/molecules/RatingStars/RatingStars.module.less","webpack:///./src/microApps/cart/components/molecules/RecipeProductListingItem/RecipeProductListingItem.utils.ts","webpack:///./src/microApps/cart/components/molecules/RecipePortionCounter/RecipePortionCounter.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalFooter.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalHeader.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalAccordion.module.less","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalAccordion.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalProductsFooter.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalProducts.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalRecept.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModal/RecipeModalBody.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModalTrigger/BuyableRecipeModalBody.tsx","webpack:///./src/microApps/common/components/molecules/BuyableRecipeButton/BuyableRecipeButton.tsx","webpack:///./src/microApps/common/components/molecules/BuyableRecipeButton/BuyableRecipeButton.hooks.ts","webpack:///./src/microApps/common/components/molecules/RecipeModalTrigger/RecipeButtonWithModal.tsx","webpack:///./src/microApps/common/components/molecules/RecipeModalTrigger/RecipeModalTrigger.hooks.ts","webpack:///./src/microApps/common/components/molecules/RecipeModalTrigger/RecipeModalTrigger.tsx","webpack:///./src/microApps/common/components/molecules/TabSwitcher/TabSwitcher.hooks.ts","webpack:///./src/microApps/common/components/molecules/TabSwitcher/TabSwitcher.tsx","webpack:///./src/microApps/common/components/molecules/TabSwitcher/StatefulTabSwitcher.tsx","webpack:///./src/microApps/common/components/organisms/BaseImageTextBlock/BaseImageTextBlock.tsx","webpack:///./src/microApps/common/components/organisms/BaseImageTextBlock/BaseImageTextBlock.module.less","webpack:///./src/microApps/common/components/organisms/ImageTextPropertyBlock/ImageTextPropertyBlock.module.scss","webpack:///./src/microApps/common/components/organisms/ImageTextPropertyBlock/ImageTextPropertyBlock.tsx","webpack:///./src/microApps/common/components/organisms/MissingItemBody/MissingItemInfo.tsx","webpack:///./src/microApps/common/components/organisms/MissingItemBody/MissingItemBody.tsx","webpack:///./src/microApps/common/components/organisms/PurchasableItemBody/PurchasableItemBody.tsx","webpack:///./src/microApps/common/components/organisms/RecommendationsBlock.tsx","webpack:///./src/microApps/common/components/organisms/SingleImageTextBlock/SingleImageTextBlock.tsx","webpack:///./src/microApps/common/contexts/flyInContext.tsx","webpack:///./src/microApps/common/contexts/microAppContext.tsx","webpack:///./src/microApps/common/contexts/siteContext.tsx","webpack:///./src/microApps/common/exceptions/exceptionUtils.ts","webpack:///./src/microApps/common/models/hybris/hybrisConstants.ts","webpack:///./src/microApps/common/api/cart/directCartApi.ts","webpack:///./src/microApps/common/flow/cart/mapCartResponses.ts","webpack:///./src/microApps/common/flow/cart/currentCartFlow.ts","webpack:///./src/microApps/common/api/store/directStoreApi.ts","webpack:///./src/microApps/myCoop/emailSubscriptions/api/consentSubscriptionsApi.ts","webpack:///./src/microApps/common/flow/consentAdobeSubscriptionFlow.ts","webpack:///./src/microApps/common/flow/dynamicYield/dynamicYieldFlow.ts","webpack:///./src/microApps/common/flow/product/mapProductResponse.ts","webpack:///./src/microApps/common/api/clients/directKimProxyAxiosClient.ts","webpack:///./src/microApps/common/api/finance/consentErrorInterceptor.ts","webpack:///./src/microApps/common/flow/kimProxyFlow.ts","webpack:///./src/microApps/common/api/finance/kimProxyApi.ts","webpack:///./src/microApps/common/api/clients/directLoyaltyAxiosClient.ts","webpack:///./src/microApps/common/api/loyalty/externalLoyaltyApi.ts","webpack:///./src/microApps/common/flow/loyaltyFlow.ts","webpack:///./src/microApps/common/models/domain/order.ts","webpack:///./src/microApps/common/api/order/mapOrder.ts","webpack:///./src/microApps/common/flow/orderFlow.ts","webpack:///./src/utility/resourceProvider.ts","webpack:///./src/microApps/common/api/products/directProductApi.ts","webpack:///./src/microApps/common/flow/product/directProductProvider.ts","webpack:///./src/microApps/common/flow/product/mapProduct.ts","webpack:///./src/microApps/common/flow/product/productFlow.ts","webpack:///./src/microApps/tracking/api/trackingApi.ts","webpack:///./src/microApps/common/flow/trackingFlow.ts","webpack:///./src/microApps/common/api/user/userAddressApi.ts","webpack:///./src/microApps/common/flow/userFlow.ts","webpack:///./src/microApps/common/hooks/AsyncDispatcherError.ts","webpack:///./src/microApps/common/hooks/tracking/useBuyableItemGATracking.ts","webpack:///./src/microApps/common/hooks/useA11yLogInConsole.ts","webpack:///./src/microApps/common/hooks/useEventCallback.ts","webpack:///./src/microApps/common/hooks/useAsyncAbortableDispatcher.ts","webpack:///./src/microApps/common/hooks/useAsyncDispatcher.ts","webpack:///./src/microApps/common/hooks/useBadges.ts","webpack:///./src/microApps/common/hooks/useBuyableProductEventsTracking.ts","webpack:///./src/microApps/common/hooks/useBuyableProductState.ts","webpack:///./src/microApps/common/hooks/useCncFlyInState.ts","webpack:///./src/microApps/common/hooks/useConstant.ts","webpack:///./src/microApps/common/hooks/useCurrentPriceType.ts","webpack:///./src/microApps/common/hooks/useCurrentStoreSync.tsx","webpack:///./src/microApps/common/hooks/useDocumentHeadIsPreparedForReactHelmet.ts","webpack:///./src/microApps/common/hooks/useDocumentPropertyHeightSetter.ts","webpack:///./src/microApps/common/persistance/cookie/favouriteRecipesAnonymous.ts","webpack:///./src/microApps/common/hooks/useFavouriteRecipes.ts","webpack:///./src/microApps/common/hooks/useFlyInNavigationInterceptor.ts","webpack:///./src/microApps/common/selectors/errorsSelectors.ts","webpack:///./src/microApps/common/hooks/useGroupError.ts","webpack:///./src/microApps/common/hooks/useHtmlScriptParser.ts","webpack:///./src/microApps/common/hooks/useModal.ts","webpack:///./src/microApps/common/hooks/useModalLoader.ts","webpack:///./src/microApps/common/hooks/useRecipeEventsTracking.ts","webpack:///./src/microApps/common/hooks/useRequestEffects.ts","webpack:///./src/microApps/common/hooks/useSwiperOverflowClasses.ts","webpack:///./src/microApps/common/hooks/useThunkDispatch.ts","webpack:///./src/microApps/common/hooks/useUserProfile.ts","webpack:///./src/microApps/common/hooks/useUserType.ts","webpack:///../../node_modules/@tanstack/query-core/build/modern/queryCache.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/queryClient.js","webpack:///./src/microApps/common/init/coopQueryClient.ts","webpack:///./src/microApps/common/store/listenerMiddleware/middlewares/updateCartRecipeGaTrackingMiddleware.ts","webpack:///./src/microApps/common/store/listenerMiddleware/index.ts","webpack:///./src/microApps/common/store/listenerMiddleware/middlewares/unsyncedAddToCartGaTrackingMiddleware.ts","webpack:///./src/microApps/common/store/listenerMiddleware/middlewares/currentPageMiddleware.ts","webpack:///./src/microApps/common/store/listenerMiddleware/middlewares/updateCartItemGaTrackingMiddleware.ts","webpack:///./src/microApps/common/store/slices/ui/uiSlice.ts","webpack:///./src/microApps/common/store/slices/user/punchoutUserInfoSlice.ts","webpack:///./src/microApps/common/store/slices/user/userProfileSlice.ts","webpack:///./src/microApps/common/store/slices/user/userSlice.ts","webpack:///./src/microApps/common/store/rootReducer.ts","webpack:///./src/microApps/common/store/index.ts","webpack:///./src/utility/window.utils.ts","webpack:///../../node_modules/@tanstack/react-query-devtools/build/modern/index.js","webpack:///./src/microApps/common/components/atoms/ErrorBoundry.tsx","webpack:///./src/microApps/common/components/CoopDevTools/index.ts","webpack:///./src/microApps/common/components/molecules/GroupErrorNotifications/CriticalErrorNotification.tsx","webpack:///./src/microApps/common/components/molecules/GroupErrorNotifications/GlobalErrorNotification.tsx","webpack:///./src/microApps/common/init/CurrentPageAnnouncer.tsx","webpack:///./src/microApps/common/init/ReactAppWrapper.tsx","webpack:///./src/microApps/common/init/RouteChangeFocusManagement.tsx","webpack:///./src/microApps/common/init/mountableReactComponents.ts","webpack:///./src/microApps/common/init/reactMounting.ts","webpack:///./src/microApps/common/init/renderMicroApp.utils.ts","webpack:///./src/microApps/common/init/renderMicroApp.ts","webpack:///./src/microApps/common/models/domain/ecommerce/promotion/promotionMappers.ts","webpack:///./src/microApps/common/models/priceData/priceData.ts","webpack:///./src/microApps/common/models/product/productDomainModels.ts","webpack:///./src/microApps/common/persistance/cookie/cookieKeys.ts","webpack:///./src/microApps/common/persistance/localStorage/abTestStorage.ts","webpack:///./src/microApps/common/persistance/cookie/alertsDismissed.ts","webpack:///./src/microApps/common/persistance/cookie/dynamicYield.ts","webpack:///./src/microApps/common/persistance/cookie/recipeRatings.ts","webpack:///./src/microApps/common/persistance/cookie/storeContext.ts","webpack:///./src/microApps/common/persistance/localStorage/ecommerceSections.ts","webpack:///./src/microApps/common/persistance/localStorage/priceTypeStorage.ts","webpack:///./src/facades/storage/sessionStorageFacade.ts","webpack:///./src/microApps/common/persistance/sessionStorage/consentShownSession.ts","webpack:///./src/microApps/common/persistance/sessionStorage/coopDevToolsSession.ts","webpack:///./src/microApps/common/persistance/sessionStorage/customerGroupsSession.ts","webpack:///./src/microApps/common/persistance/persistance.ts","webpack:///./src/microApps/common/selectors/cartSelectors.ts","webpack:///./src/microApps/common/selectors/currentPageSelectors.ts","webpack:///./src/microApps/common/selectors/debugSelectors.ts","webpack:///./src/microApps/common/selectors/modalSelectors.ts","webpack:///./src/microApps/common/selectors/storeSelectors.ts","webpack:///./src/microApps/common/selectors/uiSelectors.ts","webpack:///./src/microApps/common/selectors/unsyncedCartItemsSelectors.ts","webpack:///./src/microApps/common/selectors/userProfileSelectors.ts","webpack:///./src/microApps/common/store/adapters/productsAdapter.ts","webpack:///./src/microApps/common/store/adapters/recipesAdapter.ts","webpack:///./src/microApps/common/store/adapters/userAddressAdapter.ts","webpack:///./src/microApps/common/store/slices/cart/cartActions.ts","webpack:///./src/microApps/common/store/slices/cart/cartApiStateSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartEditOrderSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartItemsSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartRecipesSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartEditedOrderItemsSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartItemsProductDataSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartPreviousOrderItemIdsSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartPromosSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartSectionsSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartSummarySlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartSlice.ts","webpack:///./src/microApps/common/store/slices/cart/cartTimeslotSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/checkoutActions.ts","webpack:///./src/microApps/common/store/slices/checkout/messageToDriverSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/checkoutSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/paymentSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/punchoutSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/selectedDeliveryAddressSlice.ts","webpack:///./src/microApps/common/store/slices/checkout/selectedInvoiceAddress.ts","webpack:///./src/microApps/common/store/slices/checkout/subscriptionSlice.ts","webpack:///./src/microApps/common/store/slices/currentPage/currentPageSlice.ts","webpack:///./src/microApps/common/store/slices/errors/errorsSlice.ts","webpack:///./src/microApps/common/store/slices/featureFlags/featureFlagsSlice.ts","webpack:///./src/microApps/common/store/slices/modal/modalActions.ts","webpack:///./src/microApps/common/store/slices/modal/modalSlice.ts","webpack:///./src/microApps/common/store/slices/store/storeActions.ts","webpack:///./src/microApps/common/store/slices/store/storeSlice.ts","webpack:///./src/microApps/common/store/slices/ui/cncUiSlice.ts","webpack:///./src/microApps/common/store/slices/ui/debugSlice.ts","webpack:///./src/microApps/common/store/slices/ui/sharedUiSlice.ts","webpack:///./src/microApps/common/store/slices/ui/uiActions.ts","webpack:///./src/microApps/common/store/slices/unsyncedCartItemsSlice.ts","webpack:///./src/microApps/common/store/slices/user/municipalUserInfoSlice.ts","webpack:///./src/microApps/common/store/slices/user/userAddressesSlice.ts","webpack:///./src/microApps/common/store/slices/user/userInfoSlice.ts","webpack:///./src/microApps/common/store/slices/user/userTypeSlice.ts","webpack:///./src/microApps/common/store/structureDefinitions/errorsState.ts","webpack:///./src/microApps/common/store/structureDefinitions/modalState.ts","webpack:///./src/microApps/common/store/structureDefinitions/storeState.ts","webpack:///./src/microApps/common/store/structureDefinitions/uiState.ts","webpack:///./src/microApps/common/store/structureDefinitions/userState.ts","webpack:///./src/microApps/common/thunks/cartThunks.ts","webpack:///./src/facades/ecommerce/cart/normalizeCartToReduxState.ts","webpack:///./src/microApps/common/thunks/storeThunks.ts","webpack:///./src/microApps/common/tracking/common/interactionClickEvents.ts","webpack:///./src/microApps/common/tracking/commonEvents.ts","webpack:///./src/microApps/common/tracking/contextAware/personalizationEvents.ts","webpack:///./src/microApps/common/tracking/contextAware/timeslotEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/currentProductOffers.ts","webpack:///./src/microApps/common/tracking/ga4/b2b/ga4B2BEvents.ts","webpack:///./src/microApps/common/tracking/ga4/bonus/ga4BonusEvents.ts","webpack:///./src/microApps/common/tracking/ga4/cart/ga4CartEvents.ts","webpack:///./src/microApps/common/tracking/ga4/emailSubscription/ga4EmailSubscriptionEvents.ts","webpack:///./src/microApps/common/tracking/ga4/items/ga4Items.utils.ts","webpack:///./src/microApps/common/tracking/ga4/items/ga4Items.consts.ts","webpack:///./src/microApps/common/tracking/ga4/items/ga4ItemsEvents.ts","webpack:///./src/microApps/common/tracking/ga4/misc/ga4MiscEvents.ts","webpack:///./src/microApps/common/tracking/ga4/navigation/ga4NavigationEvents.ts","webpack:///./src/microApps/common/tracking/ga4/promotion/ga4Promotion.utils.ts","webpack:///./src/microApps/common/tracking/ga4/promotion/ga4PromotionEvents.ts","webpack:///./src/microApps/common/tracking/ga4/recipes/ga4RecipesEvents.ts","webpack:///./src/microApps/common/tracking/ga4/search/ga4SearchEvents.ts","webpack:///./src/microApps/common/tracking/ga4/shared/ga4SharedMappers.ts","webpack:///./src/microApps/common/tracking/ga4/shared/sendGa4Event.ts","webpack:///./src/microApps/common/tracking/ga4/shoppingList/ga4ShoppingListEvents.ts","webpack:///./src/microApps/common/tracking/ga4/user/ga4UserEvents.ts","webpack:///./src/microApps/common/tracking/gaEventCreators.ts","webpack:///./src/microApps/common/tracking/hooks/usePromotionTracking.ts","webpack:///./src/microApps/common/tracking/hooks/useSearchOverlayGA4Tracking.ts","webpack:///./src/microApps/common/tracking/recipe/RecipeFilterPageTrackingContextProvider.tsx","webpack:///./src/microApps/common/tracking/abtest/abTestEvent.ts","webpack:///./src/microApps/common/tracking/checkout/homeDeliveryEvents.ts","webpack:///./src/microApps/common/tracking/checkout/itemReplaceEvents.ts","webpack:///./src/microApps/common/tracking/checkout/storeDeliveryEvents.ts","webpack:///./src/microApps/common/tracking/checkout/subscriptionEvents.ts","webpack:///./src/microApps/common/tracking/checkout/checkoutEvents.ts","webpack:///./src/microApps/common/tracking/checkout/editOrderEvents.ts","webpack:///./src/microApps/common/tracking/cnc/utils.ts","webpack:///./src/microApps/common/tracking/cnc/deliveryOptionEvents.ts","webpack:///./src/microApps/common/tracking/cnc/headerEvents.ts","webpack:///./src/microApps/common/tracking/cnc/miniCartEvents.ts","webpack:///./src/microApps/common/tracking/cnc/notificationEvents.ts","webpack:///./src/microApps/common/tracking/cnc/selectPostalCodeEvents.ts","webpack:///./src/microApps/common/tracking/cnc/cncEvents.ts","webpack:///./src/microApps/common/tracking/common/commonEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/dynamicYield/dynamicYield.ts","webpack:///./src/microApps/common/tracking/ecommerce/recipes.ts","webpack:///./src/microApps/common/tracking/ecommerce/ecommerceEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/sustainability.ts","webpack:///./src/microApps/common/tracking/ecommerce/filter.ts","webpack:///./src/microApps/common/tracking/header/loginReminderEvents.ts","webpack:///./src/microApps/common/tracking/header/headerEvents.ts","webpack:///./src/microApps/common/tracking/myCoop/matkonto/index.ts","webpack:///./src/microApps/common/tracking/myCoop/myPoints/index.ts","webpack:///./src/microApps/common/tracking/myCoop/myProfile/index.ts","webpack:///./src/microApps/common/tracking/myCoop/index.ts","webpack:///./src/microApps/common/tracking/orderReclamation/orderReclamationEvents.ts","webpack:///./src/microApps/common/tracking/recipe/recipeEvents.ts","webpack:///./src/microApps/common/tracking/search/searchEvents.ts","webpack:///./src/microApps/common/tracking/tracking.ts","webpack:///./src/microApps/common/tracking/utils.ts","webpack:///./src/microApps/common/tracking/utils/createBatcher.ts","webpack:///./src/microApps/common/tracking/utils/failSilently.ts","webpack:///./src/microApps/common/tracking/utils/sendSplittedData.ts","webpack:///./src/microApps/common/tracking/virtualPageView.ts","webpack:///./src/microApps/common/utils/accessibilityUtils.ts","webpack:///./src/microApps/common/utils/b2bUtils.ts","webpack:///./src/microApps/common/utils/cloudinaryImageUtils.ts","webpack:///./src/microApps/common/utils/customerGroupsUtils.ts","webpack:///./src/microApps/common/utils/metaUtils.ts","webpack:///./src/microApps/common/utils/neoIdUtils.ts","webpack:///./src/microApps/common/utils/numberUtils.ts","webpack:///./src/microApps/common/utils/orderUtils.ts","webpack:///./src/microApps/common/utils/productUtils.ts","webpack:///./src/microApps/common/utils/recipeUtils.ts","webpack:///./src/microApps/common/utils/sanitizeUtils.ts","webpack:///./src/microApps/common/utils/stringUtils.ts","webpack:///./src/microApps/common/utils/urlUtils.ts","webpack:///./src/microApps/consent/components/hooks/useSubscribeConsent.ts","webpack:///./src/microApps/ecommerce/components/EcommerceLayout/EcommerceSearch.tsx","webpack:///./src/microApps/ecommerce/components/EcommerceSearchBar/EcommerceSearchBar.utils.ts","webpack:///./src/microApps/ecommerce/components/EcommerceSearchBar/EcommerceSearchOverlay.tsx","webpack:///./src/microApps/ecommerce/components/EcommerceSearchBar/SearchAutocompleteAbTestContext.tsx","webpack:///./src/microApps/ecommerce/components/EcommerceSearchBar/EcommerceSearchBar.tsx","webpack:///./src/microApps/ecommerce/components/ItemGrid/ItemGrid.tsx","webpack:///./src/microApps/ecommerce/components/MaxPromotionUsage/MaxPromotionUsageNotification.tsx","webpack:///./src/microApps/ecommerce/components/MaxPromotionUsage/MaxPromotionUsage.module.scss","webpack:///./src/microApps/ecommerce/components/MaxPromotionUsage/MaxPromotionUsage.tsx","webpack:///./src/microApps/ecommerce/contexts/ecommerceProductSearchStateContext.tsx","webpack:///./src/microApps/ecommerce/contexts/useRouterContext.tsx","webpack:///./src/utility/abTests.ts","webpack:///./src/microApps/ecommerce/hooks/useAbTests.ts","webpack:///./src/microApps/ecommerce/hooks/useBreakpoints.ts","webpack:///./src/microApps/ecommerce/hooks/useDynamicYieldRecommendations.ts","webpack:///./src/microApps/common/flow/dynamicYield/dynamicYield.utils.ts","webpack:///./src/microApps/ecommerce/hooks/useDynamicYieldTracking.ts","webpack:///./src/microApps/ecommerce/hooks/useProductTeaserContainer.ts","webpack:///./src/microApps/ecommerce/hooks/usePunchoutOrgUnit.ts","webpack:///./src/microApps/ecommerce/hooks/useReactRouting.ts","webpack:///./src/microApps/ecommerce/utils/recommendationUtils.ts","webpack:///./src/microApps/ecommerce/utils/urlEcommerceUtils.ts","webpack:///./src/microApps/episerver/api/contentApiClient.ts","webpack:///./src/microApps/episerver/api/contentDeliveryApi.ts","webpack:///./src/microApps/episerver/epiComponentLoader.ts","webpack:///./src/microApps/episerver/components/base/EpiComponentLoader.tsx","webpack:///./src/microApps/episerver/components/base/EpiContentArea.tsx","webpack:///./src/microApps/episerver/components/base/EpiEmptyComponent.tsx","webpack:///./src/microApps/episerver/components/blocks/EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.utils.ts","webpack:///./src/microApps/episerver/components/blocks/EpiButtonPropertyBlock/EpiButtonPropertyBlock.utils.ts","webpack:///./src/microApps/episerver/components/blocks/EpiImagePropertyBlock/epiImagePropertyBlock.utils.ts","webpack:///./src/microApps/episerver/components/blocks/EpiRecipeAdBlock/EpiRecipeAdBlockType.utils.ts","webpack:///./src/microApps/episerver/components/hooks/useCurrentEpiPage.ts","webpack:///./src/microApps/episerver/epiQueryKeys.ts","webpack:///./src/microApps/episerver/epiUtils.ts","webpack:///./src/microApps/member/consts.ts","webpack:///./src/microApps/member/hooks/useKimCustomerDataQuery.ts","webpack:///./src/microApps/member/member.utils.ts","webpack:///./src/microApps/member/memberQueries.ts","webpack:///./src/microApps/member/pointshop/hooks/useEligibleForBonus.ts","webpack:///./src/microApps/member/pointshop/hooks/useHouseholdPointBalance.ts","webpack:///./src/microApps/member/pointshop/pointsQueryKeys.ts","webpack:///./src/microApps/myCoop/components/BonusInfoConfirm/BonusInfoConfirm.tsx","webpack:///./src/microApps/myCoop/components/BonusInfoConfirm/BonusInfoConfirm.module.scss","webpack:///./src/microApps/myCoop/consentSubscriptions/hooks/useConsentQuery.ts","webpack:///./src/microApps/myCoop/emailSubscriptions/hooks/useEmailSubscriptionQuery.ts","webpack:///./src/microApps/myCoop/hooks/useMyCoopSettingsPageQuery.ts","webpack:///./src/microApps/myCoop/myCoopQueries.ts","webpack:///./src/microApps/myCoop/myCoopShared/contexts/NotificationContext.tsx","webpack:///./src/microApps/myCoop/profileMenu/ProfileMenuList/ProfileMenuList.module.scss","webpack:///./src/microApps/myCoop/profileMenu/ProfileMenuList/ProfileMenuList.utils.ts","webpack:///./src/microApps/myCoop/profileMenu/ProfileMenuList/ProfileMenuList.tsx","webpack:///./src/microApps/recipe/components/CommonRecipesTooltip/CommonRecipesTooltip.tsx","webpack:///./src/microApps/recipe/components/SharedRecipesTooltip/SharedRecipesTooltip.tsx","webpack:///./src/microApps/recipe/components/SharedBetweenRecipesTooltip/SharedBetweenRecipesTooltip.tsx","webpack:///./src/microApps/common/api/clients/directGastrofyAxiosClient.ts","webpack:///./src/microApps/recipe/flow/recipeFlow.ts","webpack:///./src/microApps/common/api/recipe/distributionAdApi.ts","webpack:///./src/microApps/common/api/gastrofy/gastrofyApi.ts","webpack:///./src/microApps/common/tracking/ga4/recipes/ga4Recipes.utils.ts","webpack:///./src/microApps/recipe/hooks/useRecipeCart.ts","webpack:///./src/microApps/recipe/hooks/useSubstitute.ts","webpack:///./src/microApps/recipe/models.ts","webpack:///./src/microApps/recipe/components/RecipeDistributionAd/RecipeBannerAd.tsx","webpack:///./src/microApps/recipe/components/RecipeDistributionAd/RecipeBannerAd.module.less","webpack:///./src/microApps/recipe/components/RecipeDistributionAd/RecipeDistributionAd.tsx","webpack:///./src/microApps/recipe/components/RecipeDistributionAd/hooks/useDistributionAdQuery.ts","webpack:///./src/microApps/recipe/pages/RecipeItemPage/DynamicYieldSimiliarRecipes.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemComments.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemHeroImage.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemIngredients.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemInstructions.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemPage.hooks.ts","webpack:///../../packages/icons/src/stroke2/add-list.svg","webpack:///../../packages/icons/src/stroke2/print.svg","webpack:///../../packages/icons/src/logos/pinterest.mono.svg","webpack:///./src/microApps/shoppingList/components/recipe/AddRecipeToShoppingListNotifications.tsx.tsx","webpack:///./src/microApps/shoppingList/components/recipe/AddRecipeToShoppingListModal.tsx","webpack:///./src/microApps/shoppingList/hooks/useAddRecipeToShoppingList.ts","webpack:///./src/microApps/shoppingList/components/recipe/AddRecipeToShoppingListButton.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemSocialMedia.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemTips.tsx","webpack:///./src/microApps/recipe/components/RecipeItemFavoriteToggle/RecipeItemFavoriteToggle.tsx","webpack:///./src/microApps/recipe/components/recipeRating/RecipeRatingStars.tsx","webpack:///./src/microApps/recipe/components/recipeRating/RecipeRatingStewIcon.tsx","webpack:///./src/microApps/recipe/components/recipeRating/RecipeRatingInteractiveModal.tsx","webpack:///./src/microApps/recipe/components/recipeRating/RecipeRatingLoginConfirmModal.tsx","webpack:///./src/microApps/recipe/components/recipeRating/RecipeRatingButton.tsx","webpack:///./src/microApps/recipe/hooks/useRecipeRating.ts","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemTitleAndDescription.tsx","webpack:///../../node_modules/date-fns/esm/formatISODuration/index.js","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeJsonLdSchema.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeNotAvailableInStore.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeNotAvailableInStore.module.scss","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeSlotPicker.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeStoreSelectionTrigger.tsx","webpack:///./src/microApps/recipe/pages/RecipeItemPage/RecipeItemPage.tsx","webpack:///./src/microApps/recipe/recipeItemApp.tsx","webpack:///./src/microApps/recipe/recipeQueries.ts","webpack:///./src/microApps/recipe/utils.ts","webpack:///./src/microApps/search/api/directPersonalizationAxiosClient.ts","webpack:///./src/microApps/search/contexts/searchStateContext.ts","webpack:///./src/microApps/common/hooks/useSearchDropdownState.ts","webpack:///./src/microApps/search/flow/mapSearchResponse.ts","webpack:///./src/microApps/search/api/searchApi.ts","webpack:///./src/microApps/search/flow/mapSearchRequest.ts","webpack:///./src/microApps/search/flow/searchFlow.ts","webpack:///./src/microApps/search/hooks/useGlobalSearchState.ts","webpack:///./src/microApps/search/hooks/useProductSearchStateContext.ts","webpack:///./src/microApps/search/models/SearchResultType.ts","webpack:///./src/microApps/search/models/models.ts","webpack:///./src/microApps/search/utils/globalSearchRoutes.ts","webpack:///./src/microApps/search/utils/searchResultUtils.ts","webpack:///./src/microApps/shoppingList/api/directShoppingListAxiosClient.ts","webpack:///./src/microApps/shoppingList/api/shoppingListApi.ts","webpack:///./src/microApps/shoppingList/base/AddToShoppingListModal.tsx","webpack:///./src/microApps/shoppingList/utils.ts","webpack:///./src/models/ecommerce/product/productSectionModel.ts","webpack:///./src/utility/browser.ts","webpack:///./src/utility/cloudinary.ts","webpack:///./src/utility/consts.ts","webpack:///./src/utility/cookies.ts","webpack:///./src/utility/coopSwiperBreakpoints.ts","webpack:///./src/utility/coopSwiperBreakpointsUnique.ts","webpack:///./src/utility/dynamicYield.ts","webpack:///./src/utility/environments.ts","webpack:///./src/utility/gdpr.ts","webpack:///./src/utility/helpers.ts","webpack:///./src/utility/logging.ts","webpack:///./src/utility/window.abtest.utils.ts","webpack:///../../packages/components/src/Accordion/Accordion.module.scss","webpack:///../../packages/components/src/Accordion/Accordion.tsx","webpack:///../../packages/components/src/Badge/AnimatedBadge.tsx","webpack:///../../packages/components/src/Badge/Badge.tsx","webpack:///../../packages/components/src/Badge/Badge.utils.ts","webpack:///../../packages/components/src/Badge/BadgePositioning.tsx","webpack:///../../packages/components/src/Button/Button.module.scss","webpack:///../../packages/components/src/Button/Button.utils.ts","webpack:///../../packages/components/src/Button/Button.tsx","webpack:///../../packages/components/src/Button/IconButton.tsx","webpack:///../../packages/components/src/Checkbox/Checkbox.tsx","webpack:///../../packages/components/src/Checkbox/Checkbox.module.scss","webpack:///../../packages/components/src/Chip/Chip.module.scss","webpack:///../../packages/components/src/Chip/Chip.tsx","webpack:///../../packages/components/src/Chip/Chip.utils.ts","webpack:///../../packages/components/src/Chip/ChipButton.tsx","webpack:///../../packages/components/src/Chip/ChipIconButton.tsx","webpack:///../../packages/components/src/Confirm/BaseConfirm.tsx","webpack:///../../packages/components/src/Confirm/Confirm.module.scss","webpack:///../../packages/components/src/Confirm/Confirm.tsx","webpack:///../../packages/components/src/Confirm/ConfirmAlert.tsx","webpack:///../../packages/components/src/Confirm/ConfirmInfo.tsx","webpack:///../../packages/components/src/Icon/AccessibleIcon.tsx","webpack:///../../packages/components/src/Icon/Icon.utils.ts","webpack:///../../packages/components/src/Icon/Icon.module.scss","webpack:///../../packages/components/src/Icon/Icon.tsx","webpack:///../../packages/components/src/ListBox/ListBox.module.scss","webpack:///../../packages/components/src/ListBox/ListBox.tsx","webpack:///../../packages/components/src/Loader/Loader.hooks.ts","webpack:///../../packages/components/src/Loader/Loader.module.scss","webpack:///../../packages/components/src/Loader/Loader.utils.ts","webpack:///../../packages/components/src/Loader/Loader.tsx","webpack:///../../packages/components/src/Modal/Modal.hooks.ts","webpack:///../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","webpack:///../../node_modules/use-sidecar/dist/es2015/medium.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/medium.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/UI.js","webpack:///../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack:///../../node_modules/use-callback-ref/dist/es2015/useRef.js","webpack:///../../node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack:///../../node_modules/use-sidecar/dist/es2015/exports.js","webpack:///../../node_modules/react-style-singleton/dist/es2015/singleton.js","webpack:///../../node_modules/get-nonce/dist/es2015/index.js","webpack:///../../node_modules/react-style-singleton/dist/es2015/component.js","webpack:///../../node_modules/react-style-singleton/dist/es2015/hook.js","webpack:///../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","webpack:///../../node_modules/react-remove-scroll-bar/dist/es2015/component.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/sidecar.js","webpack:///../../packages/components/node_modules/react-remove-scroll/dist/es2015/Combination.js","webpack:///../../packages/components/node_modules/uuid/dist/esm-browser/native.js","webpack:///../../packages/components/node_modules/uuid/dist/esm-browser/rng.js","webpack:///../../packages/components/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///../../packages/components/node_modules/uuid/dist/esm-browser/v4.js","webpack:///../../packages/components/src/Modal/Modal.tsx","webpack:///../../packages/components/src/Modal/ModalContext.tsx","webpack:///../../packages/components/src/Modal/ModalHeader.tsx","webpack:///../../packages/components/src/Notification/Notification.module.scss","webpack:///../../packages/components/src/Notification/NotificationContent.tsx","webpack:///../../packages/components/src/Notification/AutoClosingNotification.tsx","webpack:///../../packages/components/src/Notification/NotificationWrapper.tsx","webpack:///../../packages/components/src/Notification/PermanentNotification.tsx","webpack:///../../packages/components/src/Notification/Notification.tsx","webpack:///../../packages/components/src/OverlayLoader/OverlayLoader.module.scss","webpack:///../../packages/components/src/OverlayLoader/OverlayLoader.tsx","webpack:///../../packages/components/src/PacmanLoader/PacmanLoader.module.scss","webpack:///../../packages/components/src/PacmanLoader/PacmanLoader.tsx","webpack:///../../packages/components/src/RadioGroup/RadioGroup.tsx","webpack:///../../packages/components/src/RadioGroup/RadioGroup.module.scss","webpack:///../../packages/components/src/Search/Search.tsx","webpack:///../../packages/components/src/Search/SearchActions.tsx","webpack:///../../packages/components/src/Search/SearchContent.tsx","webpack:///../../packages/components/src/Search/SearchInputSlot.tsx","webpack:///../../packages/components/src/Search/Search.utils.ts","webpack:///../../packages/components/src/Search/SearchRoot.tsx","webpack:///../../packages/components/src/SearchAutocomplete/Popover.tsx","webpack:///../../packages/components/src/SearchAutocomplete/SearchAutocomplete.module.scss","webpack:///../../packages/components/src/SearchAutocomplete/SearchAutocomplete.tsx","webpack:///../../packages/components/src/SearchAutocomplete/SearchAutocomplete.hooks.ts","webpack:///../../packages/hooks/src/useResizeObserver.ts","webpack:///../../packages/components/src/SearchAutocomplete/SearchAutocomplete.utils.ts","webpack:///../../packages/components/src/Select/Select.tsx","webpack:///../../packages/components/src/Select/Select.module.scss","webpack:///../../packages/components/src/Snackbar/Snackbar.module.scss","webpack:///../../packages/components/src/Snackbar/Snackbar.tsx","webpack:///../../packages/components/src/TextArea/TextArea.tsx","webpack:///../../packages/components/src/TextField/TextField.module.scss","webpack:///../../packages/components/src/TextField/TextField.tsx","webpack:///../../packages/components/src/TextInput/TextInput.tsx","webpack:///../../packages/hooks/src/useElementEvent.ts","webpack:///../../packages/hooks/src/useInitialFocus.ts","webpack:///../../packages/hooks/src/useOutsideClick.ts","webpack:///../../packages/hooks/src/useSetTimeout.ts","webpack:///../../packages/utils/src/splitCustomObjectFromIntersection.ts","webpack:///../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack:///../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack:///../../node_modules/use-sync-external-store/shim/index.js","webpack:///../../node_modules/use-sync-external-store/shim/with-selector.js","webpack:///../../node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///../../node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/typeof.js","webpack:///../../node_modules/classnames/index.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/platform/browser/index.js","webpack:///./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///./node_modules/axios/lib/platform/common/utils.js","webpack:///./node_modules/axios/lib/platform/index.js","webpack:///./node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/AxiosHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/progressEventReducer.js","webpack:///./node_modules/axios/lib/helpers/speedometer.js","webpack:///./node_modules/axios/lib/helpers/throttle.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/helpers/resolveConfig.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/helpers/composeSignals.js","webpack:///./node_modules/axios/lib/helpers/trackStream.js","webpack:///./node_modules/axios/lib/adapters/fetch.js","webpack:///./node_modules/axios/lib/adapters/adapters.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/dompurify/dist/purify.es.mjs","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///./node_modules/swiper/modules/navigation.mjs","webpack:///./node_modules/swiper/shared/classes-to-selector.mjs","webpack:///./node_modules/swiper/modules/pagination.mjs","webpack:///./node_modules/swiper/modules/scrollbar.mjs","webpack:///./node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///./node_modules/swiper/shared/utils.mjs","webpack:///./node_modules/swiper/shared/swiper-core.mjs","webpack:///./node_modules/swiper/shared/update-swiper.mjs","webpack:///./node_modules/swiper/swiper-react.mjs","webpack:///./node_modules/swiper/shared/update-on-virtual-data.mjs","webpack:///../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../../node_modules/@radix-ui/primitive/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-accessible-icon/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-collapsible/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-accordion/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-checkbox/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-collection/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-context/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-direction/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-id/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-presence/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-primitive/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-radio-group/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-slot/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","webpack:///../../node_modules/@radix-ui/react-use-size/dist/index.mjs","webpack:///../../node_modules/@react-aria/button/dist/useButton.mjs","webpack:///../../node_modules/@react-aria/collections/dist/BaseCollection.mjs","webpack:///../../node_modules/@react-aria/collections/dist/Document.mjs","webpack:///../../node_modules/@react-aria/collections/dist/CollectionBuilder.mjs","webpack:///../../node_modules/@react-aria/collections/dist/Hidden.mjs","webpack:///../../node_modules/@react-aria/collections/dist/useCachedChildren.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/ar-AE.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/intlStrings.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/bg-BG.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/cs-CZ.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/da-DK.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/de-DE.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/el-GR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/en-US.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/es-ES.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/et-EE.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/fi-FI.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/fr-FR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/he-IL.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/hr-HR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/hu-HU.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/it-IT.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/ja-JP.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/ko-KR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/lt-LT.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/lv-LV.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/nb-NO.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/nl-NL.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/pl-PL.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/pt-BR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/pt-PT.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/ro-RO.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/ru-RU.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/sk-SK.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/sl-SI.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/sr-SP.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/sv-SE.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/tr-TR.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/uk-UA.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/zh-CN.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/zh-TW.mjs","webpack:///../../node_modules/@react-aria/combobox/dist/useComboBox.mjs","webpack:///../../node_modules/@react-aria/focus/dist/isElementVisible.mjs","webpack:///../../node_modules/@react-aria/focus/dist/FocusScope.mjs","webpack:///../../node_modules/@react-aria/focus/dist/focusSafely.mjs","webpack:///../../node_modules/@react-aria/focus/dist/useFocusRing.mjs","webpack:///../../node_modules/@react-aria/focus/dist/useFocusable.mjs","webpack:///../../node_modules/@react-aria/form/dist/useFormValidation.mjs","webpack:///../../node_modules/@react-aria/i18n/dist/utils.mjs","webpack:///../../node_modules/@react-aria/i18n/dist/useDefaultLocale.mjs","webpack:///../../node_modules/@react-aria/i18n/dist/context.mjs","webpack:///../../node_modules/@react-aria/i18n/dist/useCollator.mjs","webpack:///../../node_modules/@internationalized/string/dist/LocalizedStringDictionary.mjs","webpack:///../../node_modules/@internationalized/string/dist/LocalizedStringFormatter.mjs","webpack:///../../node_modules/@react-aria/i18n/dist/useLocalizedStringFormatter.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/PressResponder.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/context.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/textSelection.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useFocus.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useHover.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/createEventHandler.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useKeyboard.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useDescription.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useLongPress.mjs","webpack:///../../node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js","webpack:///../../node_modules/@swc/helpers/esm/_class_private_field_set.js","webpack:///../../node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js","webpack:///../../node_modules/@react-aria/interactions/dist/usePress.mjs","webpack:///../../node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js","webpack:///../../node_modules/@swc/helpers/esm/_class_private_field_get.js","webpack:///../../node_modules/@swc/helpers/esm/_class_private_field_init.js","webpack:///../../node_modules/@swc/helpers/esm/_check_private_redeclaration.js","webpack:///../../node_modules/@react-aria/interactions/dist/utils.mjs","webpack:///../../node_modules/@react-aria/label/dist/useField.mjs","webpack:///../../node_modules/@react-aria/label/dist/useLabel.mjs","webpack:///../../node_modules/@react-aria/listbox/dist/useListBox.mjs","webpack:///../../node_modules/@react-aria/selection/dist/useSelectableList.mjs","webpack:///../../node_modules/@react-aria/selection/dist/useSelectableItem.mjs","webpack:///../../node_modules/@react-aria/listbox/dist/useOption.mjs","webpack:///../../node_modules/@react-aria/listbox/dist/utils.mjs","webpack:///../../node_modules/@react-aria/live-announcer/dist/LiveAnnouncer.mjs","webpack:///../../node_modules/@react-aria/menu/dist/ar-AE.mjs","webpack:///../../node_modules/@react-aria/menu/dist/intlStrings.mjs","webpack:///../../node_modules/@react-aria/menu/dist/bg-BG.mjs","webpack:///../../node_modules/@react-aria/menu/dist/cs-CZ.mjs","webpack:///../../node_modules/@react-aria/menu/dist/da-DK.mjs","webpack:///../../node_modules/@react-aria/menu/dist/de-DE.mjs","webpack:///../../node_modules/@react-aria/menu/dist/el-GR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/en-US.mjs","webpack:///../../node_modules/@react-aria/menu/dist/es-ES.mjs","webpack:///../../node_modules/@react-aria/menu/dist/et-EE.mjs","webpack:///../../node_modules/@react-aria/menu/dist/fi-FI.mjs","webpack:///../../node_modules/@react-aria/menu/dist/fr-FR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/he-IL.mjs","webpack:///../../node_modules/@react-aria/menu/dist/hr-HR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/hu-HU.mjs","webpack:///../../node_modules/@react-aria/menu/dist/it-IT.mjs","webpack:///../../node_modules/@react-aria/menu/dist/ja-JP.mjs","webpack:///../../node_modules/@react-aria/menu/dist/ko-KR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/lt-LT.mjs","webpack:///../../node_modules/@react-aria/menu/dist/lv-LV.mjs","webpack:///../../node_modules/@react-aria/menu/dist/nb-NO.mjs","webpack:///../../node_modules/@react-aria/menu/dist/nl-NL.mjs","webpack:///../../node_modules/@react-aria/menu/dist/pl-PL.mjs","webpack:///../../node_modules/@react-aria/menu/dist/pt-BR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/pt-PT.mjs","webpack:///../../node_modules/@react-aria/menu/dist/ro-RO.mjs","webpack:///../../node_modules/@react-aria/menu/dist/ru-RU.mjs","webpack:///../../node_modules/@react-aria/menu/dist/sk-SK.mjs","webpack:///../../node_modules/@react-aria/menu/dist/sl-SI.mjs","webpack:///../../node_modules/@react-aria/menu/dist/sr-SP.mjs","webpack:///../../node_modules/@react-aria/menu/dist/sv-SE.mjs","webpack:///../../node_modules/@react-aria/menu/dist/tr-TR.mjs","webpack:///../../node_modules/@react-aria/menu/dist/uk-UA.mjs","webpack:///../../node_modules/@react-aria/menu/dist/zh-CN.mjs","webpack:///../../node_modules/@react-aria/menu/dist/zh-TW.mjs","webpack:///../../node_modules/@react-aria/menu/dist/useMenuTrigger.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/PortalProvider.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/Overlay.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ariaHideOutside.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/useCloseOnScroll.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/useOverlayTrigger.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/calculatePosition.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/useOverlayPosition.mjs","webpack:///../../node_modules/@react-aria/interactions/dist/useInteractOutside.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/useOverlay.mjs","webpack:///../../node_modules/@react-aria/utils/dist/getScrollParent.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/usePreventScroll.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/usePopover.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/ar-AE.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/intlStrings.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/bg-BG.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/cs-CZ.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/da-DK.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/de-DE.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/el-GR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/en-US.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/es-ES.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/et-EE.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/fi-FI.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/fr-FR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/he-IL.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/hr-HR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/hu-HU.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/it-IT.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/ja-JP.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/ko-KR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/lt-LT.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/lv-LV.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/nb-NO.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/nl-NL.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/pl-PL.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/pt-BR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/pt-PT.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/ro-RO.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/ru-RU.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/sk-SK.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/sl-SI.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/sr-SP.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/sv-SE.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/tr-TR.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/uk-UA.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/zh-CN.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/zh-TW.mjs","webpack:///../../node_modules/@react-aria/searchfield/dist/useSearchField.mjs","webpack:///../../node_modules/@react-aria/selection/dist/DOMLayoutDelegate.mjs","webpack:///../../node_modules/@react-aria/selection/dist/ListKeyboardDelegate.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useEvent.mjs","webpack:///../../node_modules/@react-aria/utils/dist/scrollIntoView.mjs","webpack:///../../node_modules/@react-aria/utils/dist/getScrollParents.mjs","webpack:///../../node_modules/@react-aria/selection/dist/useSelectableCollection.mjs","webpack:///../../node_modules/@react-aria/selection/dist/useTypeSelect.mjs","webpack:///../../node_modules/@react-aria/selection/dist/utils.mjs","webpack:///../../node_modules/@react-aria/ssr/dist/SSRProvider.mjs","webpack:///../../node_modules/@react-aria/textfield/dist/useTextField.mjs","webpack:///../../node_modules/@react-aria/utils/dist/chain.mjs","webpack:///../../node_modules/@react-aria/utils/dist/domHelpers.mjs","webpack:///../../node_modules/@react-aria/utils/dist/filterDOMProps.mjs","webpack:///../../node_modules/@react-aria/utils/dist/focusWithoutScrolling.mjs","webpack:///../../node_modules/@react-aria/utils/dist/isScrollable.mjs","webpack:///../../node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","webpack:///../../node_modules/clsx/dist/clsx.mjs","webpack:///../../node_modules/@react-aria/utils/dist/mergeProps.mjs","webpack:///../../node_modules/@react-aria/utils/dist/openLink.mjs","webpack:///../../node_modules/@react-aria/utils/dist/platform.mjs","webpack:///../../node_modules/@react-aria/utils/dist/runAfterTransition.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useEffectEvent.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useFormReset.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useGlobalListeners.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useId.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useValueEffect.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useLabels.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useObjectRef.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useResizeObserver.mjs","webpack:///../../node_modules/@react-aria/utils/dist/useSyncRef.mjs","webpack:///../../node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.mjs","webpack:///../../node_modules/@react-stately/collections/dist/Item.mjs","webpack:///../../node_modules/@react-stately/collections/dist/getChildNodes.mjs","webpack:///../../node_modules/@react-stately/collections/dist/getItemCount.mjs","webpack:///../../node_modules/@react-stately/combobox/dist/useComboBoxState.mjs","webpack:///../../node_modules/@react-stately/form/dist/useFormValidationState.mjs","webpack:///../../node_modules/@react-stately/list/dist/ListCollection.mjs","webpack:///../../node_modules/@react-stately/selection/dist/useMultipleSelectionState.mjs","webpack:///../../node_modules/@react-stately/collections/dist/CollectionBuilder.mjs","webpack:///../../node_modules/@react-stately/list/dist/useListState.mjs","webpack:///../../node_modules/@react-stately/collections/dist/useCollection.mjs","webpack:///../../node_modules/@react-stately/list/dist/useSingleSelectListState.mjs","webpack:///../../node_modules/@react-stately/overlays/dist/useOverlayTriggerState.mjs","webpack:///../../node_modules/@react-stately/selection/dist/Selection.mjs","webpack:///../../node_modules/@react-stately/selection/dist/SelectionManager.mjs","webpack:///../../node_modules/@react-stately/utils/dist/number.mjs","webpack:///../../node_modules/@react-stately/utils/dist/useControlledState.mjs","webpack:///../../node_modules/@tanstack/query-core/build/modern/focusManager.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/mutation.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/query.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/removable.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/retryer.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/subscribable.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/utils.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/useMutation.js","webpack:///../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/isRestoring.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/suspense.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/useQuery.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","webpack:///../../node_modules/@tanstack/react-query/build/modern/utils.js","webpack:///../../node_modules/immer/dist/immer.esm.mjs","webpack:///../../node_modules/lodash-es/isArray.js","webpack:///../../node_modules/lodash-es/_isMasked.js","webpack:///../../node_modules/lodash-es/_freeGlobal.js","webpack:///../../node_modules/lodash-es/_root.js","webpack:///../../node_modules/lodash-es/_Symbol.js","webpack:///../../node_modules/lodash-es/_getRawTag.js","webpack:///../../node_modules/lodash-es/_objectToString.js","webpack:///../../node_modules/lodash-es/_baseGetTag.js","webpack:///../../node_modules/lodash-es/isObjectLike.js","webpack:///../../node_modules/lodash-es/isSymbol.js","webpack:///../../node_modules/lodash-es/_isKey.js","webpack:///../../node_modules/lodash-es/isObject.js","webpack:///../../node_modules/lodash-es/_coreJsData.js","webpack:///../../node_modules/lodash-es/_toSource.js","webpack:///../../node_modules/lodash-es/_baseIsNative.js","webpack:///../../node_modules/lodash-es/isFunction.js","webpack:///../../node_modules/lodash-es/_getNative.js","webpack:///../../node_modules/lodash-es/_getValue.js","webpack:///../../node_modules/lodash-es/_nativeCreate.js","webpack:///../../node_modules/lodash-es/_hashGet.js","webpack:///../../node_modules/lodash-es/_hashHas.js","webpack:///../../node_modules/lodash-es/_Hash.js","webpack:///../../node_modules/lodash-es/_hashClear.js","webpack:///../../node_modules/lodash-es/_hashDelete.js","webpack:///../../node_modules/lodash-es/_hashSet.js","webpack:///../../node_modules/lodash-es/eq.js","webpack:///../../node_modules/lodash-es/_assocIndexOf.js","webpack:///../../node_modules/lodash-es/_listCacheDelete.js","webpack:///../../node_modules/lodash-es/_ListCache.js","webpack:///../../node_modules/lodash-es/_listCacheClear.js","webpack:///../../node_modules/lodash-es/_listCacheGet.js","webpack:///../../node_modules/lodash-es/_listCacheHas.js","webpack:///../../node_modules/lodash-es/_listCacheSet.js","webpack:///../../node_modules/lodash-es/_Map.js","webpack:///../../node_modules/lodash-es/_getMapData.js","webpack:///../../node_modules/lodash-es/_isKeyable.js","webpack:///../../node_modules/lodash-es/_MapCache.js","webpack:///../../node_modules/lodash-es/_mapCacheClear.js","webpack:///../../node_modules/lodash-es/_mapCacheDelete.js","webpack:///../../node_modules/lodash-es/_mapCacheGet.js","webpack:///../../node_modules/lodash-es/_mapCacheHas.js","webpack:///../../node_modules/lodash-es/_mapCacheSet.js","webpack:///../../node_modules/lodash-es/memoize.js","webpack:///../../node_modules/lodash-es/_memoizeCapped.js","webpack:///../../node_modules/lodash-es/_shortOut.js","webpack:///../../node_modules/lodash-es/_stringToPath.js","webpack:///../../node_modules/lodash-es/_baseToString.js","webpack:///../../node_modules/lodash-es/_arrayMap.js","webpack:///../../node_modules/lodash-es/_castPath.js","webpack:///../../node_modules/lodash-es/toString.js","webpack:///../../node_modules/lodash-es/_toKey.js","webpack:///../../node_modules/lodash-es/_baseGet.js","webpack:///../../node_modules/lodash-es/_defineProperty.js","webpack:///../../node_modules/lodash-es/_assignValue.js","webpack:///../../node_modules/lodash-es/_baseAssignValue.js","webpack:///../../node_modules/lodash-es/_isIndex.js","webpack:///../../node_modules/lodash-es/_baseSet.js","webpack:///../../node_modules/lodash-es/_baseHasIn.js","webpack:///../../node_modules/lodash-es/_baseIsArguments.js","webpack:///../../node_modules/lodash-es/isArguments.js","webpack:///../../node_modules/lodash-es/hasIn.js","webpack:///../../node_modules/lodash-es/_hasPath.js","webpack:///../../node_modules/lodash-es/isLength.js","webpack:///../../node_modules/lodash-es/_basePick.js","webpack:///../../node_modules/lodash-es/_basePickBy.js","webpack:///../../node_modules/lodash-es/_arrayPush.js","webpack:///../../node_modules/lodash-es/_isFlattenable.js","webpack:///../../node_modules/lodash-es/_baseFlatten.js","webpack:///../../node_modules/lodash-es/flatten.js","webpack:///../../node_modules/lodash-es/_overRest.js","webpack:///../../node_modules/lodash-es/constant.js","webpack:///../../node_modules/lodash-es/_baseSetToString.js","webpack:///../../node_modules/lodash-es/identity.js","webpack:///../../node_modules/lodash-es/_setToString.js","webpack:///../../node_modules/lodash-es/pick.js","webpack:///../../node_modules/lodash-es/_flatRest.js","webpack:///../../node_modules/lodash-es/_apply.js","webpack:///../../node_modules/react-aria-components/dist/ProgressBar.mjs","webpack:///../../node_modules/react-aria-components/dist/Button.mjs","webpack:///../../node_modules/react-aria-components/dist/ComboBox.mjs","webpack:///../../node_modules/react-aria-components/dist/RSPContexts.mjs","webpack:///../../node_modules/react-aria-components/dist/Menu.mjs","webpack:///../../node_modules/react-aria-components/dist/Dialog.mjs","webpack:///../../node_modules/@react-stately/menu/dist/useMenuTriggerState.mjs","webpack:///../../node_modules/@react-aria/dialog/dist/useDialog.mjs","webpack:///../../node_modules/react-aria-components/dist/FieldError.mjs","webpack:///../../node_modules/react-aria-components/dist/Form.mjs","webpack:///../../node_modules/react-aria-components/dist/Input.mjs","webpack:///../../node_modules/react-aria-components/dist/Label.mjs","webpack:///../../node_modules/react-aria-components/dist/Link.mjs","webpack:///../../node_modules/@react-aria/link/dist/useLink.mjs","webpack:///../../node_modules/react-aria-components/dist/Collection.mjs","webpack:///../../node_modules/react-aria-components/dist/DragAndDrop.mjs","webpack:///../../node_modules/react-aria-components/dist/Header.mjs","webpack:///../../node_modules/react-aria-components/dist/Separator.mjs","webpack:///../../node_modules/react-aria-components/dist/ListBox.mjs","webpack:///../../node_modules/@react-aria/listbox/dist/useListBoxSection.mjs","webpack:///../../node_modules/react-aria-components/dist/OverlayArrow.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/intlStrings.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ar-AE.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/bg-BG.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/cs-CZ.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/da-DK.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/de-DE.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/el-GR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/en-US.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/es-ES.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/et-EE.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/fi-FI.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/fr-FR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/he-IL.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/hr-HR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/hu-HU.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/it-IT.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ja-JP.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ko-KR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/lt-LT.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/lv-LV.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/nb-NO.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/nl-NL.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/pl-PL.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/pt-BR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/pt-PT.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ro-RO.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/ru-RU.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/sk-SK.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/sl-SI.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/sr-SP.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/sv-SE.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/tr-TR.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/uk-UA.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/zh-CN.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/zh-TW.mjs","webpack:///../../node_modules/@react-aria/overlays/dist/DismissButton.mjs","webpack:///../../node_modules/react-aria-components/dist/Popover.mjs","webpack:///../../node_modules/react-aria-components/dist/intlStrings.mjs","webpack:///../../node_modules/react-aria-components/dist/ar-AE.mjs","webpack:///../../node_modules/react-aria-components/dist/bg-BG.mjs","webpack:///../../node_modules/react-aria-components/dist/cs-CZ.mjs","webpack:///../../node_modules/react-aria-components/dist/da-DK.mjs","webpack:///../../node_modules/react-aria-components/dist/de-DE.mjs","webpack:///../../node_modules/react-aria-components/dist/el-GR.mjs","webpack:///../../node_modules/react-aria-components/dist/en-US.mjs","webpack:///../../node_modules/react-aria-components/dist/es-ES.mjs","webpack:///../../node_modules/react-aria-components/dist/et-EE.mjs","webpack:///../../node_modules/react-aria-components/dist/fi-FI.mjs","webpack:///../../node_modules/react-aria-components/dist/fr-FR.mjs","webpack:///../../node_modules/react-aria-components/dist/he-IL.mjs","webpack:///../../node_modules/react-aria-components/dist/hr-HR.mjs","webpack:///../../node_modules/react-aria-components/dist/hu-HU.mjs","webpack:///../../node_modules/react-aria-components/dist/it-IT.mjs","webpack:///../../node_modules/react-aria-components/dist/ja-JP.mjs","webpack:///../../node_modules/react-aria-components/dist/ko-KR.mjs","webpack:///../../node_modules/react-aria-components/dist/lt-LT.mjs","webpack:///../../node_modules/react-aria-components/dist/lv-LV.mjs","webpack:///../../node_modules/react-aria-components/dist/nb-NO.mjs","webpack:///../../node_modules/react-aria-components/dist/nl-NL.mjs","webpack:///../../node_modules/react-aria-components/dist/pl-PL.mjs","webpack:///../../node_modules/react-aria-components/dist/pt-BR.mjs","webpack:///../../node_modules/react-aria-components/dist/pt-PT.mjs","webpack:///../../node_modules/react-aria-components/dist/ro-RO.mjs","webpack:///../../node_modules/react-aria-components/dist/ru-RU.mjs","webpack:///../../node_modules/react-aria-components/dist/sk-SK.mjs","webpack:///../../node_modules/react-aria-components/dist/sl-SI.mjs","webpack:///../../node_modules/react-aria-components/dist/sr-SP.mjs","webpack:///../../node_modules/react-aria-components/dist/sv-SE.mjs","webpack:///../../node_modules/react-aria-components/dist/tr-TR.mjs","webpack:///../../node_modules/react-aria-components/dist/uk-UA.mjs","webpack:///../../node_modules/react-aria-components/dist/zh-CN.mjs","webpack:///../../node_modules/react-aria-components/dist/zh-TW.mjs","webpack:///../../node_modules/@react-aria/select/dist/useSelect.mjs","webpack:///../../node_modules/@react-aria/select/dist/HiddenSelect.mjs","webpack:///../../node_modules/react-aria-components/dist/Select.mjs","webpack:///../../node_modules/@react-stately/select/dist/useSelectState.mjs","webpack:///../../node_modules/react-aria-components/dist/Text.mjs","webpack:///../../node_modules/react-aria-components/dist/TextArea.mjs","webpack:///../../node_modules/react-aria-components/dist/TextField.mjs","webpack:///../../node_modules/react-aria-components/dist/utils.mjs","webpack:///../../node_modules/@react-aria/utils/dist/mergeRefs.mjs","webpack:///../../node_modules/react-hook-form/dist/index.esm.mjs","webpack:///../../node_modules/react-intersection-observer/react-intersection-observer.modern.mjs","webpack:///../../node_modules/tslib/tslib.es6.mjs","webpack:///../../node_modules/underscore/modules/_setup.js","webpack:///../../node_modules/underscore/modules/restArguments.js","webpack:///../../node_modules/underscore/modules/isObject.js","webpack:///../../node_modules/underscore/modules/isNull.js","webpack:///../../node_modules/underscore/modules/isUndefined.js","webpack:///../../node_modules/underscore/modules/isBoolean.js","webpack:///../../node_modules/underscore/modules/isElement.js","webpack:///../../node_modules/underscore/modules/_tagTester.js","webpack:///../../node_modules/underscore/modules/isString.js","webpack:///../../node_modules/underscore/modules/isNumber.js","webpack:///../../node_modules/underscore/modules/isDate.js","webpack:///../../node_modules/underscore/modules/isRegExp.js","webpack:///../../node_modules/underscore/modules/isError.js","webpack:///../../node_modules/underscore/modules/isSymbol.js","webpack:///../../node_modules/underscore/modules/isArrayBuffer.js","webpack:///../../node_modules/underscore/modules/isFunction.js","webpack:///../../node_modules/underscore/modules/_hasObjectTag.js","webpack:///../../node_modules/underscore/modules/_stringTagBug.js","webpack:///../../node_modules/underscore/modules/isDataView.js","webpack:///../../node_modules/underscore/modules/isArray.js","webpack:///../../node_modules/underscore/modules/_has.js","webpack:///../../node_modules/underscore/modules/isArguments.js","webpack:///../../node_modules/underscore/modules/isFinite.js","webpack:///../../node_modules/underscore/modules/isNaN.js","webpack:///../../node_modules/underscore/modules/constant.js","webpack:///../../node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///../../node_modules/underscore/modules/_shallowProperty.js","webpack:///../../node_modules/underscore/modules/_getByteLength.js","webpack:///../../node_modules/underscore/modules/_isBufferLike.js","webpack:///../../node_modules/underscore/modules/isTypedArray.js","webpack:///../../node_modules/underscore/modules/_getLength.js","webpack:///../../node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///../../node_modules/underscore/modules/keys.js","webpack:///../../node_modules/underscore/modules/isEmpty.js","webpack:///../../node_modules/underscore/modules/isMatch.js","webpack:///../../node_modules/underscore/modules/underscore.js","webpack:///../../node_modules/underscore/modules/_toBufferView.js","webpack:///../../node_modules/underscore/modules/isEqual.js","webpack:///../../node_modules/underscore/modules/allKeys.js","webpack:///../../node_modules/underscore/modules/_methodFingerprint.js","webpack:///../../node_modules/underscore/modules/isMap.js","webpack:///../../node_modules/underscore/modules/isWeakMap.js","webpack:///../../node_modules/underscore/modules/isSet.js","webpack:///../../node_modules/underscore/modules/isWeakSet.js","webpack:///../../node_modules/underscore/modules/values.js","webpack:///../../node_modules/underscore/modules/pairs.js","webpack:///../../node_modules/underscore/modules/invert.js","webpack:///../../node_modules/underscore/modules/functions.js","webpack:///../../node_modules/underscore/modules/_createAssigner.js","webpack:///../../node_modules/underscore/modules/extend.js","webpack:///../../node_modules/underscore/modules/extendOwn.js","webpack:///../../node_modules/underscore/modules/defaults.js","webpack:///../../node_modules/underscore/modules/_baseCreate.js","webpack:///../../node_modules/underscore/modules/create.js","webpack:///../../node_modules/underscore/modules/clone.js","webpack:///../../node_modules/underscore/modules/tap.js","webpack:///../../node_modules/underscore/modules/toPath.js","webpack:///../../node_modules/underscore/modules/_toPath.js","webpack:///../../node_modules/underscore/modules/_deepGet.js","webpack:///../../node_modules/underscore/modules/get.js","webpack:///../../node_modules/underscore/modules/has.js","webpack:///../../node_modules/underscore/modules/identity.js","webpack:///../../node_modules/underscore/modules/matcher.js","webpack:///../../node_modules/underscore/modules/property.js","webpack:///../../node_modules/underscore/modules/_optimizeCb.js","webpack:///../../node_modules/underscore/modules/_baseIteratee.js","webpack:///../../node_modules/underscore/modules/iteratee.js","webpack:///../../node_modules/underscore/modules/_cb.js","webpack:///../../node_modules/underscore/modules/mapObject.js","webpack:///../../node_modules/underscore/modules/noop.js","webpack:///../../node_modules/underscore/modules/propertyOf.js","webpack:///../../node_modules/underscore/modules/times.js","webpack:///../../node_modules/underscore/modules/random.js","webpack:///../../node_modules/underscore/modules/now.js","webpack:///../../node_modules/underscore/modules/_createEscaper.js","webpack:///../../node_modules/underscore/modules/_escapeMap.js","webpack:///../../node_modules/underscore/modules/escape.js","webpack:///../../node_modules/underscore/modules/unescape.js","webpack:///../../node_modules/underscore/modules/_unescapeMap.js","webpack:///../../node_modules/underscore/modules/templateSettings.js","webpack:///../../node_modules/underscore/modules/template.js","webpack:///../../node_modules/underscore/modules/result.js","webpack:///../../node_modules/underscore/modules/uniqueId.js","webpack:///../../node_modules/underscore/modules/chain.js","webpack:///../../node_modules/underscore/modules/_executeBound.js","webpack:///../../node_modules/underscore/modules/partial.js","webpack:///../../node_modules/underscore/modules/bind.js","webpack:///../../node_modules/underscore/modules/_isArrayLike.js","webpack:///../../node_modules/underscore/modules/_flatten.js","webpack:///../../node_modules/underscore/modules/bindAll.js","webpack:///../../node_modules/underscore/modules/memoize.js","webpack:///../../node_modules/underscore/modules/delay.js","webpack:///../../node_modules/underscore/modules/defer.js","webpack:///../../node_modules/underscore/modules/throttle.js","webpack:///../../node_modules/underscore/modules/debounce.js","webpack:///../../node_modules/underscore/modules/wrap.js","webpack:///../../node_modules/underscore/modules/negate.js","webpack:///../../node_modules/underscore/modules/compose.js","webpack:///../../node_modules/underscore/modules/after.js","webpack:///../../node_modules/underscore/modules/before.js","webpack:///../../node_modules/underscore/modules/once.js","webpack:///../../node_modules/underscore/modules/findKey.js","webpack:///../../node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///../../node_modules/underscore/modules/findIndex.js","webpack:///../../node_modules/underscore/modules/findLastIndex.js","webpack:///../../node_modules/underscore/modules/sortedIndex.js","webpack:///../../node_modules/underscore/modules/_createIndexFinder.js","webpack:///../../node_modules/underscore/modules/indexOf.js","webpack:///../../node_modules/underscore/modules/lastIndexOf.js","webpack:///../../node_modules/underscore/modules/find.js","webpack:///../../node_modules/underscore/modules/findWhere.js","webpack:///../../node_modules/underscore/modules/each.js","webpack:///../../node_modules/underscore/modules/map.js","webpack:///../../node_modules/underscore/modules/_createReduce.js","webpack:///../../node_modules/underscore/modules/reduce.js","webpack:///../../node_modules/underscore/modules/reduceRight.js","webpack:///../../node_modules/underscore/modules/filter.js","webpack:///../../node_modules/underscore/modules/reject.js","webpack:///../../node_modules/underscore/modules/every.js","webpack:///../../node_modules/underscore/modules/some.js","webpack:///../../node_modules/underscore/modules/contains.js","webpack:///../../node_modules/underscore/modules/invoke.js","webpack:///../../node_modules/underscore/modules/pluck.js","webpack:///../../node_modules/underscore/modules/where.js","webpack:///../../node_modules/underscore/modules/max.js","webpack:///../../node_modules/underscore/modules/min.js","webpack:///../../node_modules/underscore/modules/toArray.js","webpack:///../../node_modules/underscore/modules/sample.js","webpack:///../../node_modules/underscore/modules/shuffle.js","webpack:///../../node_modules/underscore/modules/sortBy.js","webpack:///../../node_modules/underscore/modules/_group.js","webpack:///../../node_modules/underscore/modules/groupBy.js","webpack:///../../node_modules/underscore/modules/indexBy.js","webpack:///../../node_modules/underscore/modules/countBy.js","webpack:///../../node_modules/underscore/modules/partition.js","webpack:///../../node_modules/underscore/modules/size.js","webpack:///../../node_modules/underscore/modules/_keyInObj.js","webpack:///../../node_modules/underscore/modules/pick.js","webpack:///../../node_modules/underscore/modules/omit.js","webpack:///../../node_modules/underscore/modules/initial.js","webpack:///../../node_modules/underscore/modules/first.js","webpack:///../../node_modules/underscore/modules/rest.js","webpack:///../../node_modules/underscore/modules/last.js","webpack:///../../node_modules/underscore/modules/compact.js","webpack:///../../node_modules/underscore/modules/flatten.js","webpack:///../../node_modules/underscore/modules/difference.js","webpack:///../../node_modules/underscore/modules/without.js","webpack:///../../node_modules/underscore/modules/uniq.js","webpack:///../../node_modules/underscore/modules/union.js","webpack:///../../node_modules/underscore/modules/intersection.js","webpack:///../../node_modules/underscore/modules/unzip.js","webpack:///../../node_modules/underscore/modules/zip.js","webpack:///../../node_modules/underscore/modules/object.js","webpack:///../../node_modules/underscore/modules/range.js","webpack:///../../node_modules/underscore/modules/chunk.js","webpack:///../../node_modules/underscore/modules/_chainResult.js","webpack:///../../node_modules/underscore/modules/mixin.js","webpack:///../../node_modules/underscore/modules/underscore-array-methods.js","webpack:///../../node_modules/underscore/modules/index-default.js"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","var map = {\n\t\"./EpiAccordionBlock/EpiAccordionBlock\": [\n\t\t37807,\n\t\t9418,\n\t\t1808,\n\t\t224,\n\t\t188\n\t],\n\t\"./EpiAccordionBlock/EpiAccordionBlock.tsx\": [\n\t\t37807,\n\t\t9418,\n\t\t1808,\n\t\t224,\n\t\t188\n\t],\n\t\"./EpiAccordionBlock/EpiAccordionBlock.utils\": [\n\t\t1521,\n\t\t1521\n\t],\n\t\"./EpiAccordionBlock/EpiAccordionBlock.utils.ts\": [\n\t\t1521,\n\t\t1521\n\t],\n\t\"./EpiAccordionBlock/epiAccordionBlockType\": [\n\t\t4258,\n\t\t4258\n\t],\n\t\"./EpiAccordionBlock/epiAccordionBlockType.ts\": [\n\t\t4258,\n\t\t4258\n\t],\n\t\"./EpiApplyCardBlock/EpiApplyCardBlock\": [\n\t\t97494,\n\t\t9418,\n\t\t8843,\n\t\t3202,\n\t\t7494\n\t],\n\t\"./EpiApplyCardBlock/EpiApplyCardBlock.tsx\": [\n\t\t97494,\n\t\t9418,\n\t\t8843,\n\t\t3202,\n\t\t7494\n\t],\n\t\"./EpiApplyCardBlock/epiApplyCardBlockType\": [\n\t\t83746,\n\t\t3746\n\t],\n\t\"./EpiApplyCardBlock/epiApplyCardBlockType.ts\": [\n\t\t83746,\n\t\t3746\n\t],\n\t\"./EpiApplyExtraMMCardBlock/EpiApplyExtraMMCardBlock\": [\n\t\t42900,\n\t\t9418,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t8843,\n\t\t2900,\n\t\t2672\n\t],\n\t\"./EpiApplyExtraMMCardBlock/EpiApplyExtraMMCardBlock.tsx\": [\n\t\t42900,\n\t\t9418,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t8843,\n\t\t2900,\n\t\t2672\n\t],\n\t\"./EpiApplyExtraMMCardBlock/epiApplyExtraMMCardBlockType\": [\n\t\t16490,\n\t\t6490\n\t],\n\t\"./EpiApplyExtraMMCardBlock/epiApplyExtraMMCardBlockType.ts\": [\n\t\t16490,\n\t\t6490\n\t],\n\t\"./EpiAutoCheckBannerBlock/EpiAutoCheckBannerBlock\": [\n\t\t60375,\n\t\t9418,\n\t\t8843,\n\t\t375,\n\t\t5555\n\t],\n\t\"./EpiAutoCheckBannerBlock/EpiAutoCheckBannerBlock.tsx\": [\n\t\t60375,\n\t\t9418,\n\t\t8843,\n\t\t375,\n\t\t5555\n\t],\n\t\"./EpiAutoCheckBannerBlock/epiAutoCheckBannerBlockType\": [\n\t\t3790,\n\t\t3790\n\t],\n\t\"./EpiAutoCheckBannerBlock/epiAutoCheckBannerBlockType.ts\": [\n\t\t3790,\n\t\t3790\n\t],\n\t\"./EpiBankBlock/EpiBankBlock\": [\n\t\t45513,\n\t\t9418,\n\t\t5513,\n\t\t5883\n\t],\n\t\"./EpiBankBlock/EpiBankBlock.tsx\": [\n\t\t45513,\n\t\t9418,\n\t\t5513,\n\t\t5883\n\t],\n\t\"./EpiBankBlock/epiBankBlockType\": [\n\t\t20122,\n\t\t122\n\t],\n\t\"./EpiBankBlock/epiBankBlockType.ts\": [\n\t\t20122,\n\t\t122\n\t],\n\t\"./EpiBannerBaseBlock/epiBannerBaseBlock\": [\n\t\t31596,\n\t\t9215\n\t],\n\t\"./EpiBannerBaseBlock/epiBannerBaseBlock.ts\": [\n\t\t31596,\n\t\t9215\n\t],\n\t\"./EpiBannerBlock/EpiBannerBlock\": [\n\t\t74590,\n\t\t9418,\n\t\t5155,\n\t\t4590,\n\t\t8957\n\t],\n\t\"./EpiBannerBlock/EpiBannerBlock.tsx\": [\n\t\t74590,\n\t\t9418,\n\t\t5155,\n\t\t4590,\n\t\t8957\n\t],\n\t\"./EpiBannerBlock/EpiBannerBlock.utils\": [\n\t\t87491,\n\t\t9418,\n\t\t7491\n\t],\n\t\"./EpiBannerBlock/EpiBannerBlock.utils.tsx\": [\n\t\t87491,\n\t\t9418,\n\t\t7491\n\t],\n\t\"./EpiBannerBlock/epiBannerBlockType\": [\n\t\t72154,\n\t\t2154\n\t],\n\t\"./EpiBannerBlock/epiBannerBlockType.ts\": [\n\t\t72154,\n\t\t2154\n\t],\n\t\"./EpiBecomeAMemberBlock/EpiBecomeAMemberBlock\": [\n\t\t23031,\n\t\t3031\n\t],\n\t\"./EpiBecomeAMemberBlock/EpiBecomeAMemberBlock.tsx\": [\n\t\t23031,\n\t\t3031\n\t],\n\t\"./EpiBecomeAMemberBlock/epiBecomeAMemberBlockType\": [\n\t\t67530,\n\t\t7530\n\t],\n\t\"./EpiBecomeAMemberBlock/epiBecomeAMemberBlockType.ts\": [\n\t\t67530,\n\t\t7530\n\t],\n\t\"./EpiBrandCategoryListingBlock/EpiBrandCategoryListingBlock\": [\n\t\t91514,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t1624,\n\t\t665,\n\t\t1678,\n\t\t1589,\n\t\t3015\n\t],\n\t\"./EpiBrandCategoryListingBlock/EpiBrandCategoryListingBlock.tsx\": [\n\t\t91514,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t1624,\n\t\t665,\n\t\t1678,\n\t\t1589,\n\t\t3015\n\t],\n\t\"./EpiBrandCategoryListingBlock/epiBrandCategoryListingBlockType\": [\n\t\t10800,\n\t\t800\n\t],\n\t\"./EpiBrandCategoryListingBlock/epiBrandCategoryListingBlockType.ts\": [\n\t\t10800,\n\t\t800\n\t],\n\t\"./EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.types\": [\n\t\t50247,\n\t\t247\n\t],\n\t\"./EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.types.ts\": [\n\t\t50247,\n\t\t247\n\t],\n\t\"./EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.utils\": [\n\t\t59699,\n\t\t9699\n\t],\n\t\"./EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.utils.ts\": [\n\t\t59699,\n\t\t9699\n\t],\n\t\"./EpiButtonPropertyBlock/EpiButtonPropertyBlock.types\": [\n\t\t36779,\n\t\t6779\n\t],\n\t\"./EpiButtonPropertyBlock/EpiButtonPropertyBlock.types.ts\": [\n\t\t36779,\n\t\t6779\n\t],\n\t\"./EpiButtonPropertyBlock/EpiButtonPropertyBlock.utils\": [\n\t\t863,\n\t\t863\n\t],\n\t\"./EpiButtonPropertyBlock/EpiButtonPropertyBlock.utils.ts\": [\n\t\t863,\n\t\t863\n\t],\n\t\"./EpiCustomerServiceChatBlock/EpiCustomerServiceChatBlock\": [\n\t\t10603,\n\t\t9418,\n\t\t6270,\n\t\t603,\n\t\t8978\n\t],\n\t\"./EpiCustomerServiceChatBlock/EpiCustomerServiceChatBlock.tsx\": [\n\t\t10603,\n\t\t9418,\n\t\t6270,\n\t\t603,\n\t\t8978\n\t],\n\t\"./EpiCustomerServiceChatBlock/epiCustomerServiceChatBlockType\": [\n\t\t72374,\n\t\t2374\n\t],\n\t\"./EpiCustomerServiceChatBlock/epiCustomerServiceChatBlockType.ts\": [\n\t\t72374,\n\t\t2374\n\t],\n\t\"./EpiCustomerServiceFormBlock/EpiCustomerServiceFormBlock\": [\n\t\t40142,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t9073,\n\t\t824,\n\t\t2647,\n\t\t8663,\n\t\t2056\n\t],\n\t\"./EpiCustomerServiceFormBlock/EpiCustomerServiceFormBlock.tsx\": [\n\t\t40142,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t9073,\n\t\t824,\n\t\t2647,\n\t\t8663,\n\t\t2056\n\t],\n\t\"./EpiCustomerServiceFormBlock/epiCustomerServiceFormBlockType\": [\n\t\t80170,\n\t\t170\n\t],\n\t\"./EpiCustomerServiceFormBlock/epiCustomerServiceFormBlockType.ts\": [\n\t\t80170,\n\t\t170\n\t],\n\t\"./EpiDefaultStoreNoticeBlock/EpiDefaultStoreNoticeBlock\": [\n\t\t27886,\n\t\t4624,\n\t\t7886\n\t],\n\t\"./EpiDefaultStoreNoticeBlock/EpiDefaultStoreNoticeBlock.tsx\": [\n\t\t27886,\n\t\t4624,\n\t\t7886\n\t],\n\t\"./EpiDoubleImageTextBlock/EpiDoubleImageTextBlock\": [\n\t\t48078,\n\t\t9418,\n\t\t5155,\n\t\t8078,\n\t\t3275\n\t],\n\t\"./EpiDoubleImageTextBlock/EpiDoubleImageTextBlock.tsx\": [\n\t\t48078,\n\t\t9418,\n\t\t5155,\n\t\t8078,\n\t\t3275\n\t],\n\t\"./EpiDoubleImageTextBlock/epiDoubleImageTextBlockType\": [\n\t\t91978,\n\t\t1978\n\t],\n\t\"./EpiDoubleImageTextBlock/epiDoubleImageTextBlockType.ts\": [\n\t\t91978,\n\t\t1978\n\t],\n\t\"./EpiDoubleVideoImageTextBlock/EpiDoubleVideoImageTextBlock\": [\n\t\t24481,\n\t\t9418,\n\t\t4481,\n\t\t5761\n\t],\n\t\"./EpiDoubleVideoImageTextBlock/EpiDoubleVideoImageTextBlock.tsx\": [\n\t\t24481,\n\t\t9418,\n\t\t4481,\n\t\t5761\n\t],\n\t\"./EpiDoubleVideoImageTextBlock/epiDoubleVideoImageTextBlockType\": [\n\t\t37938,\n\t\t7938\n\t],\n\t\"./EpiDoubleVideoImageTextBlock/epiDoubleVideoImageTextBlockType.ts\": [\n\t\t37938,\n\t\t7938\n\t],\n\t\"./EpiDownloadAppBlock/EpiDownloadAppBlock\": [\n\t\t36567,\n\t\t5155,\n\t\t6567\n\t],\n\t\"./EpiDownloadAppBlock/EpiDownloadAppBlock.tsx\": [\n\t\t36567,\n\t\t5155,\n\t\t6567\n\t],\n\t\"./EpiDownloadAppBlock/epiDownloadAppBlockType\": [\n\t\t60250,\n\t\t250\n\t],\n\t\"./EpiDownloadAppBlock/epiDownloadAppBlockType.ts\": [\n\t\t60250,\n\t\t250\n\t],\n\t\"./EpiDynamicYieldBlock/EpiDynamicYieldBlock\": [\n\t\t10478,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t1678,\n\t\t5521,\n\t\t7907,\n\t\t7857,\n\t\t7829,\n\t\t7184\n\t],\n\t\"./EpiDynamicYieldBlock/EpiDynamicYieldBlock.tsx\": [\n\t\t10478,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t1678,\n\t\t5521,\n\t\t7907,\n\t\t7857,\n\t\t7829,\n\t\t7184\n\t],\n\t\"./EpiDynamicYieldBlock/EpiDynamicYieldBlock.utils\": [\n\t\t26777,\n\t\t6777\n\t],\n\t\"./EpiDynamicYieldBlock/EpiDynamicYieldBlock.utils.ts\": [\n\t\t26777,\n\t\t6777\n\t],\n\t\"./EpiDynamicYieldBlock/epiDynamicYieldBlockType\": [\n\t\t15818,\n\t\t5818\n\t],\n\t\"./EpiDynamicYieldBlock/epiDynamicYieldBlockType.ts\": [\n\t\t15818,\n\t\t5818\n\t],\n\t\"./EpiFirstBuyPromotionsBlock/EpiFirstBuyPromotionsBlock\": [\n\t\t43264,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t3472,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t9892\n\t],\n\t\"./EpiFirstBuyPromotionsBlock/EpiFirstBuyPromotionsBlock.tsx\": [\n\t\t43264,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t3472,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t9892\n\t],\n\t\"./EpiFirstBuyPromotionsBlock/epiFirstBuyPromotionsBlockType\": [\n\t\t76598,\n\t\t6598\n\t],\n\t\"./EpiFirstBuyPromotionsBlock/epiFirstBuyPromotionsBlockType.ts\": [\n\t\t76598,\n\t\t6598\n\t],\n\t\"./EpiFormContainerBlock/EpiFormContainerBlock\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./EpiFormContainerBlock/EpiFormContainerBlock.tsx\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./EpiFormContainerBlock/epiFormContainerBlockType\": [\n\t\t25434,\n\t\t5434\n\t],\n\t\"./EpiFormContainerBlock/epiFormContainerBlockType.ts\": [\n\t\t25434,\n\t\t5434\n\t],\n\t\"./EpiFullWidthBlockContainer/EpiFullWidthBlockContainer\": [\n\t\t36437,\n\t\t6437,\n\t\t8849\n\t],\n\t\"./EpiFullWidthBlockContainer/EpiFullWidthBlockContainer.tsx\": [\n\t\t36437,\n\t\t6437,\n\t\t8849\n\t],\n\t\"./EpiFullWidthBlockContainer/EpiFullWidthBlockContainer.utils\": [\n\t\t39193,\n\t\t9193\n\t],\n\t\"./EpiFullWidthBlockContainer/EpiFullWidthBlockContainer.utils.ts\": [\n\t\t39193,\n\t\t9193\n\t],\n\t\"./EpiFullWidthBlockContainer/epiFullWidthBlockContainerType\": [\n\t\t34538,\n\t\t4538\n\t],\n\t\"./EpiFullWidthBlockContainer/epiFullWidthBlockContainerType.ts\": [\n\t\t34538,\n\t\t4538\n\t],\n\t\"./EpiGaPromoDataPropertyBlock/EpiGaPromoDataPropertyBlock.types\": [\n\t\t65069,\n\t\t5069\n\t],\n\t\"./EpiGaPromoDataPropertyBlock/EpiGaPromoDataPropertyBlock.types.ts\": [\n\t\t65069,\n\t\t5069\n\t],\n\t\"./EpiHeadingPropertyBlock/EpiHeadingPropertyBlock\": [\n\t\t68898,\n\t\t8898\n\t],\n\t\"./EpiHeadingPropertyBlock/EpiHeadingPropertyBlock.tsx\": [\n\t\t68898,\n\t\t8898\n\t],\n\t\"./EpiHeadingPropertyBlock/EpiHeadingPropertyBlock.utils\": [\n\t\t41781,\n\t\t1781\n\t],\n\t\"./EpiHeadingPropertyBlock/EpiHeadingPropertyBlock.utils.ts\": [\n\t\t41781,\n\t\t1781\n\t],\n\t\"./EpiHeadingPropertyBlock/epiHeadingPropertyBlockType\": [\n\t\t14406,\n\t\t4406\n\t],\n\t\"./EpiHeadingPropertyBlock/epiHeadingPropertyBlockType.ts\": [\n\t\t14406,\n\t\t4406\n\t],\n\t\"./EpiImagePropertyBlock/epiImagePropertyBlock.utils\": [\n\t\t11761,\n\t\t1761\n\t],\n\t\"./EpiImagePropertyBlock/epiImagePropertyBlock.utils.ts\": [\n\t\t11761,\n\t\t1761\n\t],\n\t\"./EpiImagePropertyBlock/epiImagePropertyBlockType\": [\n\t\t73186,\n\t\t3186\n\t],\n\t\"./EpiImagePropertyBlock/epiImagePropertyBlockType.ts\": [\n\t\t73186,\n\t\t3186\n\t],\n\t\"./EpiImageTextCardBlock/EpiImageTextCardBlock\": [\n\t\t74258,\n\t\t1877\n\t],\n\t\"./EpiImageTextCardBlock/EpiImageTextCardBlock.tsx\": [\n\t\t74258,\n\t\t1877\n\t],\n\t\"./EpiImageTextCardBlock/EpiImageTextCardBlockType\": [\n\t\t80478,\n\t\t478\n\t],\n\t\"./EpiImageTextCardBlock/EpiImageTextCardBlockType.ts\": [\n\t\t80478,\n\t\t478\n\t],\n\t\"./EpiImageTextPropertyBlock/EpiImageTextPropertyBlock.test\": [\n\t\t51590,\n\t\t1590\n\t],\n\t\"./EpiImageTextPropertyBlock/EpiImageTextPropertyBlock.test.ts\": [\n\t\t51590,\n\t\t1590\n\t],\n\t\"./EpiImageTextPropertyBlock/EpiImageTextPropertyBlock.utils\": [\n\t\t39431,\n\t\t9431\n\t],\n\t\"./EpiImageTextPropertyBlock/EpiImageTextPropertyBlock.utils.tsx\": [\n\t\t39431,\n\t\t9431\n\t],\n\t\"./EpiImageTextPropertyBlock/epiImageTextPropertyBlockType\": [\n\t\t84454,\n\t\t4454\n\t],\n\t\"./EpiImageTextPropertyBlock/epiImageTextPropertyBlockType.ts\": [\n\t\t84454,\n\t\t4454\n\t],\n\t\"./EpiLastOrdersBlock/EpiLastOrdersBlock\": [\n\t\t96609,\n\t\t6435,\n\t\t6142\n\t],\n\t\"./EpiLastOrdersBlock/EpiLastOrdersBlock.tsx\": [\n\t\t96609,\n\t\t6435,\n\t\t6142\n\t],\n\t\"./EpiLastOrdersBlock/epiLastOrdersBlockType\": [\n\t\t97456,\n\t\t7456\n\t],\n\t\"./EpiLastOrdersBlock/epiLastOrdersBlockType.ts\": [\n\t\t97456,\n\t\t7456\n\t],\n\t\"./EpiLinkAndPointoffersListBlock/EpiLinkAndPointoffersListBlock\": [\n\t\t65385,\n\t\t9418,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t1927,\n\t\t5686\n\t],\n\t\"./EpiLinkAndPointoffersListBlock/EpiLinkAndPointoffersListBlock.tsx\": [\n\t\t65385,\n\t\t9418,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t1927,\n\t\t5686\n\t],\n\t\"./EpiLinkAndPointoffersListBlock/epiLinkAndPointoffersListBlockType\": [\n\t\t79146,\n\t\t9146\n\t],\n\t\"./EpiLinkAndPointoffersListBlock/epiLinkAndPointoffersListBlockType.ts\": [\n\t\t79146,\n\t\t9146\n\t],\n\t\"./EpiLinkListBlock/EpiLinkListBlock\": [\n\t\t85000,\n\t\t9418,\n\t\t5000\n\t],\n\t\"./EpiLinkListBlock/EpiLinkListBlock.tsx\": [\n\t\t85000,\n\t\t9418,\n\t\t5000\n\t],\n\t\"./EpiLinkListBlock/epiLinkListBlockType\": [\n\t\t30154,\n\t\t154\n\t],\n\t\"./EpiLinkListBlock/epiLinkListBlockType.ts\": [\n\t\t30154,\n\t\t154\n\t],\n\t\"./EpiLoanBlock2/EpiLoanBlock2\": [\n\t\t10633,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t633,\n\t\t509\n\t],\n\t\"./EpiLoanBlock2/EpiLoanBlock2.tsx\": [\n\t\t10633,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t633,\n\t\t509\n\t],\n\t\"./EpiLoanBlock2/epiLoanBlock2Type\": [\n\t\t48810,\n\t\t8810\n\t],\n\t\"./EpiLoanBlock2/epiLoanBlock2Type.ts\": [\n\t\t48810,\n\t\t8810\n\t],\n\t\"./EpiLogoLinkBlock/EpiLogoLinkBlock\": [\n\t\t32845,\n\t\t2845\n\t],\n\t\"./EpiLogoLinkBlock/EpiLogoLinkBlock.tsx\": [\n\t\t32845,\n\t\t2845\n\t],\n\t\"./EpiLogoLinkBlock/epiLogoLinkBlockType\": [\n\t\t9968,\n\t\t9968\n\t],\n\t\"./EpiLogoLinkBlock/epiLogoLinkBlockType.ts\": [\n\t\t9968,\n\t\t9968\n\t],\n\t\"./EpiLogoLinkItemBlock/EpiLogoLinkItemBlock\": [\n\t\t89779,\n\t\t9779\n\t],\n\t\"./EpiLogoLinkItemBlock/EpiLogoLinkItemBlock.tsx\": [\n\t\t89779,\n\t\t9779\n\t],\n\t\"./EpiLogoLinkItemBlock/epiLogoLinkItemBlockType\": [\n\t\t81802,\n\t\t1802\n\t],\n\t\"./EpiLogoLinkItemBlock/epiLogoLinkItemBlockType.ts\": [\n\t\t81802,\n\t\t1802\n\t],\n\t\"./EpiMastercardCalculatorBlock/EpiMastercardCalculatorBlock\": [\n\t\t71230,\n\t\t9418,\n\t\t5145,\n\t\t9427,\n\t\t1230\n\t],\n\t\"./EpiMastercardCalculatorBlock/EpiMastercardCalculatorBlock.tsx\": [\n\t\t71230,\n\t\t9418,\n\t\t5145,\n\t\t9427,\n\t\t1230\n\t],\n\t\"./EpiMastercardCalculatorBlock/epiMastercardCalculatorBlockType\": [\n\t\t43198,\n\t\t3198\n\t],\n\t\"./EpiMastercardCalculatorBlock/epiMastercardCalculatorBlockType.ts\": [\n\t\t43198,\n\t\t3198\n\t],\n\t\"./EpiMemberPanelBlock/EpiMemberPanelBlock\": [\n\t\t31316,\n\t\t9418,\n\t\t6554\n\t],\n\t\"./EpiMemberPanelBlock/EpiMemberPanelBlock.tsx\": [\n\t\t31316,\n\t\t9418,\n\t\t6554\n\t],\n\t\"./EpiMemberPanelBlock/epiMemberPanelBlockType\": [\n\t\t71214,\n\t\t1214\n\t],\n\t\"./EpiMemberPanelBlock/epiMemberPanelBlockType.ts\": [\n\t\t71214,\n\t\t1214\n\t],\n\t\"./EpiMenuBlock/EpiMenuBlock\": [\n\t\t80179,\n\t\t179\n\t],\n\t\"./EpiMenuBlock/EpiMenuBlock.tsx\": [\n\t\t80179,\n\t\t179\n\t],\n\t\"./EpiMenuBlock/epiMenuBlockType\": [\n\t\t65196,\n\t\t2815\n\t],\n\t\"./EpiMenuBlock/epiMenuBlockType.ts\": [\n\t\t65196,\n\t\t2815\n\t],\n\t\"./EpiModalOverlayBlock/EpiModalOverlayBlock\": [\n\t\t62224,\n\t\t9418,\n\t\t5155,\n\t\t2224,\n\t\t3485\n\t],\n\t\"./EpiModalOverlayBlock/EpiModalOverlayBlock.tsx\": [\n\t\t62224,\n\t\t9418,\n\t\t5155,\n\t\t2224,\n\t\t3485\n\t],\n\t\"./EpiModalOverlayBlock/epiModalOverlayBlockType\": [\n\t\t91516,\n\t\t1516\n\t],\n\t\"./EpiModalOverlayBlock/epiModalOverlayBlockType.ts\": [\n\t\t91516,\n\t\t1516\n\t],\n\t\"./EpiOrderStatusPreviewBlock/EpiOrderStatusPreviewBlock\": [\n\t\t12117,\n\t\t5155,\n\t\t6376,\n\t\t767,\n\t\t6226,\n\t\t669\n\t],\n\t\"./EpiOrderStatusPreviewBlock/EpiOrderStatusPreviewBlock.tsx\": [\n\t\t12117,\n\t\t5155,\n\t\t6376,\n\t\t767,\n\t\t6226,\n\t\t669\n\t],\n\t\"./EpiOrderStatusPreviewBlock/epiOrderStatusPreviewBlockType\": [\n\t\t89866,\n\t\t9866\n\t],\n\t\"./EpiOrderStatusPreviewBlock/epiOrderStatusPreviewBlockType.ts\": [\n\t\t89866,\n\t\t9866\n\t],\n\t\"./EpiPartnerOfferListingBlock/EpiPartnerOfferListingBlock\": [\n\t\t38136,\n\t\t9418,\n\t\t8136,\n\t\t5042\n\t],\n\t\"./EpiPartnerOfferListingBlock/EpiPartnerOfferListingBlock.tsx\": [\n\t\t38136,\n\t\t9418,\n\t\t8136,\n\t\t5042\n\t],\n\t\"./EpiPartnerOfferListingBlock/epiPartnerOfferListingBlockType\": [\n\t\t42242,\n\t\t2242\n\t],\n\t\"./EpiPartnerOfferListingBlock/epiPartnerOfferListingBlockType.ts\": [\n\t\t42242,\n\t\t2242\n\t],\n\t\"./EpiPersonalOffersBlock/EpiPersonalOffersBlock\": [\n\t\t2858,\n\t\t9418,\n\t\t5155,\n\t\t1624,\n\t\t6982,\n\t\t4204,\n\t\t2427\n\t],\n\t\"./EpiPersonalOffersBlock/EpiPersonalOffersBlock.tsx\": [\n\t\t2858,\n\t\t9418,\n\t\t5155,\n\t\t1624,\n\t\t6982,\n\t\t4204,\n\t\t2427\n\t],\n\t\"./EpiPersonalOffersBlock/epiPersonalOffersBlockType\": [\n\t\t26988,\n\t\t6988\n\t],\n\t\"./EpiPersonalOffersBlock/epiPersonalOffersBlockType.ts\": [\n\t\t26988,\n\t\t6988\n\t],\n\t\"./EpiPointOfferSelectionBlock/epiPointOfferSelectionBlockType\": [\n\t\t72010,\n\t\t2010\n\t],\n\t\"./EpiPointOfferSelectionBlock/epiPointOfferSelectionBlockType.ts\": [\n\t\t72010,\n\t\t2010\n\t],\n\t\"./EpiPointOffersBlock/EpiPointOffersBlock\": [\n\t\t3237,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t8843,\n\t\t1624,\n\t\t665,\n\t\t9108,\n\t\t6217,\n\t\t3237,\n\t\t3193\n\t],\n\t\"./EpiPointOffersBlock/EpiPointOffersBlock.tsx\": [\n\t\t3237,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t8843,\n\t\t1624,\n\t\t665,\n\t\t9108,\n\t\t6217,\n\t\t3237,\n\t\t3193\n\t],\n\t\"./EpiPointOffersBlock/EpiPointOffersBlock.utils\": [\n\t\t56881,\n\t\t6881\n\t],\n\t\"./EpiPointOffersBlock/EpiPointOffersBlock.utils.ts\": [\n\t\t56881,\n\t\t6881\n\t],\n\t\"./EpiPointOffersBlock/epiPointOffersBlockType\": [\n\t\t51298,\n\t\t1298\n\t],\n\t\"./EpiPointOffersBlock/epiPointOffersBlockType.ts\": [\n\t\t51298,\n\t\t1298\n\t],\n\t\"./EpiPointShopOfferListingBlock/EpiPointShopOfferListingBlock\": [\n\t\t22175,\n\t\t8843,\n\t\t9108,\n\t\t6217,\n\t\t4200\n\t],\n\t\"./EpiPointShopOfferListingBlock/EpiPointShopOfferListingBlock.tsx\": [\n\t\t22175,\n\t\t8843,\n\t\t9108,\n\t\t6217,\n\t\t4200\n\t],\n\t\"./EpiPointShopOfferListingBlock/epiPointShopOfferListingBlockType\": [\n\t\t49134,\n\t\t9134\n\t],\n\t\"./EpiPointShopOfferListingBlock/epiPointShopOfferListingBlockType.ts\": [\n\t\t49134,\n\t\t9134\n\t],\n\t\"./EpiPointShopPartnerListingBlock/EpiPointShopPartnerListingBlock\": [\n\t\t72315,\n\t\t2315\n\t],\n\t\"./EpiPointShopPartnerListingBlock/EpiPointShopPartnerListingBlock.tsx\": [\n\t\t72315,\n\t\t2315\n\t],\n\t\"./EpiPointShopPartnerListingBlock/epiPointShopPartnerListingBlockType\": [\n\t\t642,\n\t\t642\n\t],\n\t\"./EpiPointShopPartnerListingBlock/epiPointShopPartnerListingBlockType.ts\": [\n\t\t642,\n\t\t642\n\t],\n\t\"./EpiPointShopUserPointsBlock/EpiPointShopUserPointsBlock\": [\n\t\t58356,\n\t\t8843,\n\t\t8356\n\t],\n\t\"./EpiPointShopUserPointsBlock/EpiPointShopUserPointsBlock.tsx\": [\n\t\t58356,\n\t\t8843,\n\t\t8356\n\t],\n\t\"./EpiPointShopUserPointsBlock/epiPointShopUserPointsBlockType\": [\n\t\t49661,\n\t\t2042\n\t],\n\t\"./EpiPointShopUserPointsBlock/epiPointShopUserPointsBlockType.ts\": [\n\t\t49661,\n\t\t2042\n\t],\n\t\"./EpiPromoListBlock/EpiPromoListBlock\": [\n\t\t29345,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t8264,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t8566\n\t],\n\t\"./EpiPromoListBlock/EpiPromoListBlock.tsx\": [\n\t\t29345,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t8264,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t8566\n\t],\n\t\"./EpiPromoListBlock/epiPromoListBlockType\": [\n\t\t41446,\n\t\t1446\n\t],\n\t\"./EpiPromoListBlock/epiPromoListBlockType.ts\": [\n\t\t41446,\n\t\t1446\n\t],\n\t\"./EpiQuizBlock/EpiQuizBlock\": [\n\t\t80137,\n\t\t9418,\n\t\t137\n\t],\n\t\"./EpiQuizBlock/EpiQuizBlock.tsx\": [\n\t\t80137,\n\t\t9418,\n\t\t137\n\t],\n\t\"./EpiQuizBlock/epiQuizBlockType\": [\n\t\t75332,\n\t\t5332\n\t],\n\t\"./EpiQuizBlock/epiQuizBlockType.ts\": [\n\t\t75332,\n\t\t5332\n\t],\n\t\"./EpiRawHtmlBlock/EpiRawHtmlBlock\": [\n\t\t48674,\n\t\t9418,\n\t\t6293\n\t],\n\t\"./EpiRawHtmlBlock/EpiRawHtmlBlock.tsx\": [\n\t\t48674,\n\t\t9418,\n\t\t6293\n\t],\n\t\"./EpiRawHtmlBlock/EpiRawHtmlBlock.utils\": [\n\t\t66069,\n\t\t6069\n\t],\n\t\"./EpiRawHtmlBlock/EpiRawHtmlBlock.utils.ts\": [\n\t\t66069,\n\t\t6069\n\t],\n\t\"./EpiRawHtmlBlock/epiRawHtmlBlockType\": [\n\t\t51878,\n\t\t1878\n\t],\n\t\"./EpiRawHtmlBlock/epiRawHtmlBlockType.ts\": [\n\t\t51878,\n\t\t1878\n\t],\n\t\"./EpiRecipeAdBlock/EpiRecipeAdBlockType.utils\": [\n\t\t82947,\n\t\t2947\n\t],\n\t\"./EpiRecipeAdBlock/EpiRecipeAdBlockType.utils.ts\": [\n\t\t82947,\n\t\t2947\n\t],\n\t\"./EpiRecipeAdBlock/epiRecipeAdBlockType\": [\n\t\t65100,\n\t\t5100\n\t],\n\t\"./EpiRecipeAdBlock/epiRecipeAdBlockType.ts\": [\n\t\t65100,\n\t\t5100\n\t],\n\t\"./EpiRecipeCategoryItemBlock/EpiRecipeCategoryItemBlock\": [\n\t\t7862,\n\t\t2055,\n\t\t7862\n\t],\n\t\"./EpiRecipeCategoryItemBlock/EpiRecipeCategoryItemBlock.tsx\": [\n\t\t7862,\n\t\t2055,\n\t\t7862\n\t],\n\t\"./EpiRecipeCategoryItemBlock/epiRecipeCategoryItemBlockType\": [\n\t\t1680,\n\t\t1680\n\t],\n\t\"./EpiRecipeCategoryItemBlock/epiRecipeCategoryItemBlockType.ts\": [\n\t\t1680,\n\t\t1680\n\t],\n\t\"./EpiRecipeFilterListingBlockType/epiRecipeFilterListingBlockType\": [\n\t\t20246,\n\t\t246\n\t],\n\t\"./EpiRecipeFilterListingBlockType/epiRecipeFilterListingBlockType.ts\": [\n\t\t20246,\n\t\t246\n\t],\n\t\"./EpiRecipeListingBlock/EpiRecipeListingBlock\": [\n\t\t58170,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t3776,\n\t\t1624,\n\t\t665,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t7810,\n\t\t6907\n\t],\n\t\"./EpiRecipeListingBlock/EpiRecipeListingBlock.tsx\": [\n\t\t58170,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t3776,\n\t\t1624,\n\t\t665,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t7810,\n\t\t6907\n\t],\n\t\"./EpiRecipeListingBlock/epiRecipeListingBlockItemType\": [\n\t\t7445,\n\t\t7445\n\t],\n\t\"./EpiRecipeListingBlock/epiRecipeListingBlockItemType.ts\": [\n\t\t7445,\n\t\t7445\n\t],\n\t\"./EpiRecipeListingBlock/epiRecipeListingBlockType\": [\n\t\t86922,\n\t\t6922\n\t],\n\t\"./EpiRecipeListingBlock/epiRecipeListingBlockType.ts\": [\n\t\t86922,\n\t\t6922\n\t],\n\t\"./EpiRecipesBasedOnNorthforkCategoriesBlock/EpiRecipesBasedOnNorthforkCategoriesBlock\": [\n\t\t44020,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t3776,\n\t\t1624,\n\t\t665,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t7508,\n\t\t562\n\t],\n\t\"./EpiRecipesBasedOnNorthforkCategoriesBlock/EpiRecipesBasedOnNorthforkCategoriesBlock.tsx\": [\n\t\t44020,\n\t\t9418,\n\t\t5155,\n\t\t5506,\n\t\t3776,\n\t\t1624,\n\t\t665,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t7508,\n\t\t562\n\t],\n\t\"./EpiRecipesBasedOnNorthforkCategoriesBlock/epiRecipesBasedOnNorthforkCategoriesBlockType\": [\n\t\t49450,\n\t\t9450\n\t],\n\t\"./EpiRecipesBasedOnNorthforkCategoriesBlock/epiRecipesBasedOnNorthforkCategoriesBlockType.ts\": [\n\t\t49450,\n\t\t9450\n\t],\n\t\"./EpiRecipesBasedOnProductsBlock/EpiRecipesBasedOnProductsBlock\": [\n\t\t73738,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t2647,\n\t\t8228,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t6239,\n\t\t8154,\n\t\t7857,\n\t\t8219,\n\t\t1598\n\t],\n\t\"./EpiRecipesBasedOnProductsBlock/EpiRecipesBasedOnProductsBlock.tsx\": [\n\t\t73738,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t2647,\n\t\t8228,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t1678,\n\t\t7907,\n\t\t6239,\n\t\t8154,\n\t\t7857,\n\t\t8219,\n\t\t1598\n\t],\n\t\"./EpiRecipesBasedOnProductsBlock/epiRecipesBasedOnProductsBlockType\": [\n\t\t82284,\n\t\t2284\n\t],\n\t\"./EpiRecipesBasedOnProductsBlock/epiRecipesBasedOnProductsBlockType.ts\": [\n\t\t82284,\n\t\t2284\n\t],\n\t\"./EpiReplaceableTextBlock/EpiReplaceableTextBlock\": [\n\t\t56758,\n\t\t9418,\n\t\t8843,\n\t\t1169,\n\t\t6758\n\t],\n\t\"./EpiReplaceableTextBlock/EpiReplaceableTextBlock.tsx\": [\n\t\t56758,\n\t\t9418,\n\t\t8843,\n\t\t1169,\n\t\t6758\n\t],\n\t\"./EpiReplaceableTextBlock/epiReplaceableTextBlockType\": [\n\t\t77090,\n\t\t7090\n\t],\n\t\"./EpiReplaceableTextBlock/epiReplaceableTextBlockType.ts\": [\n\t\t77090,\n\t\t7090\n\t],\n\t\"./EpiSavedCartsBlock/EpiSavedCartsBlock\": [\n\t\t53186,\n\t\t6435,\n\t\t3647\n\t],\n\t\"./EpiSavedCartsBlock/EpiSavedCartsBlock.tsx\": [\n\t\t53186,\n\t\t6435,\n\t\t3647\n\t],\n\t\"./EpiSavedCartsBlock/epiSavedCartsBlockType\": [\n\t\t22138,\n\t\t2138\n\t],\n\t\"./EpiSavedCartsBlock/epiSavedCartsBlockType.ts\": [\n\t\t22138,\n\t\t2138\n\t],\n\t\"./EpiSavingsBlock/EpiSavingsBlock\": [\n\t\t55133,\n\t\t5145,\n\t\t9427,\n\t\t5133,\n\t\t3227\n\t],\n\t\"./EpiSavingsBlock/EpiSavingsBlock.tsx\": [\n\t\t55133,\n\t\t5145,\n\t\t9427,\n\t\t5133,\n\t\t3227\n\t],\n\t\"./EpiSavingsBlock/epiSavingsBlockType\": [\n\t\t9154,\n\t\t9154\n\t],\n\t\"./EpiSavingsBlock/epiSavingsBlockType.ts\": [\n\t\t9154,\n\t\t9154\n\t],\n\t\"./EpiScriptBlock/EpiScriptBlock\": [\n\t\t13328,\n\t\t9418,\n\t\t3328\n\t],\n\t\"./EpiScriptBlock/EpiScriptBlock.tsx\": [\n\t\t13328,\n\t\t9418,\n\t\t3328\n\t],\n\t\"./EpiScriptBlock/epiScriptBlockType\": [\n\t\t74832,\n\t\t4832\n\t],\n\t\"./EpiScriptBlock/epiScriptBlockType.ts\": [\n\t\t74832,\n\t\t4832\n\t],\n\t\"./EpiSingleImageTextBlock/EpiSingleImageTextBlock\": [\n\t\t52310,\n\t\t9418,\n\t\t2310\n\t],\n\t\"./EpiSingleImageTextBlock/EpiSingleImageTextBlock.tsx\": [\n\t\t52310,\n\t\t9418,\n\t\t2310\n\t],\n\t\"./EpiSingleImageTextBlock/EpiSingleImageTextBlock.utils\": [\n\t\t77073,\n\t\t7073\n\t],\n\t\"./EpiSingleImageTextBlock/EpiSingleImageTextBlock.utils.ts\": [\n\t\t77073,\n\t\t7073\n\t],\n\t\"./EpiSingleImageTextBlock/epiSingleImageTextBlockType\": [\n\t\t14626,\n\t\t4626\n\t],\n\t\"./EpiSingleImageTextBlock/epiSingleImageTextBlockType.ts\": [\n\t\t14626,\n\t\t4626\n\t],\n\t\"./EpiSingleVideoBlock/EpiSingleVideoBlock\": [\n\t\t69276,\n\t\t9276\n\t],\n\t\"./EpiSingleVideoBlock/EpiSingleVideoBlock.tsx\": [\n\t\t69276,\n\t\t9276\n\t],\n\t\"./EpiSingleVideoBlock/epiSingleVideoBlockType\": [\n\t\t4722,\n\t\t4722\n\t],\n\t\"./EpiSingleVideoBlock/epiSingleVideoBlockType.ts\": [\n\t\t4722,\n\t\t4722\n\t],\n\t\"./EpiStoreOffersCategoryBlock/epiStoreOffersCategoryBlockType\": [\n\t\t56714,\n\t\t6714\n\t],\n\t\"./EpiStoreOffersCategoryBlock/epiStoreOffersCategoryBlockType.ts\": [\n\t\t56714,\n\t\t6714\n\t],\n\t\"./EpiStoreOffersCategoryContainerBlock/epiStoreOffersCategoryContainerBlockType\": [\n\t\t89636,\n\t\t9636\n\t],\n\t\"./EpiStoreOffersCategoryContainerBlock/epiStoreOffersCategoryContainerBlockType.ts\": [\n\t\t89636,\n\t\t9636\n\t],\n\t\"./EpiTimelineBlock/EpiTimelineBlock\": [\n\t\t19972,\n\t\t9418,\n\t\t5155,\n\t\t9972\n\t],\n\t\"./EpiTimelineBlock/EpiTimelineBlock.tsx\": [\n\t\t19972,\n\t\t9418,\n\t\t5155,\n\t\t9972\n\t],\n\t\"./EpiTimelineBlock/epiTimelineBlockType\": [\n\t\t324,\n\t\t324\n\t],\n\t\"./EpiTimelineBlock/epiTimelineBlockType.ts\": [\n\t\t324,\n\t\t324\n\t],\n\t\"./EpiTripleImageTextBlock/EpiTripleImageTextBlock\": [\n\t\t52334,\n\t\t9418,\n\t\t5155,\n\t\t2057,\n\t\t5041\n\t],\n\t\"./EpiTripleImageTextBlock/EpiTripleImageTextBlock.tsx\": [\n\t\t52334,\n\t\t9418,\n\t\t5155,\n\t\t2057,\n\t\t5041\n\t],\n\t\"./EpiTripleImageTextBlock/epiTripleImageTextBlockType\": [\n\t\t16586,\n\t\t6586\n\t],\n\t\"./EpiTripleImageTextBlock/epiTripleImageTextBlockType.ts\": [\n\t\t16586,\n\t\t6586\n\t],\n\t\"./EpiVideoBlock/EpiVideoBlock\": [\n\t\t43285,\n\t\t3285\n\t],\n\t\"./EpiVideoBlock/EpiVideoBlock.tsx\": [\n\t\t43285,\n\t\t3285\n\t],\n\t\"./EpiVideoBlock/epiVideoBlockType\": [\n\t\t41982,\n\t\t1982\n\t],\n\t\"./EpiVideoBlock/epiVideoBlockType.ts\": [\n\t\t41982,\n\t\t1982\n\t],\n\t\"./EpiVideoPropertyBlock/epiVideoPropertyBlockType\": [\n\t\t69930,\n\t\t9930\n\t],\n\t\"./EpiVideoPropertyBlock/epiVideoPropertyBlockType.ts\": [\n\t\t69930,\n\t\t9930\n\t],\n\t\"./EpiWideUspBlock/EpiWideUspBlock\": [\n\t\t36970,\n\t\t9418,\n\t\t6970\n\t],\n\t\"./EpiWideUspBlock/EpiWideUspBlock.tsx\": [\n\t\t36970,\n\t\t9418,\n\t\t6970\n\t],\n\t\"./EpiWideUspBlock/epiWideUspBlockType\": [\n\t\t23934,\n\t\t3934\n\t],\n\t\"./EpiWideUspBlock/epiWideUspBlockType.ts\": [\n\t\t23934,\n\t\t3934\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 87010;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./EpiArticlePagePartial/EpiArticlePagePartial\": [\n\t\t25127,\n\t\t5127\n\t],\n\t\"./EpiArticlePagePartial/EpiArticlePagePartial.tsx\": [\n\t\t25127,\n\t\t5127\n\t],\n\t\"./EpiArticlePagePartial/EpiArticlePageSmallPartial\": [\n\t\t5874,\n\t\t5874\n\t],\n\t\"./EpiArticlePagePartial/EpiArticlePageSmallPartial.tsx\": [\n\t\t5874,\n\t\t5874\n\t],\n\t\"./EpiBlockListingPagePartial/EpiBlockListingPagePartial\": [\n\t\t33487,\n\t\t3487\n\t],\n\t\"./EpiBlockListingPagePartial/EpiBlockListingPagePartial.tsx\": [\n\t\t33487,\n\t\t3487\n\t],\n\t\"./EpiPartnerPagePartial/EpiPartnerPagePartial\": [\n\t\t29943,\n\t\t9418,\n\t\t9943\n\t],\n\t\"./EpiPartnerPagePartial/EpiPartnerPagePartial.tsx\": [\n\t\t29943,\n\t\t9418,\n\t\t9943\n\t],\n\t\"./EpiRecipeCampaignPagePartial/EpiRecipeCampaignPagePartial\": [\n\t\t47525,\n\t\t7525\n\t],\n\t\"./EpiRecipeCampaignPagePartial/EpiRecipeCampaignPagePartial.tsx\": [\n\t\t47525,\n\t\t7525\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 65175;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./EpiAdMetaInfoPage/EpiAdMetaInfoPageType\": [\n\t\t20086,\n\t\t86\n\t],\n\t\"./EpiAdMetaInfoPage/EpiAdMetaInfoPageType.ts\": [\n\t\t20086,\n\t\t86\n\t],\n\t\"./EpiAdMetaInfoPage/EpiAdMetaInfoPageType.utils\": [\n\t\t68317,\n\t\t8317\n\t],\n\t\"./EpiAdMetaInfoPage/EpiAdMetaInfoPageType.utils.ts\": [\n\t\t68317,\n\t\t8317\n\t],\n\t\"./EpiArticlePage/EpiArticlePage\": [\n\t\t56978,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4126,\n\t\t4900\n\t],\n\t\"./EpiArticlePage/EpiArticlePage.tsx\": [\n\t\t56978,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4126,\n\t\t4900\n\t],\n\t\"./EpiArticlePage/EpiArticlePage.utils\": [\n\t\t18061,\n\t\t8061\n\t],\n\t\"./EpiArticlePage/EpiArticlePage.utils.ts\": [\n\t\t18061,\n\t\t8061\n\t],\n\t\"./EpiArticlePage/epiArticlePageType\": [\n\t\t64574,\n\t\t4574\n\t],\n\t\"./EpiArticlePage/epiArticlePageType.ts\": [\n\t\t64574,\n\t\t4574\n\t],\n\t\"./EpiB2BLayoutSettingsPage/EpiB2BLayoutSettingsPage\": [\n\t\t54760,\n\t\t4760\n\t],\n\t\"./EpiB2BLayoutSettingsPage/EpiB2BLayoutSettingsPage.ts\": [\n\t\t54760,\n\t\t4760\n\t],\n\t\"./EpiB2BStartPage/epiB2BStartPageType\": [\n\t\t19598,\n\t\t9598\n\t],\n\t\"./EpiB2BStartPage/epiB2BStartPageType.ts\": [\n\t\t19598,\n\t\t9598\n\t],\n\t\"./EpiBlockListingPage/EpiBlockListingPage\": [\n\t\t17134,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4821\n\t],\n\t\"./EpiBlockListingPage/EpiBlockListingPage.tsx\": [\n\t\t17134,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4821\n\t],\n\t\"./EpiBlockListingPage/epiBlockListingPageType\": [\n\t\t43050,\n\t\t3050\n\t],\n\t\"./EpiBlockListingPage/epiBlockListingPageType.ts\": [\n\t\t43050,\n\t\t3050\n\t],\n\t\"./EpiCardPage/EpiCardPage\": [\n\t\t65002,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t8843,\n\t\t5002,\n\t\t2636\n\t],\n\t\"./EpiCardPage/EpiCardPage.tsx\": [\n\t\t65002,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t8843,\n\t\t5002,\n\t\t2636\n\t],\n\t\"./EpiCardPage/epiCardPageType\": [\n\t\t14858,\n\t\t4858\n\t],\n\t\"./EpiCardPage/epiCardPageType.ts\": [\n\t\t14858,\n\t\t4858\n\t],\n\t\"./EpiConsentPage/EpiConsentPage\": [\n\t\t14239,\n\t\t5666,\n\t\t824,\n\t\t7792,\n\t\t6376,\n\t\t5569,\n\t\t1324,\n\t\t9798\n\t],\n\t\"./EpiConsentPage/EpiConsentPage.tsx\": [\n\t\t14239,\n\t\t5666,\n\t\t824,\n\t\t7792,\n\t\t6376,\n\t\t5569,\n\t\t1324,\n\t\t9798\n\t],\n\t\"./EpiConsentPage/epiConsentPageType\": [\n\t\t5898,\n\t\t5898\n\t],\n\t\"./EpiConsentPage/epiConsentPageType.ts\": [\n\t\t5898,\n\t\t5898\n\t],\n\t\"./EpiConsentPhoneNumberPage/EpiConsentPhoneNumberPage\": [\n\t\t84845,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t1596,\n\t\t1984,\n\t\t5182\n\t],\n\t\"./EpiConsentPhoneNumberPage/EpiConsentPhoneNumberPage.tsx\": [\n\t\t84845,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t1596,\n\t\t1984,\n\t\t5182\n\t],\n\t\"./EpiConsentPhoneNumberPage/epiConsentPhoneNumberPageType\": [\n\t\t60062,\n\t\t62\n\t],\n\t\"./EpiConsentPhoneNumberPage/epiConsentPhoneNumberPageType.ts\": [\n\t\t60062,\n\t\t62\n\t],\n\t\"./EpiCurrentOffersContainerPage/EpiCurrentOffersContainerPage\": [\n\t\t25563,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t9947,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t5521,\n\t\t2031,\n\t\t9710\n\t],\n\t\"./EpiCurrentOffersContainerPage/EpiCurrentOffersContainerPage.tsx\": [\n\t\t25563,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t9947,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t5521,\n\t\t2031,\n\t\t9710\n\t],\n\t\"./EpiCurrentOffersContainerPage/epiCurrentOffersContainerPageType\": [\n\t\t3578,\n\t\t3578\n\t],\n\t\"./EpiCurrentOffersContainerPage/epiCurrentOffersContainerPageType.ts\": [\n\t\t3578,\n\t\t3578\n\t],\n\t\"./EpiDownloadAppPage/EpiDownloadAppPage\": [\n\t\t4387,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t554\n\t],\n\t\"./EpiDownloadAppPage/EpiDownloadAppPage.tsx\": [\n\t\t4387,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t554\n\t],\n\t\"./EpiDownloadAppPage/epiDownloadAppPageType\": [\n\t\t25244,\n\t\t5244\n\t],\n\t\"./EpiDownloadAppPage/epiDownloadAppPageType.ts\": [\n\t\t25244,\n\t\t5244\n\t],\n\t\"./EpiEcommercePage/EpiEcommercePage\": [\n\t\t44632,\n\t\t5666,\n\t\t4632\n\t],\n\t\"./EpiEcommercePage/EpiEcommercePage.tsx\": [\n\t\t44632,\n\t\t5666,\n\t\t4632\n\t],\n\t\"./EpiEcommercePage/epiEcommercePageType\": [\n\t\t44489,\n\t\t6870\n\t],\n\t\"./EpiEcommercePage/epiEcommercePageType.ts\": [\n\t\t44489,\n\t\t6870\n\t],\n\t\"./EpiEmailSubscriptionPage/EpiEmailSubscriptionPage\": [\n\t\t78642,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t3287,\n\t\t4624,\n\t\t8843,\n\t\t1596,\n\t\t8642,\n\t\t4965\n\t],\n\t\"./EpiEmailSubscriptionPage/EpiEmailSubscriptionPage.tsx\": [\n\t\t78642,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t824,\n\t\t3287,\n\t\t4624,\n\t\t8843,\n\t\t1596,\n\t\t8642,\n\t\t4965\n\t],\n\t\"./EpiEmailSubscriptionPage/epiEmailSubscriptionPageType\": [\n\t\t49472,\n\t\t9472\n\t],\n\t\"./EpiEmailSubscriptionPage/epiEmailSubscriptionPageType.ts\": [\n\t\t49472,\n\t\t9472\n\t],\n\t\"./EpiErrorPage404Page/EpiErrorPage404Page\": [\n\t\t99894,\n\t\t9418,\n\t\t5666,\n\t\t9894\n\t],\n\t\"./EpiErrorPage404Page/EpiErrorPage404Page.tsx\": [\n\t\t99894,\n\t\t9418,\n\t\t5666,\n\t\t9894\n\t],\n\t\"./EpiErrorPage404Page/errorPage404PageType\": [\n\t\t73436,\n\t\t3436\n\t],\n\t\"./EpiErrorPage404Page/errorPage404PageType.ts\": [\n\t\t73436,\n\t\t3436\n\t],\n\t\"./EpiHybrisCheckoutPage/epiHybrisCheckoutPageType\": [\n\t\t29278,\n\t\t9278\n\t],\n\t\"./EpiHybrisCheckoutPage/epiHybrisCheckoutPageType.ts\": [\n\t\t29278,\n\t\t9278\n\t],\n\t\"./EpiHybrisOrderCompletePage/EpiHybrisOrderCompletePage\": [\n\t\t62178,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t224,\n\t\t9073,\n\t\t824,\n\t\t6244,\n\t\t1303,\n\t\t3907,\n\t\t4624,\n\t\t8843,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t5196,\n\t\t2181,\n\t\t5942,\n\t\t5569,\n\t\t8707,\n\t\t6760,\n\t\t4769,\n\t\t7408,\n\t\t1603\n\t],\n\t\"./EpiHybrisOrderCompletePage/EpiHybrisOrderCompletePage.tsx\": [\n\t\t62178,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t224,\n\t\t9073,\n\t\t824,\n\t\t6244,\n\t\t1303,\n\t\t3907,\n\t\t4624,\n\t\t8843,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t5196,\n\t\t2181,\n\t\t5942,\n\t\t5569,\n\t\t8707,\n\t\t6760,\n\t\t4769,\n\t\t7408,\n\t\t1603\n\t],\n\t\"./EpiHybrisOrderCompletePage/epiHybrisOrderCompletePageType\": [\n\t\t11302,\n\t\t1302\n\t],\n\t\"./EpiHybrisOrderCompletePage/epiHybrisOrderCompletePageType.ts\": [\n\t\t11302,\n\t\t1302\n\t],\n\t\"./EpiLastOrdersPage/EpiLastOrdersPage\": [\n\t\t19547,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t224,\n\t\t9073,\n\t\t6244,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t4173,\n\t\t2181,\n\t\t6760,\n\t\t6607,\n\t\t4769,\n\t\t767,\n\t\t2729\n\t],\n\t\"./EpiLastOrdersPage/EpiLastOrdersPage.tsx\": [\n\t\t19547,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t224,\n\t\t9073,\n\t\t6244,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t4173,\n\t\t2181,\n\t\t6760,\n\t\t6607,\n\t\t4769,\n\t\t767,\n\t\t2729\n\t],\n\t\"./EpiLastOrdersPage/epiLastOrdersPageType\": [\n\t\t30986,\n\t\t986\n\t],\n\t\"./EpiLastOrdersPage/epiLastOrdersPageType.ts\": [\n\t\t30986,\n\t\t986\n\t],\n\t\"./EpiLocalProductsPage/EpiLocalProductsPage\": [\n\t\t4249,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t1567,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t5521,\n\t\t5942,\n\t\t2031,\n\t\t7807\n\t],\n\t\"./EpiLocalProductsPage/EpiLocalProductsPage.tsx\": [\n\t\t4249,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t1567,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t5521,\n\t\t5942,\n\t\t2031,\n\t\t7807\n\t],\n\t\"./EpiLocalProductsPage/epiLocalProductsPageType\": [\n\t\t80840,\n\t\t840\n\t],\n\t\"./EpiLocalProductsPage/epiLocalProductsPageType.ts\": [\n\t\t80840,\n\t\t840\n\t],\n\t\"./EpiMapStorePage/EpiMapStorePage\": [\n\t\t67493,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t740,\n\t\t5506,\n\t\t1303,\n\t\t8628,\n\t\t2443,\n\t\t1624,\n\t\t665,\n\t\t6982,\n\t\t4204,\n\t\t2765,\n\t\t9321\n\t],\n\t\"./EpiMapStorePage/EpiMapStorePage.tsx\": [\n\t\t67493,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t740,\n\t\t5506,\n\t\t1303,\n\t\t8628,\n\t\t2443,\n\t\t1624,\n\t\t665,\n\t\t6982,\n\t\t4204,\n\t\t2765,\n\t\t9321\n\t],\n\t\"./EpiMapStorePage/epiMapStorePageType\": [\n\t\t55478,\n\t\t5478\n\t],\n\t\"./EpiMapStorePage/epiMapStorePageType.ts\": [\n\t\t55478,\n\t\t5478\n\t],\n\t\"./EpiMissingWeeklyFlyerPage/EpiMissingWeeklyFlyerPage\": [\n\t\t66436,\n\t\t9418,\n\t\t5666,\n\t\t6436\n\t],\n\t\"./EpiMissingWeeklyFlyerPage/EpiMissingWeeklyFlyerPage.tsx\": [\n\t\t66436,\n\t\t9418,\n\t\t5666,\n\t\t6436\n\t],\n\t\"./EpiMissingWeeklyFlyerPage/missingWeeklyFlyerPageType\": [\n\t\t99496,\n\t\t9496\n\t],\n\t\"./EpiMissingWeeklyFlyerPage/missingWeeklyFlyerPageType.ts\": [\n\t\t99496,\n\t\t9496\n\t],\n\t\"./EpiMyBlockListingPage/EpiMyBlockListingPage\": [\n\t\t63407,\n\t\t9418,\n\t\t5666,\n\t\t3407\n\t],\n\t\"./EpiMyBlockListingPage/EpiMyBlockListingPage.tsx\": [\n\t\t63407,\n\t\t9418,\n\t\t5666,\n\t\t3407\n\t],\n\t\"./EpiMyBlockListingPage/epiMyBlockListingPageType\": [\n\t\t97782,\n\t\t7782\n\t],\n\t\"./EpiMyBlockListingPage/epiMyBlockListingPageType.ts\": [\n\t\t97782,\n\t\t7782\n\t],\n\t\"./EpiMyBonusOverviewPage/EpiMyBonusOverviewPage\": [\n\t\t70606,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t9145,\n\t\t8843,\n\t\t8269,\n\t\t606,\n\t\t5811\n\t],\n\t\"./EpiMyBonusOverviewPage/EpiMyBonusOverviewPage.tsx\": [\n\t\t70606,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t9145,\n\t\t8843,\n\t\t8269,\n\t\t606,\n\t\t5811\n\t],\n\t\"./EpiMyBonusOverviewPage/epiMyBonusOverviewPageType\": [\n\t\t37562,\n\t\t7562\n\t],\n\t\"./EpiMyBonusOverviewPage/epiMyBonusOverviewPageType.ts\": [\n\t\t37562,\n\t\t7562\n\t],\n\t\"./EpiMyBonusPage/EpiMyBonusPage\": [\n\t\t9,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t9145,\n\t\t8843,\n\t\t8269,\n\t\t5397\n\t],\n\t\"./EpiMyBonusPage/EpiMyBonusPage.tsx\": [\n\t\t9,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t9145,\n\t\t8843,\n\t\t8269,\n\t\t5397\n\t],\n\t\"./EpiMyBonusPage/epiMyBonusPageType\": [\n\t\t48696,\n\t\t8696\n\t],\n\t\"./EpiMyBonusPage/epiMyBonusPageType.ts\": [\n\t\t48696,\n\t\t8696\n\t],\n\t\"./EpiMyCoopArticlePage/EpiMyCoopArticlePage\": [\n\t\t11618,\n\t\t9418,\n\t\t5666,\n\t\t1618,\n\t\t4742\n\t],\n\t\"./EpiMyCoopArticlePage/EpiMyCoopArticlePage.tsx\": [\n\t\t11618,\n\t\t9418,\n\t\t5666,\n\t\t1618,\n\t\t4742\n\t],\n\t\"./EpiMyCoopArticlePage/epiMyCoopArticlePageType\": [\n\t\t95312,\n\t\t5312\n\t],\n\t\"./EpiMyCoopArticlePage/epiMyCoopArticlePageType.ts\": [\n\t\t95312,\n\t\t5312\n\t],\n\t\"./EpiMyCoopPage/EpiMyCoopPage\": [\n\t\t1484,\n\t\t1484\n\t],\n\t\"./EpiMyCoopPage/EpiMyCoopPage.tsx\": [\n\t\t1484,\n\t\t1484\n\t],\n\t\"./EpiMyCoopPage/epiMyCoopPageType\": [\n\t\t29498,\n\t\t9498\n\t],\n\t\"./EpiMyCoopPage/epiMyCoopPageType.ts\": [\n\t\t29498,\n\t\t9498\n\t],\n\t\"./EpiMyCoopSettingsPage/epiMyCoopSettingsPageType\": [\n\t\t2334,\n\t\t2334\n\t],\n\t\"./EpiMyCoopSettingsPage/epiMyCoopSettingsPageType.ts\": [\n\t\t2334,\n\t\t2334\n\t],\n\t\"./EpiMyPointsExpirePage/EpiMyPointsExpirePage\": [\n\t\t64222,\n\t\t5666,\n\t\t8843,\n\t\t4222\n\t],\n\t\"./EpiMyPointsExpirePage/EpiMyPointsExpirePage.tsx\": [\n\t\t64222,\n\t\t5666,\n\t\t8843,\n\t\t4222\n\t],\n\t\"./EpiMyPointsExpirePage/epiMyPointsExpirePageType\": [\n\t\t19218,\n\t\t9218\n\t],\n\t\"./EpiMyPointsExpirePage/epiMyPointsExpirePageType.ts\": [\n\t\t19218,\n\t\t9218\n\t],\n\t\"./EpiMyPointsHistoryPage/EpiMyPointsHistoryPage\": [\n\t\t89518,\n\t\t9418,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t2438,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t786,\n\t\t3726\n\t],\n\t\"./EpiMyPointsHistoryPage/EpiMyPointsHistoryPage.tsx\": [\n\t\t89518,\n\t\t9418,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t2438,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t786,\n\t\t3726\n\t],\n\t\"./EpiMyPointsHistoryPage/epiMyPointsHistoryPageType\": [\n\t\t60944,\n\t\t944\n\t],\n\t\"./EpiMyPointsHistoryPage/epiMyPointsHistoryPageType.ts\": [\n\t\t60944,\n\t\t944\n\t],\n\t\"./EpiMyProfilePage/EpiMyProfilePage\": [\n\t\t7806,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t1808,\n\t\t9073,\n\t\t824,\n\t\t2647,\n\t\t7548,\n\t\t8843,\n\t\t1596,\n\t\t3963,\n\t\t8764,\n\t\t4717\n\t],\n\t\"./EpiMyProfilePage/EpiMyProfilePage.tsx\": [\n\t\t7806,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t1808,\n\t\t9073,\n\t\t824,\n\t\t2647,\n\t\t7548,\n\t\t8843,\n\t\t1596,\n\t\t3963,\n\t\t8764,\n\t\t4717\n\t],\n\t\"./EpiMyProfilePage/epiMyProfilePageType\": [\n\t\t36224,\n\t\t6224\n\t],\n\t\"./EpiMyProfilePage/epiMyProfilePageType.ts\": [\n\t\t36224,\n\t\t6224\n\t],\n\t\"./EpiMyPurchaseHistoryPage/EpiMyPurchaseHistoryPage\": [\n\t\t57653,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t1755,\n\t\t8843,\n\t\t7653,\n\t\t399\n\t],\n\t\"./EpiMyPurchaseHistoryPage/EpiMyPurchaseHistoryPage.tsx\": [\n\t\t57653,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t1755,\n\t\t8843,\n\t\t7653,\n\t\t399\n\t],\n\t\"./EpiMyPurchaseHistoryPage/epiMyPurchaseHistoryPageType\": [\n\t\t34000,\n\t\t4000\n\t],\n\t\"./EpiMyPurchaseHistoryPage/epiMyPurchaseHistoryPageType.ts\": [\n\t\t34000,\n\t\t4000\n\t],\n\t\"./EpiMyPurchasedPointItemPage/EpiMyPurchasedPointItemPage\": [\n\t\t92190,\n\t\t9418,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t2438,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t786,\n\t\t4894\n\t],\n\t\"./EpiMyPurchasedPointItemPage/EpiMyPurchasedPointItemPage.tsx\": [\n\t\t92190,\n\t\t9418,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t2438,\n\t\t8843,\n\t\t9108,\n\t\t3274,\n\t\t954,\n\t\t786,\n\t\t4894\n\t],\n\t\"./EpiMyPurchasedPointItemPage/epiMyPurchasedPointItemPageType\": [\n\t\t41926,\n\t\t1926\n\t],\n\t\"./EpiMyPurchasedPointItemPage/epiMyPurchasedPointItemPageType.ts\": [\n\t\t41926,\n\t\t1926\n\t],\n\t\"./EpiPartnerPage/EpiPartnerPage\": [\n\t\t30260,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t9416,\n\t\t2847\n\t],\n\t\"./EpiPartnerPage/EpiPartnerPage.tsx\": [\n\t\t30260,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t9416,\n\t\t2847\n\t],\n\t\"./EpiPartnerPage/epiPartnerPageType\": [\n\t\t93346,\n\t\t3346\n\t],\n\t\"./EpiPartnerPage/epiPartnerPageType.ts\": [\n\t\t93346,\n\t\t3346\n\t],\n\t\"./EpiPointShop2Page/EpiPointShop2Page\": [\n\t\t78130,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t1217\n\t],\n\t\"./EpiPointShop2Page/EpiPointShop2Page.tsx\": [\n\t\t78130,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t1217\n\t],\n\t\"./EpiPointShop2Page/epiPointShop2PageType\": [\n\t\t97174,\n\t\t7174\n\t],\n\t\"./EpiPointShop2Page/epiPointShop2PageType.ts\": [\n\t\t97174,\n\t\t7174\n\t],\n\t\"./EpiPointShopAutoCheckPage/EpiPointShopAutoCheckPage\": [\n\t\t51115,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t8843,\n\t\t5196,\n\t\t6122,\n\t\t3963,\n\t\t61,\n\t\t1286\n\t],\n\t\"./EpiPointShopAutoCheckPage/EpiPointShopAutoCheckPage.tsx\": [\n\t\t51115,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t8843,\n\t\t5196,\n\t\t6122,\n\t\t3963,\n\t\t61,\n\t\t1286\n\t],\n\t\"./EpiPointShopAutoCheckPage/epiPointShopAutoCheckPageType\": [\n\t\t39830,\n\t\t9830\n\t],\n\t\"./EpiPointShopAutoCheckPage/epiPointShopAutoCheckPageType.ts\": [\n\t\t39830,\n\t\t9830\n\t],\n\t\"./EpiPointShopPartnerPage/EpiPointShopPartnerPage\": [\n\t\t6802,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4265\n\t],\n\t\"./EpiPointShopPartnerPage/EpiPointShopPartnerPage.tsx\": [\n\t\t6802,\n\t\t5155,\n\t\t5666,\n\t\t1808,\n\t\t224,\n\t\t4624,\n\t\t5196,\n\t\t6122,\n\t\t4265\n\t],\n\t\"./EpiPointShopPartnerPage/epiPointShopPartnerPageType\": [\n\t\t17702,\n\t\t7702\n\t],\n\t\"./EpiPointShopPartnerPage/epiPointShopPartnerPageType.ts\": [\n\t\t17702,\n\t\t7702\n\t],\n\t\"./EpiRecipeCampaignPage/epiRecipeCampaignPageType\": [\n\t\t97606,\n\t\t7606\n\t],\n\t\"./EpiRecipeCampaignPage/epiRecipeCampaignPageType.ts\": [\n\t\t97606,\n\t\t7606\n\t],\n\t\"./EpiRecipeItemPage/epiRecipeItemPageType\": [\n\t\t64558,\n\t\t4558\n\t],\n\t\"./EpiRecipeItemPage/epiRecipeItemPageType.ts\": [\n\t\t64558,\n\t\t4558\n\t],\n\t\"./EpiRecipeSettingsPage/epiRecipeSettingsPageType\": [\n\t\t29806,\n\t\t9806\n\t],\n\t\"./EpiRecipeSettingsPage/epiRecipeSettingsPageType.ts\": [\n\t\t29806,\n\t\t9806\n\t],\n\t\"./EpiRecipeStartPage/epiRecipeStartPageType\": [\n\t\t47838,\n\t\t7838\n\t],\n\t\"./EpiRecipeStartPage/epiRecipeStartPageType.ts\": [\n\t\t47838,\n\t\t7838\n\t],\n\t\"./EpiRedirectLinksPage/epiRedirectLinksPageType\": [\n\t\t31328,\n\t\t1328\n\t],\n\t\"./EpiRedirectLinksPage/epiRedirectLinksPageType.ts\": [\n\t\t31328,\n\t\t1328\n\t],\n\t\"./EpiSavedCartListPage/EpiSavedCartListPage\": [\n\t\t58184,\n\t\t5155,\n\t\t5666,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t4173,\n\t\t6607,\n\t\t3766,\n\t\t4448\n\t],\n\t\"./EpiSavedCartListPage/EpiSavedCartListPage.tsx\": [\n\t\t58184,\n\t\t5155,\n\t\t5666,\n\t\t4624,\n\t\t6376,\n\t\t679,\n\t\t4173,\n\t\t6607,\n\t\t3766,\n\t\t4448\n\t],\n\t\"./EpiSavedCartListPage/epiSavedCartListPageType\": [\n\t\t956,\n\t\t956\n\t],\n\t\"./EpiSavedCartListPage/epiSavedCartListPageType.ts\": [\n\t\t956,\n\t\t956\n\t],\n\t\"./EpiScriptPage/EpiScriptPage\": [\n\t\t59556,\n\t\t9418,\n\t\t5666,\n\t\t9556,\n\t\t6868\n\t],\n\t\"./EpiScriptPage/EpiScriptPage.tsx\": [\n\t\t59556,\n\t\t9418,\n\t\t5666,\n\t\t9556,\n\t\t6868\n\t],\n\t\"./EpiScriptPage/epiScriptPageType\": [\n\t\t21034,\n\t\t1034\n\t],\n\t\"./EpiScriptPage/epiScriptPageType.ts\": [\n\t\t21034,\n\t\t1034\n\t],\n\t\"./EpiSearchResultPage/EpiSearchResultPage\": [\n\t\t36445,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t93,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t5942,\n\t\t2031,\n\t\t9205,\n\t\t473,\n\t\t4766\n\t],\n\t\"./EpiSearchResultPage/EpiSearchResultPage.tsx\": [\n\t\t36445,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t5506,\n\t\t93,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t9108,\n\t\t4173,\n\t\t6711,\n\t\t1678,\n\t\t5521,\n\t\t5942,\n\t\t2031,\n\t\t9205,\n\t\t473,\n\t\t4766\n\t],\n\t\"./EpiSearchResultPage/epiSearchResultPageType\": [\n\t\t99366,\n\t\t9366\n\t],\n\t\"./EpiSearchResultPage/epiSearchResultPageType.ts\": [\n\t\t99366,\n\t\t9366\n\t],\n\t\"./EpiSecureIdentifyUserPage/EpiSecureIdentifyUserPage\": [\n\t\t9530,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t224,\n\t\t9073,\n\t\t824,\n\t\t6244,\n\t\t1303,\n\t\t3907,\n\t\t341,\n\t\t4624,\n\t\t8843,\n\t\t1624,\n\t\t6376,\n\t\t9108,\n\t\t5196,\n\t\t2181,\n\t\t5942,\n\t\t5569,\n\t\t8707,\n\t\t2694,\n\t\t8759\n\t],\n\t\"./EpiSecureIdentifyUserPage/EpiSecureIdentifyUserPage.tsx\": [\n\t\t9530,\n\t\t9418,\n\t\t5155,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t224,\n\t\t9073,\n\t\t824,\n\t\t6244,\n\t\t1303,\n\t\t3907,\n\t\t341,\n\t\t4624,\n\t\t8843,\n\t\t1624,\n\t\t6376,\n\t\t9108,\n\t\t5196,\n\t\t2181,\n\t\t5942,\n\t\t5569,\n\t\t8707,\n\t\t2694,\n\t\t8759\n\t],\n\t\"./EpiSecureIdentifyUserPage/epiSecureIdentifyUserPageType\": [\n\t\t10382,\n\t\t382\n\t],\n\t\"./EpiSecureIdentifyUserPage/epiSecureIdentifyUserPageType.ts\": [\n\t\t10382,\n\t\t382\n\t],\n\t\"./EpiShoppingListPage/EpiShoppingListPage\": [\n\t\t31478,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t9083,\n\t\t7290,\n\t\t6982,\n\t\t1478,\n\t\t5684\n\t],\n\t\"./EpiShoppingListPage/EpiShoppingListPage.tsx\": [\n\t\t31478,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t9073,\n\t\t9083,\n\t\t7290,\n\t\t6982,\n\t\t1478,\n\t\t5684\n\t],\n\t\"./EpiShoppingListPage/epiShoppingListPageType\": [\n\t\t118,\n\t\t118\n\t],\n\t\"./EpiShoppingListPage/epiShoppingListPageType.ts\": [\n\t\t118,\n\t\t118\n\t],\n\t\"./EpiStartPage/epiStartPageType\": [\n\t\t98070,\n\t\t8070\n\t],\n\t\"./EpiStartPage/epiStartPageType.ts\": [\n\t\t98070,\n\t\t8070\n\t],\n\t\"./EpiStoreConceptPageType/epiStoreConceptPageType\": [\n\t\t55322,\n\t\t5322\n\t],\n\t\"./EpiStoreConceptPageType/epiStoreConceptPageType.ts\": [\n\t\t55322,\n\t\t5322\n\t],\n\t\"./EpiStorePage/EpiStorePage\": [\n\t\t77842,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t1808,\n\t\t224,\n\t\t9073,\n\t\t5506,\n\t\t6244,\n\t\t4971,\n\t\t4624,\n\t\t1624,\n\t\t665,\n\t\t6982,\n\t\t4204,\n\t\t2765,\n\t\t7330\n\t],\n\t\"./EpiStorePage/EpiStorePage.tsx\": [\n\t\t77842,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t1808,\n\t\t224,\n\t\t9073,\n\t\t5506,\n\t\t6244,\n\t\t4971,\n\t\t4624,\n\t\t1624,\n\t\t665,\n\t\t6982,\n\t\t4204,\n\t\t2765,\n\t\t7330\n\t],\n\t\"./EpiStorePage/epiStorePageType\": [\n\t\t6276,\n\t\t6276\n\t],\n\t\"./EpiStorePage/epiStorePageType.ts\": [\n\t\t6276,\n\t\t6276\n\t],\n\t\"./EpiStoreSettingsPage/epiStoreSettingsPageType\": [\n\t\t98678,\n\t\t8678\n\t],\n\t\"./EpiStoreSettingsPage/epiStoreSettingsPageType.ts\": [\n\t\t98678,\n\t\t8678\n\t],\n\t\"./EpiSubscriptionOrdersPage/EpiSubscriptionOrdersPage\": [\n\t\t30133,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t9073,\n\t\t824,\n\t\t5271,\n\t\t6376,\n\t\t679,\n\t\t2181,\n\t\t6760,\n\t\t6607,\n\t\t5878,\n\t\t8771,\n\t\t541\n\t],\n\t\"./EpiSubscriptionOrdersPage/EpiSubscriptionOrdersPage.tsx\": [\n\t\t30133,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t6137,\n\t\t771,\n\t\t9073,\n\t\t824,\n\t\t5271,\n\t\t6376,\n\t\t679,\n\t\t2181,\n\t\t6760,\n\t\t6607,\n\t\t5878,\n\t\t8771,\n\t\t541\n\t],\n\t\"./EpiSubscriptionOrdersPage/epiSubscriptionOrdersPageType\": [\n\t\t374,\n\t\t374\n\t],\n\t\"./EpiSubscriptionOrdersPage/epiSubscriptionOrdersPageType.ts\": [\n\t\t374,\n\t\t374\n\t],\n\t\"./EpiWeeklyMenuPage/EpiWeeklyMenuPage\": [\n\t\t7265,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t224,\n\t\t5506,\n\t\t2647,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t2181,\n\t\t6239,\n\t\t8154,\n\t\t3373\n\t],\n\t\"./EpiWeeklyMenuPage/EpiWeeklyMenuPage.tsx\": [\n\t\t7265,\n\t\t9418,\n\t\t5155,\n\t\t5666,\n\t\t5145,\n\t\t9540,\n\t\t740,\n\t\t1808,\n\t\t6137,\n\t\t771,\n\t\t224,\n\t\t5506,\n\t\t2647,\n\t\t4624,\n\t\t1624,\n\t\t6376,\n\t\t679,\n\t\t665,\n\t\t4173,\n\t\t6711,\n\t\t7290,\n\t\t2181,\n\t\t6239,\n\t\t8154,\n\t\t3373\n\t],\n\t\"./EpiWeeklyMenuPage/epiWeeklyMenuPageType\": [\n\t\t37678,\n\t\t7678\n\t],\n\t\"./EpiWeeklyMenuPage/epiWeeklyMenuPageType.ts\": [\n\t\t37678,\n\t\t7678\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 18062;\nmodule.exports = webpackAsyncContext;","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel;\r\n(function (SeverityLevel) {\r\n SeverityLevel[SeverityLevel[\"Verbose\"] = 0] = \"Verbose\";\r\n SeverityLevel[SeverityLevel[\"Information\"] = 1] = \"Information\";\r\n SeverityLevel[SeverityLevel[\"Warning\"] = 2] = \"Warning\";\r\n SeverityLevel[SeverityLevel[\"Error\"] = 3] = \"Error\";\r\n SeverityLevel[SeverityLevel[\"Critical\"] = 4] = \"Critical\";\r\n})(SeverityLevel || (SeverityLevel = {}));\r\n//# sourceMappingURL=SeverityLevel.js.map","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n var prop = _c[_i];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __async = function (__this, __arguments, generator) {\r\n return new Promise(function (resolve, reject) {\r\n var fulfilled = function (value) {\r\n try {\r\n step(generator.next(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var rejected = function (value) {\r\n try {\r\n step(generator.throw(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n step((generator = generator.apply(__this, __arguments)).next());\r\n });\r\n};\r\n// src/index.ts\r\nimport { enableES5 } from \"immer\";\r\nexport * from \"redux\";\r\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\r\nimport { createSelector as createSelector2 } from \"reselect\";\r\n// src/createDraftSafeSelector.ts\r\nimport { current, isDraft } from \"immer\";\r\nimport { createSelector } from \"reselect\";\r\nvar createDraftSafeSelector = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var selector = createSelector.apply(void 0, args);\r\n var wrappedSelector = function (value) {\r\n var rest = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n rest[_i - 1] = arguments[_i];\r\n }\r\n return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\r\n };\r\n return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\r\n// src/devtoolsExtension.ts\r\nimport { compose } from \"redux\";\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n if (arguments.length === 0)\r\n return void 0;\r\n if (typeof arguments[0] === \"object\")\r\n return compose;\r\n return compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n return function (noop2) {\r\n return noop2;\r\n };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n if (typeof value !== \"object\" || value === null)\r\n return false;\r\n var proto = Object.getPrototypeOf(value);\r\n if (proto === null)\r\n return true;\r\n var baseProto = proto;\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto);\r\n }\r\n return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nimport thunkMiddleware from \"redux-thunk\";\r\n// src/utils.ts\r\nimport createNextState, { isDraftable } from \"immer\";\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n var elapsed = 0;\r\n return {\r\n measureTime: function (fn) {\r\n var started = Date.now();\r\n try {\r\n return fn();\r\n }\r\n finally {\r\n var finished = Date.now();\r\n elapsed += finished - started;\r\n }\r\n },\r\n warnIfExceeded: function () {\r\n if (elapsed > maxDelay) {\r\n console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n }\r\n }\r\n };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n __extends(MiddlewareArray, _super);\r\n function MiddlewareArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n get: function () {\r\n return MiddlewareArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MiddlewareArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n MiddlewareArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return MiddlewareArray;\r\n}(Array));\r\nvar EnhancerArray = /** @class */ (function (_super) {\r\n __extends(EnhancerArray, _super);\r\n function EnhancerArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, EnhancerArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(EnhancerArray, Symbol.species, {\r\n get: function () {\r\n return EnhancerArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n EnhancerArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n EnhancerArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return EnhancerArray;\r\n}(Array));\r\nfunction freezeDraftable(val) {\r\n return isDraftable(val) ? createNextState(val, function () {\r\n }) : val;\r\n}\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = process.env.NODE_ENV === \"production\";\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n if (condition) {\r\n return;\r\n }\r\n if (isProduction) {\r\n throw new Error(prefix);\r\n }\r\n throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n var stack = [], keys = [];\r\n if (!decycler)\r\n decycler = function (_, value) {\r\n if (stack[0] === value)\r\n return \"[Circular ~]\";\r\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n };\r\n return function (key, value) {\r\n if (stack.length > 0) {\r\n var thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value))\r\n value = decycler.call(this, key, value);\r\n }\r\n else\r\n stack.push(value);\r\n return serializer == null ? value : serializer.call(this, key, value);\r\n };\r\n}\r\nfunction isImmutableDefault(value) {\r\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n return {\r\n detectMutations: function () {\r\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n }\r\n };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path) {\r\n if (ignorePaths === void 0) { ignorePaths = []; }\r\n if (path === void 0) { path = \"\"; }\r\n var tracked = { value: obj };\r\n if (!isImmutable(obj)) {\r\n tracked.children = {};\r\n for (var key in obj) {\r\n var childPath = path ? path + \".\" + key : key;\r\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n continue;\r\n }\r\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n }\r\n }\r\n return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n if (sameParentRef === void 0) { sameParentRef = false; }\r\n if (path === void 0) { path = \"\"; }\r\n var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n var sameRef = prevObj === obj;\r\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n return { wasMutated: true, path: path };\r\n }\r\n if (isImmutable(prevObj) || isImmutable(obj)) {\r\n return { wasMutated: false };\r\n }\r\n var keysToDetect = {};\r\n for (var key in trackedProperty.children) {\r\n keysToDetect[key] = true;\r\n }\r\n for (var key in obj) {\r\n keysToDetect[key] = true;\r\n }\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_1 = function (key) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\r\n if (result.wasMutated) {\r\n return { value: result };\r\n }\r\n };\r\n for (var key in keysToDetect) {\r\n var state_1 = _loop_1(key);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n ignoredPaths = ignoredPaths || ignore;\r\n var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n return function (_c) {\r\n var getState = _c.getState;\r\n var state = getState();\r\n var tracker = track(state);\r\n var result;\r\n return function (next) { return function (action) {\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n var dispatchedAction = next(action);\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n measureUtils.warnIfExceeded();\r\n return dispatchedAction;\r\n }; };\r\n };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n var type = typeof val;\r\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {\r\n if (path === void 0) { path = \"\"; }\r\n if (isSerializable === void 0) { isSerializable = isPlain; }\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n var foundNestedSerializable;\r\n if (!isSerializable(value)) {\r\n return {\r\n keyPath: path || \"<root>\",\r\n value: value\r\n };\r\n }\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n if (cache == null ? void 0 : cache.has(value))\r\n return false;\r\n var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_2 = function (key, nestedValue) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n if (!isSerializable(nestedValue)) {\r\n return { value: {\r\n keyPath: nestedPath,\r\n value: nestedValue\r\n } };\r\n }\r\n if (typeof nestedValue === \"object\") {\r\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundNestedSerializable) {\r\n return { value: foundNestedSerializable };\r\n }\r\n }\r\n };\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n var state_2 = _loop_2(key, nestedValue);\r\n if (typeof state_2 === \"object\")\r\n return state_2.value;\r\n }\r\n if (cache && isNestedFrozen(value))\r\n cache.add(value);\r\n return false;\r\n}\r\nfunction isNestedFrozen(value) {\r\n if (!Object.isFrozen(value))\r\n return false;\r\n for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {\r\n var nestedValue = _c[_i];\r\n if (typeof nestedValue !== \"object\" || nestedValue === null)\r\n continue;\r\n if (!isNestedFrozen(nestedValue))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k;\r\n var cache = !disableCache && WeakSet ? new WeakSet() : void 0;\r\n return function (storeAPI) { return function (next) { return function (action) {\r\n var result = next(action);\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\r\n measureUtils.measureTime(function () {\r\n var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\r\n if (foundActionNonSerializableValue) {\r\n var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n }\r\n });\r\n }\r\n if (!ignoreState) {\r\n measureUtils.measureTime(function () {\r\n var state = storeAPI.getState();\r\n var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundStateNonSerializableValue) {\r\n var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n }\r\n });\r\n measureUtils.warnIfExceeded();\r\n }\r\n return result;\r\n }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options);\r\n };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;\r\n var middlewareArray = new MiddlewareArray();\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware);\r\n }\r\n else {\r\n middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\r\n }\r\n }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (immutableCheck) {\r\n var immutableOptions = {};\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck;\r\n }\r\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n }\r\n if (serializableCheck) {\r\n var serializableOptions = {};\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck;\r\n }\r\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n }\r\n }\r\n return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\r\nfunction configureStore(options) {\r\n var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n var rootReducer;\r\n if (typeof reducer === \"function\") {\r\n rootReducer = reducer;\r\n }\r\n else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer);\r\n }\r\n else {\r\n throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n }\r\n var finalMiddleware = middleware;\r\n if (typeof finalMiddleware === \"function\") {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n }\r\n }\r\n if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n throw new Error(\"each middleware provided to configureStore must be a function\");\r\n }\r\n var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\r\n var finalCompose = compose2;\r\n if (devTools) {\r\n finalCompose = composeWithDevTools(__spreadValues({\r\n trace: !IS_PRODUCTION\r\n }, typeof devTools === \"object\" && devTools));\r\n }\r\n var defaultEnhancers = new EnhancerArray(middlewareEnhancer);\r\n var storeEnhancers = defaultEnhancers;\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n }\r\n else if (typeof enhancers === \"function\") {\r\n storeEnhancers = enhancers(defaultEnhancers);\r\n }\r\n var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n return createStore(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n function actionCreator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (prepareAction) {\r\n var prepared = prepareAction.apply(void 0, args);\r\n if (!prepared) {\r\n throw new Error(\"prepareAction did not return an object\");\r\n }\r\n return __spreadValues(__spreadValues({\r\n type: type,\r\n payload: prepared.payload\r\n }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n }\r\n return { type: type, payload: args[0] };\r\n }\r\n actionCreator.toString = function () { return \"\" + type; };\r\n actionCreator.type = type;\r\n actionCreator.match = function (action) { return action.type === type; };\r\n return actionCreator;\r\n}\r\nfunction isAction(action) {\r\n return isPlainObject(action) && \"type\" in action;\r\n}\r\nfunction isFSA(action) {\r\n return isAction(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n return \"\" + actionCreator;\r\n}\r\n// src/createReducer.ts\r\nimport createNextState2, { isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n var actionsMap = {};\r\n var actionMatchers = [];\r\n var defaultCaseReducer;\r\n var builder = {\r\n addCase: function (typeOrActionCreator, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n if (type in actionsMap) {\r\n throw new Error(\"addCase cannot be called with two reducers for the same action type\");\r\n }\r\n actionsMap[type] = reducer;\r\n return builder;\r\n },\r\n addMatcher: function (matcher, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n return builder;\r\n },\r\n addDefaultCase: function (reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n }\r\n }\r\n defaultCaseReducer = reducer;\r\n return builder;\r\n }\r\n };\r\n builderCallback(builder);\r\n return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n return typeof x === \"function\";\r\n}\r\nvar hasWarnedAboutObjectNotation = false;\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n if (actionMatchers === void 0) { actionMatchers = []; }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof mapOrBuilderCallback === \"object\") {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true;\r\n console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\r\n }\r\n }\r\n }\r\n var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n var getInitialState;\r\n if (isStateFunction(initialState)) {\r\n getInitialState = function () { return freezeDraftable(initialState()); };\r\n }\r\n else {\r\n var frozenInitialState_1 = freezeDraftable(initialState);\r\n getInitialState = function () { return frozenInitialState_1; };\r\n }\r\n function reducer(state, action) {\r\n if (state === void 0) { state = getInitialState(); }\r\n var caseReducers = __spreadArray([\r\n actionsMap[action.type]\r\n ], finalActionMatchers.filter(function (_c) {\r\n var matcher = _c.matcher;\r\n return matcher(action);\r\n }).map(function (_c) {\r\n var reducer2 = _c.reducer;\r\n return reducer2;\r\n }));\r\n if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer];\r\n }\r\n return caseReducers.reduce(function (previousState, caseReducer) {\r\n if (caseReducer) {\r\n if (isDraft2(previousState)) {\r\n var draft = previousState;\r\n var result = caseReducer(draft, action);\r\n if (result === void 0) {\r\n return previousState;\r\n }\r\n return result;\r\n }\r\n else if (!isDraftable2(previousState)) {\r\n var result = caseReducer(previousState, action);\r\n if (result === void 0) {\r\n if (previousState === null) {\r\n return previousState;\r\n }\r\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n }\r\n return result;\r\n }\r\n else {\r\n return createNextState2(previousState, function (draft) {\r\n return caseReducer(draft, action);\r\n });\r\n }\r\n }\r\n return previousState;\r\n }, state);\r\n }\r\n reducer.getInitialState = getInitialState;\r\n return reducer;\r\n}\r\n// src/createSlice.ts\r\nvar hasWarnedAboutObjectNotation2 = false;\r\nfunction getType2(slice, actionKey) {\r\n return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n var name = options.name;\r\n if (!name) {\r\n throw new Error(\"`name` is a required option for createSlice\");\r\n }\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n if (options.initialState === void 0) {\r\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\r\n }\r\n }\r\n var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\r\n var reducers = options.reducers || {};\r\n var reducerNames = Object.keys(reducers);\r\n var sliceCaseReducersByName = {};\r\n var sliceCaseReducersByType = {};\r\n var actionCreators = {};\r\n reducerNames.forEach(function (reducerName) {\r\n var maybeReducerWithPrepare = reducers[reducerName];\r\n var type = getType2(name, reducerName);\r\n var caseReducer;\r\n var prepareCallback;\r\n if (\"reducer\" in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer;\r\n prepareCallback = maybeReducerWithPrepare.prepare;\r\n }\r\n else {\r\n caseReducer = maybeReducerWithPrepare;\r\n }\r\n sliceCaseReducersByName[reducerName] = caseReducer;\r\n sliceCaseReducersByType[type] = caseReducer;\r\n actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n });\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof options.extraReducers === \"object\") {\r\n if (!hasWarnedAboutObjectNotation2) {\r\n hasWarnedAboutObjectNotation2 = true;\r\n console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\r\n }\r\n }\r\n }\r\n var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n return createReducer(initialState, function (builder) {\r\n for (var key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key]);\r\n }\r\n for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\r\n var m = actionMatchers_1[_i];\r\n builder.addMatcher(m.matcher, m.reducer);\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer);\r\n }\r\n });\r\n }\r\n var _reducer;\r\n return {\r\n name: name,\r\n reducer: function (state, action) {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer(state, action);\r\n },\r\n actions: actionCreators,\r\n caseReducers: sliceCaseReducersByName,\r\n getInitialState: function () {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer.getInitialState();\r\n }\r\n };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n return {\r\n ids: [],\r\n entities: {}\r\n };\r\n}\r\nfunction createInitialStateFactory() {\r\n function getInitialState(additionalState) {\r\n if (additionalState === void 0) { additionalState = {}; }\r\n return Object.assign(getInitialEntityState(), additionalState);\r\n }\r\n return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n function getSelectors(selectState) {\r\n var selectIds = function (state) { return state.ids; };\r\n var selectEntities = function (state) { return state.entities; };\r\n var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n var selectId = function (_, id) { return id; };\r\n var selectById = function (entities, id) { return entities[id]; };\r\n var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n if (!selectState) {\r\n return {\r\n selectIds: selectIds,\r\n selectEntities: selectEntities,\r\n selectAll: selectAll,\r\n selectTotal: selectTotal,\r\n selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n };\r\n }\r\n var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n return {\r\n selectIds: createDraftSafeSelector(selectState, selectIds),\r\n selectEntities: selectGlobalizedEntities,\r\n selectAll: createDraftSafeSelector(selectState, selectAll),\r\n selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n };\r\n }\r\n return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nimport createNextState3, { isDraft as isDraft3 } from \"immer\";\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n return function operation(state) {\r\n return operator(state, void 0);\r\n };\r\n}\r\nfunction createStateOperator(mutator) {\r\n return function operation(state, arg) {\r\n function isPayloadActionArgument(arg2) {\r\n return isFSA(arg2);\r\n }\r\n var runMutator = function (draft) {\r\n if (isPayloadActionArgument(arg)) {\r\n mutator(arg.payload, draft);\r\n }\r\n else {\r\n mutator(arg, draft);\r\n }\r\n };\r\n if (isDraft3(state)) {\r\n runMutator(state);\r\n return state;\r\n }\r\n else {\r\n return createNextState3(state, runMutator);\r\n }\r\n };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n var key = selectId(entity);\r\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\r\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n }\r\n return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n if (!Array.isArray(entities)) {\r\n entities = Object.values(entities);\r\n }\r\n return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var added = [];\r\n var updated = [];\r\n for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n var entity = newEntities_1[_i];\r\n var id = selectIdValue(entity, selectId);\r\n if (id in state.entities) {\r\n updated.push({ id: id, changes: entity });\r\n }\r\n else {\r\n added.push(entity);\r\n }\r\n }\r\n return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n function addOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (key in state.entities) {\r\n return;\r\n }\r\n state.ids.push(key);\r\n state.entities[key] = entity;\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n var entity = newEntities_2[_i];\r\n addOneMutably(entity, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (!(key in state.entities)) {\r\n state.ids.push(key);\r\n }\r\n state.entities[key] = entity;\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n var entity = newEntities_3[_i];\r\n setOneMutably(entity, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.ids = [];\r\n state.entities = {};\r\n addManyMutably(newEntities, state);\r\n }\r\n function removeOneMutably(key, state) {\r\n return removeManyMutably([key], state);\r\n }\r\n function removeManyMutably(keys, state) {\r\n var didMutate = false;\r\n keys.forEach(function (key) {\r\n if (key in state.entities) {\r\n delete state.entities[key];\r\n didMutate = true;\r\n }\r\n });\r\n if (didMutate) {\r\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n }\r\n }\r\n function removeAllMutably(state) {\r\n Object.assign(state, {\r\n ids: [],\r\n entities: {}\r\n });\r\n }\r\n function takeNewKey(keys, update, state) {\r\n var original2 = state.entities[update.id];\r\n var updated = Object.assign({}, original2, update.changes);\r\n var newKey = selectIdValue(updated, selectId);\r\n var hasNewKey = newKey !== update.id;\r\n if (hasNewKey) {\r\n keys[update.id] = newKey;\r\n delete state.entities[update.id];\r\n }\r\n state.entities[newKey] = updated;\r\n return hasNewKey;\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var newKeys = {};\r\n var updatesPerEntity = {};\r\n updates.forEach(function (update) {\r\n if (update.id in state.entities) {\r\n updatesPerEntity[update.id] = {\r\n id: update.id,\r\n changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n };\r\n }\r\n });\r\n updates = Object.values(updatesPerEntity);\r\n var didMutateEntities = updates.length > 0;\r\n if (didMutateEntities) {\r\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n if (didMutateIds) {\r\n state.ids = Object.keys(state.entities);\r\n }\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n return {\r\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n addOne: createStateOperator(addOneMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n upsertMany: createStateOperator(upsertManyMutably),\r\n removeOne: createStateOperator(removeOneMutably),\r\n removeMany: createStateOperator(removeManyMutably)\r\n };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n function addOneMutably(entity, state) {\r\n return addManyMutably([entity], state);\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n if (models.length !== 0) {\r\n merge(models, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n return setManyMutably([entity], state);\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n if (newEntities.length !== 0) {\r\n merge(newEntities, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.entities = {};\r\n state.ids = [];\r\n addManyMutably(newEntities, state);\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var appliedUpdates = false;\r\n for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\r\n var update = updates_1[_i];\r\n var entity = state.entities[update.id];\r\n if (!entity) {\r\n continue;\r\n }\r\n appliedUpdates = true;\r\n Object.assign(entity, update.changes);\r\n var newId = selectId(entity);\r\n if (update.id !== newId) {\r\n delete state.entities[update.id];\r\n state.entities[newId] = entity;\r\n }\r\n }\r\n if (appliedUpdates) {\r\n resortEntities(state);\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n function areArraysEqual(a, b) {\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length && i < b.length; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n function merge(models, state) {\r\n models.forEach(function (model) {\r\n state.entities[selectId(model)] = model;\r\n });\r\n resortEntities(state);\r\n }\r\n function resortEntities(state) {\r\n var allEntities = Object.values(state.entities);\r\n allEntities.sort(sort);\r\n var newSortedIds = allEntities.map(selectId);\r\n var ids = state.ids;\r\n if (!areArraysEqual(ids, newSortedIds)) {\r\n state.ids = newSortedIds;\r\n }\r\n }\r\n return {\r\n removeOne: removeOne,\r\n removeMany: removeMany,\r\n removeAll: removeAll,\r\n addOne: createStateOperator(addOneMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertMany: createStateOperator(upsertManyMutably)\r\n };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = __spreadValues({\r\n sortComparer: false,\r\n selectId: function (instance) { return instance.id; }\r\n }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n var stateFactory = createInitialStateFactory();\r\n var selectorsFactory = createSelectorsFactory();\r\n var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n return __spreadValues(__spreadValues(__spreadValues({\r\n selectId: selectId,\r\n sortComparer: sortComparer\r\n }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n if (size === void 0) { size = 21; }\r\n var id = \"\";\r\n var i = size;\r\n while (i--) {\r\n id += urlAlphabet[Math.random() * 64 | 0];\r\n }\r\n return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n \"name\",\r\n \"message\",\r\n \"stack\",\r\n \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n function RejectWithValue(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n function FulfillWithMeta(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n var simpleError = {};\r\n for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n var property = commonProperties_1[_i];\r\n if (typeof value[property] === \"string\") {\r\n simpleError[property] = value[property];\r\n }\r\n }\r\n return simpleError;\r\n }\r\n return { message: String(value) };\r\n};\r\nvar createAsyncThunk = (function () {\r\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\r\n var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n payload: payload,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"fulfilled\"\r\n })\r\n }); });\r\n var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n payload: void 0,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"pending\"\r\n })\r\n }); });\r\n var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n payload: payload,\r\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: \"rejected\",\r\n aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n })\r\n }); });\r\n var displayedWarning = false;\r\n var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n function class_1() {\r\n this.signal = {\r\n aborted: false,\r\n addEventListener: function () {\r\n },\r\n dispatchEvent: function () {\r\n return false;\r\n },\r\n onabort: function () {\r\n },\r\n removeEventListener: function () {\r\n },\r\n reason: void 0,\r\n throwIfAborted: function () {\r\n }\r\n };\r\n }\r\n class_1.prototype.abort = function () {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (!displayedWarning) {\r\n displayedWarning = true;\r\n console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n }\r\n }\r\n };\r\n return class_1;\r\n }());\r\n function actionCreator(arg) {\r\n return function (dispatch, getState, extra) {\r\n var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n var abortController = new AC();\r\n var abortReason;\r\n var started = false;\r\n function abort(reason) {\r\n abortReason = reason;\r\n abortController.abort();\r\n }\r\n var promise2 = function () {\r\n return __async(this, null, function () {\r\n var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 4, , 5]);\r\n conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, conditionResult];\r\n case 1:\r\n conditionResult = _c.sent();\r\n _c.label = 2;\r\n case 2:\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n throw {\r\n name: \"ConditionError\",\r\n message: \"Aborted due to condition callback returning false.\"\r\n };\r\n }\r\n started = true;\r\n abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({\r\n name: \"AbortError\",\r\n message: abortReason || \"Aborted\"\r\n }); }); });\r\n dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n return [4 /*yield*/, Promise.race([\r\n abortedPromise,\r\n Promise.resolve(payloadCreator(arg, {\r\n dispatch: dispatch,\r\n getState: getState,\r\n extra: extra,\r\n requestId: requestId,\r\n signal: abortController.signal,\r\n abort: abort,\r\n rejectWithValue: function (value, meta) {\r\n return new RejectWithValue(value, meta);\r\n },\r\n fulfillWithValue: function (value, meta) {\r\n return new FulfillWithMeta(value, meta);\r\n }\r\n })).then(function (result) {\r\n if (result instanceof RejectWithValue) {\r\n throw result;\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta);\r\n }\r\n return fulfilled(result, requestId, arg);\r\n })\r\n ])];\r\n case 3:\r\n finalAction = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n err_1 = _c.sent();\r\n finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n return [3 /*break*/, 5];\r\n case 5:\r\n skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n if (!skipDispatch) {\r\n dispatch(finalAction);\r\n }\r\n return [2 /*return*/, finalAction];\r\n }\r\n });\r\n });\r\n }();\r\n return Object.assign(promise2, {\r\n abort: abort,\r\n requestId: requestId,\r\n arg: arg,\r\n unwrap: function () {\r\n return promise2.then(unwrapResult);\r\n }\r\n });\r\n };\r\n }\r\n return Object.assign(actionCreator, {\r\n pending: pending,\r\n rejected: rejected,\r\n fulfilled: fulfilled,\r\n typePrefix: typePrefix\r\n });\r\n }\r\n createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };\r\n return createAsyncThunk2;\r\n})();\r\nfunction unwrapResult(action) {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload;\r\n }\r\n if (action.error) {\r\n throw action.error;\r\n }\r\n return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n return v && typeof v.match === \"function\";\r\n};\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n if (hasMatchFunction(matcher)) {\r\n return matcher.match(action);\r\n }\r\n else {\r\n return matcher(action);\r\n }\r\n};\r\nfunction isAnyOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.some(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction isAllOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.every(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n if (!action || !action.meta)\r\n return false;\r\n var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isPending()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejected() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejected()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejectedWithValue() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n var hasFlag = function (action) {\r\n return action && action.meta && action.meta.rejectedWithValue;\r\n };\r\n if (asyncThunks.length === 0) {\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejectedWithValue()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isFulfilled() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isFulfilled()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isAsyncThunkAction() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isAsyncThunkAction()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = [];\r\n for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n var asyncThunk = asyncThunks_1[_i];\r\n matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n }\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\n// src/listenerMiddleware/utils.ts\r\nvar assertFunction = function (func, expected) {\r\n if (typeof func !== \"function\") {\r\n throw new TypeError(expected + \" is not a function\");\r\n }\r\n};\r\nvar noop = function () {\r\n};\r\nvar catchRejection = function (promise2, onError) {\r\n if (onError === void 0) { onError = noop; }\r\n promise2.catch(onError);\r\n return promise2;\r\n};\r\nvar addAbortSignalListener = function (abortSignal, callback) {\r\n abortSignal.addEventListener(\"abort\", callback, { once: true });\r\n return function () { return abortSignal.removeEventListener(\"abort\", callback); };\r\n};\r\nvar abortControllerWithReason = function (abortController, reason) {\r\n var signal = abortController.signal;\r\n if (signal.aborted) {\r\n return;\r\n }\r\n if (!(\"reason\" in signal)) {\r\n Object.defineProperty(signal, \"reason\", {\r\n enumerable: true,\r\n value: reason,\r\n configurable: true,\r\n writable: true\r\n });\r\n }\r\n ;\r\n abortController.abort(reason);\r\n};\r\n// src/listenerMiddleware/exceptions.ts\r\nvar task = \"task\";\r\nvar listener = \"listener\";\r\nvar completed = \"completed\";\r\nvar cancelled = \"cancelled\";\r\nvar taskCancelled = \"task-\" + cancelled;\r\nvar taskCompleted = \"task-\" + completed;\r\nvar listenerCancelled = listener + \"-\" + cancelled;\r\nvar listenerCompleted = listener + \"-\" + completed;\r\nvar TaskAbortError = /** @class */ (function () {\r\n function TaskAbortError(code) {\r\n this.code = code;\r\n this.name = \"TaskAbortError\";\r\n this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\r\n }\r\n return TaskAbortError;\r\n}());\r\n// src/listenerMiddleware/task.ts\r\nvar validateActive = function (signal) {\r\n if (signal.aborted) {\r\n throw new TaskAbortError(signal.reason);\r\n }\r\n};\r\nfunction raceWithSignal(signal, promise2) {\r\n var cleanup = noop;\r\n return new Promise(function (resolve, reject) {\r\n var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };\r\n if (signal.aborted) {\r\n notifyRejection();\r\n return;\r\n }\r\n cleanup = addAbortSignalListener(signal, notifyRejection);\r\n promise2.finally(function () { return cleanup(); }).then(resolve, reject);\r\n }).finally(function () {\r\n cleanup = noop;\r\n });\r\n}\r\nvar runTask = function (task2, cleanUp) { return __async(void 0, null, function () {\r\n var value, error_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 3, 4, 5]);\r\n return [4 /*yield*/, Promise.resolve()];\r\n case 1:\r\n _c.sent();\r\n return [4 /*yield*/, task2()];\r\n case 2:\r\n value = _c.sent();\r\n return [2 /*return*/, {\r\n status: \"ok\",\r\n value: value\r\n }];\r\n case 3:\r\n error_1 = _c.sent();\r\n return [2 /*return*/, {\r\n status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\r\n error: error_1\r\n }];\r\n case 4:\r\n cleanUp == null ? void 0 : cleanUp();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar createPause = function (signal) {\r\n return function (promise2) {\r\n return catchRejection(raceWithSignal(signal, promise2).then(function (output) {\r\n validateActive(signal);\r\n return output;\r\n }));\r\n };\r\n};\r\nvar createDelay = function (signal) {\r\n var pause = createPause(signal);\r\n return function (timeoutMs) {\r\n return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));\r\n };\r\n};\r\n// src/listenerMiddleware/index.ts\r\nvar assign = Object.assign;\r\nvar INTERNAL_NIL_TOKEN = {};\r\nvar alm = \"listenerMiddleware\";\r\nvar createFork = function (parentAbortSignal) {\r\n var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };\r\n return function (taskExecutor) {\r\n assertFunction(taskExecutor, \"taskExecutor\");\r\n var childAbortController = new AbortController();\r\n linkControllers(childAbortController);\r\n var result = runTask(function () { return __async(void 0, null, function () {\r\n var result2;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(parentAbortSignal);\r\n validateActive(childAbortController.signal);\r\n return [4 /*yield*/, taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal\r\n })];\r\n case 1:\r\n result2 = _c.sent();\r\n validateActive(childAbortController.signal);\r\n return [2 /*return*/, result2];\r\n }\r\n });\r\n }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });\r\n return {\r\n result: createPause(parentAbortSignal)(result),\r\n cancel: function () {\r\n abortControllerWithReason(childAbortController, taskCancelled);\r\n }\r\n };\r\n };\r\n};\r\nvar createTakePattern = function (startListening, signal) {\r\n var take = function (predicate, timeout) { return __async(void 0, null, function () {\r\n var unsubscribe, tuplePromise, promises, output;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(signal);\r\n unsubscribe = function () {\r\n };\r\n tuplePromise = new Promise(function (resolve, reject) {\r\n var stopListening = startListening({\r\n predicate: predicate,\r\n effect: function (action, listenerApi) {\r\n listenerApi.unsubscribe();\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState()\r\n ]);\r\n }\r\n });\r\n unsubscribe = function () {\r\n stopListening();\r\n reject();\r\n };\r\n });\r\n promises = [\r\n tuplePromise\r\n ];\r\n if (timeout != null) {\r\n promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));\r\n }\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))];\r\n case 2:\r\n output = _c.sent();\r\n validateActive(signal);\r\n return [2 /*return*/, output];\r\n case 3:\r\n unsubscribe();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };\r\n};\r\nvar getListenerEntryPropsFrom = function (options) {\r\n var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;\r\n if (type) {\r\n predicate = createAction(type).match;\r\n }\r\n else if (actionCreator) {\r\n type = actionCreator.type;\r\n predicate = actionCreator.match;\r\n }\r\n else if (matcher) {\r\n predicate = matcher;\r\n }\r\n else if (predicate) {\r\n }\r\n else {\r\n throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\r\n }\r\n assertFunction(effect, \"options.listener\");\r\n return { predicate: predicate, type: type, effect: effect };\r\n};\r\nvar createListenerEntry = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;\r\n var id = nanoid();\r\n var entry = {\r\n id: id,\r\n effect: effect,\r\n type: type,\r\n predicate: predicate,\r\n pending: new Set(),\r\n unsubscribe: function () {\r\n throw new Error(\"Unsubscribe not initialized\");\r\n }\r\n };\r\n return entry;\r\n};\r\nvar cancelActiveListeners = function (entry) {\r\n entry.pending.forEach(function (controller) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n });\r\n};\r\nvar createClearListenerMiddleware = function (listenerMap) {\r\n return function () {\r\n listenerMap.forEach(cancelActiveListeners);\r\n listenerMap.clear();\r\n };\r\n};\r\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\r\n try {\r\n errorHandler(errorToNotify, errorInfo);\r\n }\r\n catch (errorHandlerError) {\r\n setTimeout(function () {\r\n throw errorHandlerError;\r\n }, 0);\r\n }\r\n};\r\nvar addListener = createAction(alm + \"/add\");\r\nvar clearAllListeners = createAction(alm + \"/removeAll\");\r\nvar removeListener = createAction(alm + \"/remove\");\r\nvar defaultErrorHandler = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n console.error.apply(console, __spreadArray([alm + \"/error\"], args));\r\n};\r\nfunction createListenerMiddleware(middlewareOptions) {\r\n var _this = this;\r\n if (middlewareOptions === void 0) { middlewareOptions = {}; }\r\n var listenerMap = new Map();\r\n var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;\r\n assertFunction(onError, \"onError\");\r\n var insertEntry = function (entry) {\r\n entry.unsubscribe = function () { return listenerMap.delete(entry.id); };\r\n listenerMap.set(entry.id, entry);\r\n return function (cancelOptions) {\r\n entry.unsubscribe();\r\n if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n };\r\n };\r\n var findListenerEntry = function (comparator) {\r\n for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\r\n var entry = _c[_i];\r\n if (comparator(entry)) {\r\n return entry;\r\n }\r\n }\r\n return void 0;\r\n };\r\n var startListening = function (options) {\r\n var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });\r\n if (!entry) {\r\n entry = createListenerEntry(options);\r\n }\r\n return insertEntry(entry);\r\n };\r\n var stopListening = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;\r\n var entry = findListenerEntry(function (entry2) {\r\n var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\r\n return matchPredicateOrType && entry2.effect === effect;\r\n });\r\n if (entry) {\r\n entry.unsubscribe();\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n }\r\n return !!entry;\r\n };\r\n var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {\r\n var internalTaskController, take, listenerError_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalTaskController = new AbortController();\r\n take = createTakePattern(startListening, internalTaskController.signal);\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, 4, 5]);\r\n entry.pending.add(internalTaskController);\r\n return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\r\n getOriginalState: getOriginalState,\r\n condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },\r\n take: take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra: extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: function () {\r\n listenerMap.set(entry.id, entry);\r\n },\r\n cancelActiveListeners: function () {\r\n entry.pending.forEach(function (controller, _, set) {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n set.delete(controller);\r\n }\r\n });\r\n }\r\n })))];\r\n case 2:\r\n _c.sent();\r\n return [3 /*break*/, 5];\r\n case 3:\r\n listenerError_1 = _c.sent();\r\n if (!(listenerError_1 instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError_1, {\r\n raisedBy: \"effect\"\r\n });\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n abortControllerWithReason(internalTaskController, listenerCompleted);\r\n entry.pending.delete(internalTaskController);\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\r\n var middleware = function (api) { return function (next) { return function (action) {\r\n if (!isAction(action)) {\r\n return next(action);\r\n }\r\n if (addListener.match(action)) {\r\n return startListening(action.payload);\r\n }\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware();\r\n return;\r\n }\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload);\r\n }\r\n var originalState = api.getState();\r\n var getOriginalState = function () {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(alm + \": getOriginalState can only be called synchronously\");\r\n }\r\n return originalState;\r\n };\r\n var result;\r\n try {\r\n result = next(action);\r\n if (listenerMap.size > 0) {\r\n var currentState = api.getState();\r\n var listenerEntries = Array.from(listenerMap.values());\r\n for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\r\n var entry = listenerEntries_1[_i];\r\n var runListener = false;\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState);\r\n }\r\n catch (predicateError) {\r\n runListener = false;\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: \"predicate\"\r\n });\r\n }\r\n if (!runListener) {\r\n continue;\r\n }\r\n notifyListener(entry, action, api, getOriginalState);\r\n }\r\n }\r\n }\r\n finally {\r\n originalState = INTERNAL_NIL_TOKEN;\r\n }\r\n return result;\r\n }; }; };\r\n return {\r\n middleware: middleware,\r\n startListening: startListening,\r\n stopListening: stopListening,\r\n clearListeners: clearListenerMiddleware\r\n };\r\n}\r\n// src/autoBatchEnhancer.ts\r\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\r\nvar prepareAutoBatched = function () { return function (payload) {\r\n var _c;\r\n return ({\r\n payload: payload,\r\n meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\r\n });\r\n}; };\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n throw err;\r\n}, 0); }); };\r\nvar createQueueWithTimer = function (timeout) {\r\n return function (notify) {\r\n setTimeout(notify, timeout);\r\n };\r\n};\r\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\r\nvar autoBatchEnhancer = function (options) {\r\n if (options === void 0) { options = { type: \"raf\" }; }\r\n return function (next) { return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var store = next.apply(void 0, args);\r\n var notifying = true;\r\n var shouldNotifyAtEndOfTick = false;\r\n var notificationQueued = false;\r\n var listeners = new Set();\r\n var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\r\n var notifyListeners = function () {\r\n notificationQueued = false;\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false;\r\n listeners.forEach(function (l) { return l(); });\r\n }\r\n };\r\n return Object.assign({}, store, {\r\n subscribe: function (listener2) {\r\n var wrappedListener = function () { return notifying && listener2(); };\r\n var unsubscribe = store.subscribe(wrappedListener);\r\n listeners.add(listener2);\r\n return function () {\r\n unsubscribe();\r\n listeners.delete(listener2);\r\n };\r\n },\r\n dispatch: function (action) {\r\n var _a;\r\n try {\r\n notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\r\n shouldNotifyAtEndOfTick = !notifying;\r\n if (shouldNotifyAtEndOfTick) {\r\n if (!notificationQueued) {\r\n notificationQueued = true;\r\n queueCallback(notifyListeners);\r\n }\r\n }\r\n return store.dispatch(action);\r\n }\r\n finally {\r\n notifying = true;\r\n }\r\n }\r\n });\r\n }; };\r\n};\r\n// src/index.ts\r\nenableES5();\r\nexport { EnhancerArray, MiddlewareArray, SHOULD_AUTOBATCH, TaskAbortError, addListener, autoBatchEnhancer, clearAllListeners, configureStore, createAction, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, createListenerMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAction, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFSA as isFluxStandardAction, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, prepareAutoBatched, removeListener, unwrapResult };\r\n//# sourceMappingURL=redux-toolkit.esm.js.map","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCoop = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 183 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Variant=Coop Green\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"layer\",\n d: \"M156.933 43.5162C149.832 43.5162 146.951 38.1727 146.951 32.2355C146.951 26.1994 149.881 20.8559 156.933 20.8559C164.035 20.8559 166.915 26.1994 166.915 32.2355C166.965 38.1727 164.035 43.5162 156.933 43.5162V43.5162ZM107.966 43.5162C100.864 43.5162 97.984 38.1727 97.984 32.2355C97.984 26.1994 100.914 20.8559 107.966 20.8559C115.068 20.8559 117.948 26.1994 117.948 32.2355C117.948 38.1727 115.068 43.5162 107.966 43.5162ZM61.7304 43.5162C54.6287 43.5162 51.7483 38.1727 51.7483 32.2355C51.7483 26.1994 54.6287 20.8559 61.7304 20.8559C68.8322 20.8559 71.7126 26.1994 71.7126 32.2355C71.7126 38.1727 68.8322 43.5162 61.7304 43.5162ZM156.933 11.0596C145.312 11.0596 135.876 15.9083 132.45 24.5667C129.023 15.9083 119.587 11.0596 107.966 11.0596C97.6364 11.0596 89.0448 14.8693 84.8235 21.796C80.6518 14.9187 72.0602 11.0596 61.7304 11.0596C47.0303 11.0596 35.8066 18.8274 35.8066 32.1861C35.8066 35.5505 36.5019 38.5685 37.8428 41.1908C37.6938 41.2403 37.4951 41.3392 37.3462 41.3887C36.7005 41.6361 35.9556 41.8835 35.161 42.1308C33.1249 42.6751 30.8404 42.972 28.5559 42.972C21.9011 42.972 15.892 38.8159 15.892 32.384C15.892 25.4078 21.0072 21.2517 27.662 21.2517C30.1948 21.3012 32.1813 21.4496 34.1678 22.1423C34.1678 22.1423 36.4522 17.1452 40.3259 14.2755C39.581 13.9292 38.7864 13.5829 37.9918 13.2365C34.5154 11.7522 30.4431 11.0596 25.8741 11.0596C11.1741 11.0596 0 18.8274 0 32.1861C0 45.4953 11.1741 53.2631 25.8741 53.2631C29.7478 53.2631 34.0684 52.7188 37.7931 51.6798C39.1837 51.3335 42.4614 50.245 44.8452 48.8597C49.3148 51.7293 55.175 53.2631 61.7304 53.2631C72.0602 53.2631 80.6518 49.4534 84.8731 42.5267C89.0944 49.4039 97.686 53.2631 108.016 53.2631C118.346 53.2631 126.888 49.4534 131.109 42.5761V63.9995H146.902V51.8777C149.981 52.7683 153.358 53.2631 156.983 53.2631C171.683 53.2631 182.857 45.5447 182.857 32.1861C182.857 18.8274 171.633 11.0596 156.933 11.0596Z\"\n }))));\n};\nexport default SvgCoop;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgFacebookmono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Brand=facebook, monochrome=True\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M16.7473 6.0625H14.4626C13.7323 6.0625 13.1848 6.36175 13.1848 7.11819V8.4375H16.7473L16.4647 12H13.1848V21.5H9.62231V12H7.24731V8.4375H9.62231V6.15394C9.62231 3.75281 10.8858 2.5 13.7323 2.5H16.7473V6.0625Z\"\n }))));\n};\nexport default SvgFacebookmono;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgXmono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 1200 1227\",\n xmlns: \"http://www.w3.org/2000/svg\",\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: \"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n })));\n};\nexport default SvgXmono;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgArrowLeft = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.7071 4.2924C10.3166 3.90188 9.68342 3.90188 9.29289 4.2924L2.29289 11.2924C1.90237 11.6829 1.90237 12.3161 2.29289 12.7066L9.29289 19.7066C9.68342 20.0971 10.3166 20.0971 10.7071 19.7066C11.0976 19.3161 11.0976 18.6829 10.7071 18.2924L5.41421 12.9995L16 12.9995C18.2091 12.9995 20 14.7904 20 16.9995C20 17.5518 20.4477 17.9995 21 17.9995C21.5523 17.9995 22 17.5518 22 16.9995C22 13.6858 19.3137 10.9995 16 10.9995L5.41421 10.9995L10.7071 5.70662C11.0976 5.31609 11.0976 4.68293 10.7071 4.2924Z\"\n })));\n};\nexport default SvgArrowLeft;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgBag1 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.514 2.14266C9.98758 2.42681 10.1411 3.04107 9.857 3.51465L7.7657 7.00015H16.2333L14.142 3.51465C13.8579 3.04107 14.0114 2.42681 14.485 2.14266C14.9586 1.85851 15.5729 2.01208 15.857 2.48566L18.5657 7.00015H20.7187C22.0199 7.00015 22.9746 8.22293 22.659 9.48522L20.159 19.4852C19.9364 20.3756 19.1365 21.0002 18.2187 21.0002H5.78028C4.86255 21.0002 4.06258 20.3756 3.84 19.4852L1.34 9.48522C1.02442 8.22293 1.97914 7.00015 3.28028 7.00015H5.43332L8.14201 2.48566C8.42616 2.01208 9.04042 1.85851 9.514 2.14266ZM5.98117 9.00015H3.28028L5.78028 19.0002H18.2187L20.7187 9.00015H18.0178C18.0062 9.00035 17.9946 9.00035 17.9831 9.00015H6.01595C6.00437 9.00035 5.99277 9.00035 5.98117 9.00015Z\"\n })));\n};\nexport default SvgBag1;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCheckmark = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.7071 6.2924C21.0976 6.68293 21.0976 7.31609 20.7071 7.70662L10.7071 17.7066C10.3166 18.0971 9.68342 18.0971 9.29289 17.7066L4.29289 12.7066C3.90237 12.3161 3.90237 11.6829 4.29289 11.2924C4.68342 10.9019 5.31658 10.9019 5.70711 11.2924L10 15.5853L19.2929 6.2924C19.6834 5.90188 20.3166 5.90188 20.7071 6.2924Z\"\n })));\n};\nexport default SvgCheckmark;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChevronDown = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.7071 8.29289C20.0976 8.68342 20.0976 9.31658 19.7071 9.70711L12.7071 16.7071C12.3166 17.0976 11.6834 17.0976 11.2929 16.7071L4.29289 9.70711C3.90237 9.31658 3.90237 8.68342 4.29289 8.29289C4.68342 7.90237 5.31658 7.90237 5.70711 8.29289L12 14.5858L18.2929 8.29289C18.6834 7.90237 19.3166 7.90237 19.7071 8.29289Z\"\n })));\n};\nexport default SvgChevronDown;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChevronLeft = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.7071 20.2071C15.3166 20.5976 14.6834 20.5976 14.2929 20.2071L7.29289 13.2071C6.90237 12.8166 6.90237 12.1834 7.29289 11.7929L14.2929 4.79289C14.6834 4.40237 15.3166 4.40237 15.7071 4.79289C16.0976 5.18342 16.0976 5.81658 15.7071 6.20711L9.41421 12.5L15.7071 18.7929C16.0976 19.1834 16.0976 19.8166 15.7071 20.2071Z\"\n })));\n};\nexport default SvgChevronLeft;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChevronRight = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.29289 4.79289C8.68342 4.40237 9.31658 4.40237 9.70711 4.79289L16.7071 11.7929C17.0976 12.1834 17.0976 12.8166 16.7071 13.2071L9.70711 20.2071C9.31658 20.5976 8.68342 20.5976 8.29289 20.2071C7.90237 19.8166 7.90237 19.1834 8.29289 18.7929L14.5858 12.5L8.29289 6.20711C7.90237 5.81658 7.90237 5.18342 8.29289 4.79289Z\"\n })));\n};\nexport default SvgChevronRight;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChevronUp = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.29289 15.7071C3.90237 15.3166 3.90237 14.6834 4.29289 14.2929L11.2929 7.29289C11.6834 6.90237 12.3166 6.90237 12.7071 7.29289L19.7071 14.2929C20.0976 14.6834 20.0976 15.3166 19.7071 15.7071C19.3166 16.0976 18.6834 16.0976 18.2929 15.7071L12 9.41421L5.70711 15.7071C5.31658 16.0976 4.68342 16.0976 4.29289 15.7071Z\"\n })));\n};\nexport default SvgChevronUp;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgClock = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\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: \"M11 5C11 4.44772 11.4477 4 12 4C12.5523 4 13 4.44772 13 5V12.3343C13 12.6687 12.8328 12.981 12.5545 13.1664L8.55451 15.8318C8.09491 16.138 7.47407 16.0137 7.16782 15.5541C6.86158 15.0945 6.98589 14.4737 7.44549 14.1674L11 11.7989V5Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z\"\n })));\n};\nexport default SvgClock;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgClose = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.29289 4.2924C4.68342 3.90188 5.31658 3.90188 5.70711 4.2924L12 10.5853L18.2929 4.2924C18.6834 3.90188 19.3166 3.90188 19.7071 4.2924C20.0976 4.68293 20.0976 5.31609 19.7071 5.70662L13.4142 11.9995L19.7071 18.2924C20.0976 18.6829 20.0976 19.3161 19.7071 19.7066C19.3166 20.0971 18.6834 20.0971 18.2929 19.7066L12 13.4137L5.70711 19.7066C5.31658 20.0971 4.68342 20.0971 4.29289 19.7066C3.90237 19.3161 3.90237 18.6829 4.29289 18.2924L10.5858 11.9995L4.29289 5.70662C3.90237 5.31609 3.90237 4.68293 4.29289 4.2924Z\"\n })));\n};\nexport default SvgClose;","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgEcoLeaf = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.2692 1.08205C14.5548 1.20547 14.7666 1.45479 14.8424 1.75656L15.4684 4.25076C15.8342 5.63528 16.549 6.5075 17.4 7.54575C17.5636 7.74543 17.7323 7.95125 17.9045 8.16804C18.9782 9.51971 19.9885 11.118 19.9885 13.856C19.9885 15.9399 19.209 17.7608 17.7315 19.0484C16.2672 20.3245 14.2077 21 11.7661 21C8.80306 21 6.50337 19.6423 5.20213 17.5526C3.91451 15.4848 3.65857 12.7918 4.55383 10.1762C5.45892 7.53182 7.7419 5.25799 9.66346 3.69933C10.6427 2.90499 11.5675 2.26533 12.2476 1.82402C12.5882 1.603 12.8688 1.43081 13.0659 1.31292C13.1646 1.25396 13.2424 1.20852 13.2965 1.17728C13.3236 1.16166 13.3448 1.14959 13.3597 1.14115L13.3772 1.13122L13.3824 1.12832L13.3841 1.12739C13.3841 1.12739 13.3851 1.1268 13.8725 2L13.3851 1.1268C13.6568 0.975169 13.9836 0.958627 14.2692 1.08205ZM13.235 3.56781C12.6093 3.97769 11.7873 4.5518 10.9234 5.25259C9.06347 6.76124 7.16019 8.73741 6.44606 10.8238C5.7221 12.939 5.96617 14.996 6.89988 16.4954C7.81998 17.9731 9.46297 19 11.7661 19C13.8504 19 15.4021 18.4255 16.4175 17.5406C17.4198 16.6672 17.9885 15.4161 17.9885 13.856C17.9885 11.7379 17.2575 10.569 16.3385 9.41203C16.2006 9.23849 16.0542 9.06131 15.9028 8.87824C15.0398 7.83419 14.0184 6.59854 13.5329 4.7546L13.53 4.74346L13.235 3.56781Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 7C12.5522 7 13 7.44772 13 8V22C13 22.5523 12.5522 23 12 23C11.4477 23 11 22.5523 11 22V8C11 7.44772 11.4477 7 12 7Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.64246 10.4855C8.92661 10.0119 9.54087 9.85836 10.0144 10.1425L12 11.3338L13.9855 10.1425C14.459 9.85836 15.0733 10.0119 15.3574 10.4855C15.6416 10.9591 15.488 11.5733 15.0144 11.8575L12.5144 13.3575C12.1978 13.5475 11.8021 13.5475 11.4855 13.3575L8.98546 11.8575C8.51187 11.5733 8.35831 10.9591 8.64246 10.4855Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.1679 14.4453C8.47425 13.9858 9.09512 13.8616 9.55465 14.168L12 15.7982L14.4453 14.168C14.9048 13.8616 15.5256 13.9858 15.832 14.4453C16.1384 14.9048 16.0142 15.5257 15.5547 15.8321L12.5547 17.8321C12.2188 18.056 11.7812 18.056 11.4453 17.8321L8.44525 15.8321C7.98572 15.5257 7.86155 14.9048 8.1679 14.4453Z\"\n })));\n};\nexport default SvgEcoLeaf;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgEmail = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1 5C1 4.44772 1.44772 4 2 4H22C22.5523 4 23 4.44772 23 5V16.4706C23 18.9582 21.0086 21 18.5217 21H5.47826C2.99139 21 1 18.9582 1 16.4706V5ZM4.60606 6L12 12.6542L19.3939 6H4.60606ZM21 7.24528L12.6689 14.7428C12.2886 15.0851 11.7114 15.0851 11.3311 14.7428L3 7.24528V16.4706C3 17.8812 4.12339 19 5.47826 19H18.5217C19.8766 19 21 17.8812 21 16.4706V7.24528Z\"\n })));\n};\nexport default SvgEmail;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgExternalLink = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.2929 0.292893C14.6834 -0.0976311 15.3166 -0.0976311 15.7071 0.292893L22.7071 7.29289C23.0976 7.68342 23.0976 8.31658 22.7071 8.70711L15.7071 15.7071C15.3166 16.0976 14.6834 16.0976 14.2929 15.7071C13.9024 15.3166 13.9024 14.6834 14.2929 14.2929L19.5858 9L13 9C10.7909 9 9 10.7909 9 13V16C9 16.5523 8.55228 17 8 17C7.44772 17 7 16.5523 7 16V13C7 9.68629 9.68629 7 13 7L19.5858 7L14.2929 1.70711C13.9024 1.31658 13.9024 0.683417 14.2929 0.292893ZM2 3C2 2.44772 2.44772 2 3 2H9C9.55228 2 10 2.44772 10 3C10 3.55228 9.55228 4 9 4H4V20H20V15.5C20 14.9477 20.4477 14.5 21 14.5C21.5523 14.5 22 14.9477 22 15.5V21C22 21.5523 21.5523 22 21 22H3C2.44772 22 2 21.5523 2 21V3Z\"\n })));\n};\nexport default SvgExternalLink;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgHeartFilled = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\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: \"M12 22C11.8 22 11.7 22 11.5 21.9C11.4 21.8 8 19.8 5.5 17.6C2.5 14.8 1 12 1 9.2C1 5.8 3.8 3 7.3 3C9.1 3 10.8 3.8 12 5.1C13.2 3.8 14.9 3 16.7 3C20.2 3 23 5.8 23 9.2C23 12.2 21.6 14.8 18.5 17.6C16 19.8 12.7 21.8 12.5 21.9C12.4 22 12.2 22 12 22Z\"\n })));\n};\nexport default SvgHeartFilled;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgHeart = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\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: \"M12 22C11.8 22 11.7 22 11.5 21.9C11.4 21.8 8 19.8 5.5 17.6C2.5 14.8 1 12 1 9.2C1 5.8 3.8 3 7.3 3C9.1 3 10.8 3.8 12 5.1C13.2 3.8 14.9 3 16.7 3C20.2 3 23 5.8 23 9.2C23 12.2 21.6 14.8 18.5 17.6C16 19.8 12.7 21.8 12.5 21.9C12.4 22 12.2 22 12 22ZM7.3 5C4.9 5 3 6.9 3 9.2C3 11.4 4.3 13.8 6.8 16.1C8.6 17.7 10.9 19.2 12 19.9C13 19.3 15.4 17.7 17.2 16.1C19.8 13.8 21 11.6 21 9.2C21 6.9 19.1 5 16.7 5C15.1 5 13.6 5.9 12.9 7.3C12.6 7.9 11.5 7.9 11.1 7.3C10.4 5.9 8.9 5 7.3 5Z\"\n })));\n};\nexport default SvgHeart;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgHome = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.82896 3.10508C5.16774 2.42752 5.86027 1.99951 6.61781 1.99951H17.3817C18.1393 1.99951 18.8318 2.42752 19.1706 3.10508L22.1706 9.10508C22.7378 10.2395 22.1174 11.5449 20.9998 11.9039V20.9995C20.9998 21.5518 20.5521 21.9995 19.9998 21.9995H3.99978C3.4475 21.9995 2.99978 21.5518 2.99978 20.9995V11.9039C1.88217 11.5449 1.26173 10.2395 1.82896 9.10508L4.82896 3.10508ZM4.99978 11.9995V19.9995H6.99978V14.9995C6.99978 14.4472 7.4475 13.9995 7.99978 13.9995H15.9998C16.5521 13.9995 16.9998 14.4472 16.9998 14.9995V19.9995H18.9998V11.9995H4.99978ZM14.9998 19.9995V15.9995H12.9998V19.9995H14.9998ZM10.9998 19.9995V15.9995H8.99978V19.9995H10.9998ZM17.3817 3.99951H6.61782L3.61781 9.99951H20.3817L17.3817 3.99951Z\"\n })));\n};\nexport default SvgHome;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgInfo1 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 2.99951C7.02944 2.99951 3 7.02895 3 11.9995C3 16.9701 7.02944 20.9995 12 20.9995C16.9706 20.9995 21 16.9701 21 11.9995C21 7.02895 16.9706 2.99951 12 2.99951ZM1 11.9995C1 5.92438 5.92487 0.999512 12 0.999512C18.0751 0.999512 23 5.92438 23 11.9995C23 18.0746 18.0751 22.9995 12 22.9995C5.92487 22.9995 1 18.0746 1 11.9995ZM9 9.99951C9 9.44723 9.44772 8.99951 10 8.99951H12C12.5523 8.99951 13 9.44723 13 9.99951V15.9995H14C14.5523 15.9995 15 16.4472 15 16.9995C15 17.5518 14.5523 17.9995 14 17.9995H10C9.44772 17.9995 9 17.5518 9 16.9995C9 16.4472 9.44772 15.9995 10 15.9995H11V10.9995H10C9.44772 10.9995 9 10.5518 9 9.99951Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.5 6.49951C13.5 7.32794 12.8284 7.99951 12 7.99951C11.1716 7.99951 10.5 7.32794 10.5 6.49951C10.5 5.67108 11.1716 4.99951 12 4.99951C12.8284 4.99951 13.5 5.67108 13.5 6.49951Z\"\n })));\n};\nexport default SvgInfo1;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMinus = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4 11.9995C4 11.4472 4.44772 10.9995 5 10.9995H19C19.5523 10.9995 20 11.4472 20 11.9995C20 12.5518 19.5523 12.9995 19 12.9995H5C4.44772 12.9995 4 12.5518 4 11.9995Z\"\n })));\n};\nexport default SvgMinus;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPaper = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 2.99951C6.89543 2.99951 6 3.89494 6 4.99951V18.9995C6 20.1041 6.89543 20.9995 8 20.9995H12V15.9999C12 15.4476 12.4477 14.9999 12.9999 14.9999L18 14.9996V4.99951C18 3.89494 17.1046 2.99951 16 2.99951H15.4716C15.4687 2.99976 15.4519 3.00202 15.4198 3.01884C15.3782 3.04067 15.3244 3.08043 15.2697 3.14067C14.7282 3.73733 13.6568 4.59042 12 4.59042C10.3432 4.59042 9.27176 3.73733 8.73028 3.14067C8.67562 3.08043 8.62183 3.04067 8.58019 3.01884C8.54811 3.00202 8.53134 2.99976 8.52845 2.99951H8ZM17.9 16.9996L14 16.9998V20.8995C15.9591 20.5018 17.5023 18.9587 17.9 16.9996ZM4 4.99951C4 2.79037 5.79086 0.999512 8 0.999512H8.52876C9.26313 0.999512 9.8469 1.39504 10.2113 1.7966C10.5215 2.13844 11.095 2.59042 12 2.59042C12.905 2.59042 13.4785 2.13844 13.7887 1.7966C14.1531 1.39504 14.7369 0.999512 15.4712 0.999512H16C18.2091 0.999512 20 2.79037 20 4.99951V15.9995C20 19.8655 16.866 22.9995 13 22.9995H8C5.79086 22.9995 4 21.2087 4 18.9995V4.99951ZM8 7.99951C8 7.44723 8.44772 6.99951 9 6.99951H15C15.5523 6.99951 16 7.44723 16 7.99951C16 8.5518 15.5523 8.99951 15 8.99951H9C8.44772 8.99951 8 8.5518 8 7.99951ZM8 11.9995C8 11.4472 8.44772 10.9995 9 10.9995H13C13.5523 10.9995 14 11.4472 14 11.9995C14 12.5518 13.5523 12.9995 13 12.9995H9C8.44772 12.9995 8 12.5518 8 11.9995Z\"\n })));\n};\nexport default SvgPaper;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPlus = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 4C12.5523 4 13 4.44772 13 5V11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H13V19C13 19.5523 12.5523 20 12 20C11.4477 20 11 19.5523 11 19V13H5C4.44772 13 4 12.5523 4 12C4 11.4477 4.44772 11 5 11H11V5C11 4.44772 11.4477 4 12 4Z\"\n })));\n};\nexport default SvgPlus;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSearch = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.1215 6.63627C12.7784 4.29312 8.97941 4.29312 6.63627 6.63627C4.29312 8.97941 4.29312 12.7784 6.63627 15.1215C8.97941 17.4647 12.7784 17.4647 15.1215 15.1215C17.4647 12.7784 17.4647 8.97941 15.1215 6.63627ZM5.22205 5.22205C8.34625 2.09786 13.4116 2.09786 16.5358 5.22205C19.4205 8.10678 19.6416 12.6465 17.1991 15.7849L20.7784 19.3642C21.1689 19.7547 21.1689 20.3879 20.7784 20.7784C20.3879 21.1689 19.7547 21.1689 19.3642 20.7784L15.7849 17.1991C12.6465 19.6416 8.10678 19.4205 5.22205 16.5358C2.09786 13.4116 2.09786 8.34625 5.22205 5.22205Z\"\n })));\n};\nexport default SvgSearch;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStarFilled = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.626 1.95227C10.8414 1.37937 11.3894 1 12.0015 1C12.6135 1 13.1615 1.37937 13.377 1.95227L13.384 1.97165L15.5255 8.0432H21.5304C22.1456 8.04319 22.6959 8.42646 22.909 9.00363C23.1222 9.58083 22.9532 10.2297 22.4856 10.6296L22.4739 10.6394L17.3913 14.8532L19.523 21.2567C19.7247 21.8636 19.5108 22.5318 18.9939 22.9084C18.477 23.285 17.7759 23.2841 17.26 22.9061L12.0004 19.047L6.73032 22.9118C6.21424 23.2823 5.51852 23.2791 5.00577 22.9041C4.49302 22.5291 4.2793 21.867 4.476 21.263L4.47803 21.2567L6.6097 14.8533L1.52627 10.6395L1.51453 10.6296C1.0469 10.2297 0.877912 9.58082 1.09108 9.00363C1.30424 8.42646 1.85439 8.04319 2.46965 8.0432H8.47575L10.619 1.97141L10.626 1.95227Z\"\n })));\n};\nexport default SvgStarFilled;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgStar = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.626 1.95227C10.8414 1.37937 11.3894 1 12.0015 1C12.6135 1 13.1615 1.37937 13.377 1.95227L13.384 1.97165L15.5255 8.0432H21.5304C22.1456 8.04319 22.6959 8.42646 22.909 9.00363C23.1222 9.58083 22.9532 10.2297 22.4856 10.6296L22.4739 10.6394L17.3913 14.8532L19.523 21.2567C19.7247 21.8636 19.5108 22.5318 18.9939 22.9084C18.477 23.285 17.7759 23.2841 17.26 22.9061L12.0004 19.047L6.73032 22.9118C6.21424 23.2823 5.51852 23.2791 5.00577 22.9041C4.49302 22.5291 4.2793 21.867 4.476 21.263L4.47803 21.2567L6.6097 14.8533L1.52627 10.6395L1.51453 10.6296C1.0469 10.2297 0.877912 9.58082 1.09108 9.00363C1.30424 8.42646 1.85439 8.04319 2.46965 8.0432H8.47575L10.619 1.97141L10.626 1.95227ZM12.0013 4.06405L13.8747 9.37582C14.0158 9.77574 14.3937 10.0432 14.8178 10.0432H20.0595L15.5882 13.7502C15.2707 14.0134 15.1474 14.4445 15.2776 14.8358L17.099 20.3074L12.5921 17.0006C12.2401 16.7423 11.7612 16.7422 11.4091 17.0004L6.9027 20.3053L8.7234 14.8358C8.85368 14.4445 8.73032 14.0133 8.41277 13.7501L3.94083 10.0432H9.18324C9.60721 10.0432 9.98509 9.77585 10.1262 9.37606L12.0013 4.06405Z\"\n })));\n};\nexport default SvgStar;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgTrash = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 5C8 3.34315 9.34315 2 11 2H13C14.6569 2 16 3.34315 16 5V6H20C20.5523 6 21 6.44772 21 7C21 7.55228 20.5523 8 20 8H19V19C19 20.6569 17.6569 22 16 22H8C6.34315 22 5 20.6569 5 19V8H4C3.44772 8 3 7.55228 3 7C3 6.44772 3.44772 6 4 6H8V5ZM10 6H14V5C14 4.44772 13.5523 4 13 4H11C10.4477 4 10 4.44772 10 5V6ZM7 8V19C7 19.5523 7.44772 20 8 20H16C16.5523 20 17 19.5523 17 19V8H7ZM10 10C10.5523 10 11 10.4477 11 11V17C11 17.5523 10.5523 18 10 18C9.44772 18 9 17.5523 9 17V11C9 10.4477 9.44772 10 10 10ZM14 10C14.5523 10 15 10.4477 15 11V17C15 17.5523 14.5523 18 14 18C13.4477 18 13 17.5523 13 17V11C13 10.4477 13.4477 10 14 10Z\"\n })));\n};\nexport default SvgTrash;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgUser = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 4C10.3431 4 9 5.34315 9 7C9 8.65685 10.3431 10 12 10C13.6569 10 15 8.65685 15 7C15 5.34315 13.6569 4 12 4ZM7 7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7C17 9.76142 14.7614 12 12 12C9.23858 12 7 9.76142 7 7ZM2 19.5C2 16.4624 4.46243 14 7.5 14H16.5C19.5376 14 22 16.4624 22 19.5C22 20.8807 20.8807 22 19.5 22H4.5C3.11929 22 2 20.8807 2 19.5ZM7.5 16C5.567 16 4 17.567 4 19.5C4 19.7761 4.22386 20 4.5 20H19.5C19.7761 20 20 19.7761 20 19.5C20 17.567 18.433 16 16.5 16H7.5Z\"\n })));\n};\nexport default SvgUser;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgWarning1 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 0C12.3568 0 12.6866 0.190147 12.8654 0.498964L23.8654 19.499C24.0445 19.8083 24.0449 20.1898 23.8663 20.4995C23.6878 20.8092 23.3575 21 23 21H1C0.642521 21 0.31223 20.8092 0.133676 20.4995C-0.0448788 20.1898 -0.0445365 19.8083 0.134574 19.499L11.1346 0.498964C11.3134 0.190147 11.6432 0 12 0ZM2.73445 19H21.2656L12 2.99586L2.73445 19ZM12 7C12.5523 7 13 7.44772 13 8V13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13V8C11 7.44772 11.4477 7 12 7Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.5 16.5C13.5 17.3284 12.8284 18 12 18C11.1716 18 10.5 17.3284 10.5 16.5C10.5 15.6716 11.1716 15 12 15C12.8284 15 13.5 15.6716 13.5 16.5Z\"\n })));\n};\nexport default SvgWarning1;","import DebouncePromise from 'debounce-promise';\nimport { onlyResolvesLast } from 'awesome-only-resolves-last-promise';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar DefaultOptions = {\r\n // One distinct debounced function is created per key and added to an internal cache\r\n // By default, the key is null, which means that all the calls\r\n // will share the same debounced function\r\n key: function () {\r\n var _args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n _args[_i] = arguments[_i];\r\n }\r\n return null;\r\n },\r\n // By default, a debounced function will only resolve\r\n // the last promise it returned\r\n // Former calls will stay unresolved, so that you don't have\r\n // to handle concurrency issues in your code\r\n // Setting this to false means all returned promises will resolve to the last result\r\n onlyResolvesLast: true,\r\n};\r\n// We create a debouncing function cache, because when wrapping the original function,\r\n// we may actually want to route the function call to different debounced functions depending function paameters\r\nvar DebounceCache = /** @class */ (function () {\r\n function DebounceCache(config) {\r\n this.config = config;\r\n this.debounceSingleton = null;\r\n this.debounceCache = {}; // when key feature is used\r\n }\r\n DebounceCache.prototype._createDebouncedFunction = function () {\r\n var debouncedFunc = DebouncePromise(this.config.func, this.config.wait, this.config.options); // TODO TS\r\n if (this.config.options.onlyResolvesLast) {\r\n debouncedFunc = onlyResolvesLast(debouncedFunc);\r\n }\r\n return {\r\n func: debouncedFunc,\r\n };\r\n };\r\n DebounceCache.prototype.getDebouncedFunction = function (args) {\r\n var _a;\r\n var key = (_a = this.config.options).key.apply(_a, args);\r\n if (key === null || typeof key === 'undefined') {\r\n if (!this.debounceSingleton) {\r\n this.debounceSingleton = this._createDebouncedFunction();\r\n }\r\n return this.debounceSingleton;\r\n }\r\n else {\r\n if (!this.debounceCache[key]) {\r\n this.debounceCache[key] = this._createDebouncedFunction();\r\n }\r\n return this.debounceCache[key];\r\n }\r\n };\r\n return DebounceCache;\r\n}());\r\nfunction AwesomeDebouncePromise(func, wait, options) {\r\n var finalOptions = __assign({}, DefaultOptions, options);\r\n var debounceCache = new DebounceCache({\r\n func: func,\r\n wait: wait,\r\n options: finalOptions,\r\n });\r\n var AwesomeDebouncePromiseWrapper = (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var debouncedFn = debounceCache.getDebouncedFunction(args).func;\r\n return debouncedFn.apply(void 0, args);\r\n }); // TODO fix TS\r\n /*\r\n AwesomeDebouncePromiseWrapper.cancel = (key?: string) => {\r\n \n };\r\n */\r\n return AwesomeDebouncePromiseWrapper;\r\n}\n\nexport default AwesomeDebouncePromise;\n//# sourceMappingURL=index.es.js.map\n","import { createImperativePromise } from 'awesome-imperative-promise';\n\n// see https://stackoverflow.com/a/54825370/82609\r\nfunction onlyResolvesLast(asyncFunction) {\r\n var cancelPrevious = null;\r\n var wrappedFunction = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n cancelPrevious && cancelPrevious();\r\n var initialPromise = asyncFunction.apply(void 0, args);\r\n var _a = createImperativePromise(initialPromise), promise = _a.promise, cancel = _a.cancel;\r\n cancelPrevious = cancel;\r\n return promise;\r\n };\r\n return wrappedFunction; // TODO fix TS\r\n}\n\nexport { onlyResolvesLast };\n//# sourceMappingURL=index.es.js.map\n","function createImperativePromise(promiseArg) {\r\n var resolve = null;\r\n var reject = null;\r\n var wrappedPromise = new Promise(function (_resolve, _reject) {\r\n resolve = _resolve;\r\n reject = _reject;\r\n });\r\n promiseArg && promiseArg.then(function (val) {\r\n resolve && resolve(val);\r\n }, function (error) {\r\n reject && reject(error);\r\n });\r\n return {\r\n promise: wrappedPromise,\r\n resolve: function (value) {\r\n resolve && resolve(value);\r\n },\r\n reject: function (reason) {\r\n reject && reject(reason);\r\n },\r\n cancel: function () {\r\n resolve = null;\r\n reject = null;\r\n }\r\n };\r\n}\n\nexport { createImperativePromise };\n//# sourceMappingURL=index.es.js.map\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > âš ï¸ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import compareAsc from \"../compareAsc/index.js\";\nimport add from \"../add/index.js\";\nimport differenceInDays from \"../differenceInDays/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport differenceInYears from \"../differenceInYears/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intervalToDuration\n * @category Common Helpers\n * @summary Convert interval to duration\n *\n * @description\n * Convert a interval object to a duration object.\n *\n * @param {Interval} interval - the interval to convert to duration\n *\n * @returns {Duration} The duration Object\n * @throws {TypeError} Requires 2 arguments\n * @throws {RangeError} `start` must not be Invalid Date\n * @throws {RangeError} `end` must not be Invalid Date\n *\n * @example\n * // Get the duration between January 15, 1929 and April 4, 1968.\n * intervalToDuration({\n * start: new Date(1929, 0, 15, 12, 0, 0),\n * end: new Date(1968, 3, 4, 19, 5, 0)\n * })\n * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }\n */\nexport default function intervalToDuration(interval) {\n requiredArgs(1, arguments);\n var start = toDate(interval.start);\n var end = toDate(interval.end);\n if (isNaN(start.getTime())) throw new RangeError('Start Date is invalid');\n if (isNaN(end.getTime())) throw new RangeError('End Date is invalid');\n var duration = {};\n duration.years = Math.abs(differenceInYears(end, start));\n var sign = compareAsc(end, start);\n var remainingMonths = add(start, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(end, remainingMonths));\n var remainingDays = add(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(end, remainingDays));\n var remainingHours = add(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(end, remainingHours));\n var remainingMinutes = add(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(end, remainingMinutes));\n var remainingSeconds = add(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(end, remainingSeconds));\n return duration;\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","'use strict';\n\n/* global setTimeout, clearTimeout */\n\nmodule.exports = function debounce(fn) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var lastCallAt = void 0;\n var deferred = void 0;\n var timer = void 0;\n var pendingArgs = [];\n return function debounced() {\n var currentWait = getWait(wait);\n var currentTime = new Date().getTime();\n\n var isCold = !lastCallAt || currentTime - lastCallAt > currentWait;\n\n lastCallAt = currentTime;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isCold && options.leading) {\n return options.accumulate ? Promise.resolve(fn.call(this, [args])).then(function (result) {\n return result[0];\n }) : Promise.resolve(fn.call.apply(fn, [this].concat(args)));\n }\n\n if (deferred) {\n clearTimeout(timer);\n } else {\n deferred = defer();\n }\n\n pendingArgs.push(args);\n timer = setTimeout(flush.bind(this), currentWait);\n\n if (options.accumulate) {\n var argsIndex = pendingArgs.length - 1;\n return deferred.promise.then(function (results) {\n return results[argsIndex];\n });\n }\n\n return deferred.promise;\n };\n\n function flush() {\n var thisDeferred = deferred;\n clearTimeout(timer);\n\n Promise.resolve(options.accumulate ? fn.call(this, pendingArgs) : fn.apply(this, pendingArgs[pendingArgs.length - 1])).then(thisDeferred.resolve, thisDeferred.reject);\n\n pendingArgs = [];\n deferred = null;\n }\n};\n\nfunction getWait(wait) {\n return typeof wait === 'function' ? wait() : wait;\n}\n\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar _require = require('focus-trap'),\n createFocusTrap = _require.createFocusTrap;\nvar _require2 = require('tabbable'),\n isFocusable = _require2.isFocusable;\nvar FocusTrap = /*#__PURE__*/function (_React$Component) {\n function FocusTrap(props) {\n var _this;\n _classCallCheck(this, FocusTrap);\n _this = _callSuper(this, FocusTrap, [props]);\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n _defineProperty(_this, \"getNodeForOption\", function (optionName) {\n var _this$internalOptions;\n // use internal options first, falling back to original options\n var optionValue = (_this$internalOptions = this.internalOptions[optionName]) !== null && _this$internalOptions !== void 0 ? _this$internalOptions : this.originalOptions[optionName];\n if (typeof optionValue === 'function') {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n optionValue = optionValue.apply(void 0, params);\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n var _this$getDocument;\n node = (_this$getDocument = this.getDocument()) === null || _this$getDocument === void 0 ? void 0 : _this$getDocument.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n }\n return node;\n });\n _this.handleDeactivate = _this.handleDeactivate.bind(_this);\n _this.handlePostDeactivate = _this.handlePostDeactivate.bind(_this);\n _this.handleClickOutsideDeactivates = _this.handleClickOutsideDeactivates.bind(_this);\n\n // focus-trap options used internally when creating the trap\n _this.internalOptions = {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n returnFocusOnDeactivate: false,\n // the rest of these are also related to deactivation of the trap, and we\n // need to use them and control them as well\n checkCanReturnFocus: null,\n onDeactivate: _this.handleDeactivate,\n onPostDeactivate: _this.handlePostDeactivate,\n // we need to special-case this setting as well so that we can know if we should\n // NOT return focus if the trap gets auto-deactivated as the result of an\n // outside click (otherwise, we'll always think we should return focus because\n // of how we manage that flag internally here)\n clickOutsideDeactivates: _this.handleClickOutsideDeactivates\n };\n\n // original options provided by the consumer\n _this.originalOptions = {\n // because of the above `internalOptions`, we maintain our own flag for\n // this option, and default it to `true` because that's focus-trap's default\n returnFocusOnDeactivate: true,\n // because of the above `internalOptions`, we keep these separate since\n // they're part of the deactivation process which we configure (internally) to\n // be shared between focus-trap and focus-trap-react\n onDeactivate: null,\n onPostDeactivate: null,\n checkCanReturnFocus: null,\n // the user's setting, defaulted to false since focus-trap defaults this to false\n clickOutsideDeactivates: false\n };\n var focusTrapOptions = props.focusTrapOptions;\n for (var optionName in focusTrapOptions) {\n if (!Object.prototype.hasOwnProperty.call(focusTrapOptions, optionName)) {\n continue;\n }\n if (optionName === 'returnFocusOnDeactivate' || optionName === 'onDeactivate' || optionName === 'onPostDeactivate' || optionName === 'checkCanReturnFocus' || optionName === 'clickOutsideDeactivates') {\n _this.originalOptions[optionName] = focusTrapOptions[optionName];\n continue; // exclude from internalOptions\n }\n _this.internalOptions[optionName] = focusTrapOptions[optionName];\n }\n\n // if set, `{ target: Node, allowDeactivation: boolean }` where `target` is the outside\n // node that was clicked, and `allowDeactivation` is the result of the consumer's\n // option (stored in `this.originalOptions.clickOutsideDeactivates`, which may be a\n // function) whether to allow or deny auto-deactivation on click on this outside node\n _this.outsideClick = null;\n\n // elements from which to create the focus trap on mount; if a child is used\n // instead of the `containerElements` prop, we'll get the child's related\n // element when the trap renders and then is declared 'mounted'\n _this.focusTrapElements = props.containerElements || [];\n\n // now we remember what the currently focused element is, not relying on focus-trap\n _this.updatePreviousElement();\n return _this;\n }\n\n /**\n * Gets the configured document.\n * @returns {Document|undefined} Configured document, falling back to the main\n * document, if it exists. During SSR, `undefined` is returned since the\n * document doesn't exist.\n */\n _inherits(FocusTrap, _React$Component);\n return _createClass(FocusTrap, [{\n key: \"getDocument\",\n value: function getDocument() {\n // SSR: careful to check if `document` exists before accessing it as a variable\n return this.props.focusTrapOptions.document || (typeof document !== 'undefined' ? document : undefined);\n }\n }, {\n key: \"getReturnFocusNode\",\n value: function getReturnFocusNode() {\n var node = this.getNodeForOption('setReturnFocus', this.previouslyFocusedElement);\n return node ? node : node === false ? false : this.previouslyFocusedElement;\n }\n\n /** Update the previously focused element with the currently focused element. */\n }, {\n key: \"updatePreviousElement\",\n value: function updatePreviousElement() {\n var currentDocument = this.getDocument();\n if (currentDocument) {\n this.previouslyFocusedElement = currentDocument.activeElement;\n }\n }\n }, {\n key: \"deactivateTrap\",\n value: function deactivateTrap() {\n // NOTE: it's possible the focus trap has already been deactivated without our knowing it,\n // especially if the user set the `clickOutsideDeactivates: true` option on the trap,\n // and the mouse was clicked on some element outside the trap; at that point, focus-trap\n // will initiate its auto-deactivation process, which will call our own\n // handleDeactivate(), which will call into this method\n if (!this.focusTrap || !this.focusTrap.active) {\n return;\n }\n this.focusTrap.deactivate({\n // NOTE: we never let the trap return the focus since we do that ourselves\n returnFocus: false,\n // we'll call this in our own post deactivate handler so make sure the trap doesn't\n // do it prematurely\n checkCanReturnFocus: null,\n // let it call the user's original deactivate handler, if any, instead of\n // our own which calls back into this function\n onDeactivate: this.originalOptions.onDeactivate\n // NOTE: for post deactivate, don't specify anything so that it calls the\n // onPostDeactivate handler specified on `this.internalOptions`\n // which will always be our own `handlePostDeactivate()` handler, which\n // will finish things off by calling the user's provided onPostDeactivate\n // handler, if any, at the right time\n // onPostDeactivate: NOTHING\n });\n }\n }, {\n key: \"handleClickOutsideDeactivates\",\n value: function handleClickOutsideDeactivates(event) {\n // use consumer's option (or call their handler) as the permission or denial\n var allowDeactivation = typeof this.originalOptions.clickOutsideDeactivates === 'function' ? this.originalOptions.clickOutsideDeactivates.call(null, event) // call out of context\n : this.originalOptions.clickOutsideDeactivates; // boolean\n\n if (allowDeactivation) {\n // capture the outside target that was clicked so we can use it in the deactivation\n // process since the consumer allowed it to cause auto-deactivation\n this.outsideClick = {\n target: event.target,\n allowDeactivation: allowDeactivation\n };\n }\n return allowDeactivation;\n }\n }, {\n key: \"handleDeactivate\",\n value: function handleDeactivate() {\n if (this.originalOptions.onDeactivate) {\n this.originalOptions.onDeactivate.call(null); // call user's handler out of context\n }\n this.deactivateTrap();\n }\n }, {\n key: \"handlePostDeactivate\",\n value: function handlePostDeactivate() {\n var _this2 = this;\n var finishDeactivation = function finishDeactivation() {\n var returnFocusNode = _this2.getReturnFocusNode();\n var canReturnFocus = !!(\n // did the consumer allow it?\n\n _this2.originalOptions.returnFocusOnDeactivate && // can we actually focus the node?\n returnFocusNode !== null && returnFocusNode !== void 0 && returnFocusNode.focus && (\n // was there an outside click that allowed deactivation?\n !_this2.outsideClick ||\n // did the consumer allow deactivation when the outside node was clicked?\n _this2.outsideClick.allowDeactivation &&\n // is the outside node NOT focusable (implying that it did NOT receive focus\n // as a result of the click-through) -- in which case do NOT restore focus\n // to `returnFocusNode` because focus should remain on the outside node\n !isFocusable(_this2.outsideClick.target, _this2.internalOptions.tabbableOptions))\n\n // if no, the restore focus to `returnFocusNode` at this point\n );\n var _this2$internalOption = _this2.internalOptions.preventScroll,\n preventScroll = _this2$internalOption === void 0 ? false : _this2$internalOption;\n if (canReturnFocus) {\n // return focus to the element that had focus when the trap was activated\n returnFocusNode.focus({\n preventScroll: preventScroll\n });\n }\n if (_this2.originalOptions.onPostDeactivate) {\n _this2.originalOptions.onPostDeactivate.call(null); // don't call it in context of \"this\"\n }\n _this2.outsideClick = null; // reset: no longer needed\n };\n if (this.originalOptions.checkCanReturnFocus) {\n this.originalOptions.checkCanReturnFocus.call(null, this.getReturnFocusNode()) // call out of context\n .then(finishDeactivation, finishDeactivation);\n } else {\n finishDeactivation();\n }\n }\n }, {\n key: \"setupFocusTrap\",\n value: function setupFocusTrap() {\n if (this.focusTrap) {\n // trap already exists: it's possible we're in StrictMode and we're being remounted,\n // in which case, we will have deactivated the trap when we got unmounted (remember,\n // StrictMode, in development, purposely unmounts and remounts components after\n // mounting them the first time to make sure they have reusable state,\n // @see https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state) so now\n // we need to restore the state of the trap according to our component state\n // NOTE: Strict mode __violates__ assumptions about the `componentWillUnmount()` API\n // which clearly states -- even for React 18 -- that, \"Once a component instance is\n // unmounted, __it will never be mounted again.__\" (emphasis ours). So when we get\n // unmounted, we assume we're gone forever and we deactivate the trap. But then\n // we get remounted and we're supposed to restore state. But if you had paused,\n // we've now deactivated (we don't know we're amount to get remounted again)\n // which means we need to reactivate and then pause. Otherwise, do nothing.\n if (this.props.active && !this.focusTrap.active) {\n this.focusTrap.activate();\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n } else {\n var nodesExist = this.focusTrapElements.some(Boolean);\n if (nodesExist) {\n // eslint-disable-next-line react/prop-types -- _createFocusTrap is an internal prop\n this.focusTrap = this.props._createFocusTrap(this.focusTrapElements, this.internalOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.active) {\n this.setupFocusTrap();\n }\n // else, wait for later activation in case the `focusTrapOptions` will be updated\n // again before the trap is activated (e.g. if waiting to know what the document\n // object will be, so the Trap must be rendered, but the consumer is waiting to\n // activate until they have obtained the document from a ref)\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.focusTrap) {\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrap.updateContainerElements(this.props.containerElements);\n }\n var hasActivated = !prevProps.active && this.props.active;\n var hasDeactivated = prevProps.active && !this.props.active;\n var hasPaused = !prevProps.paused && this.props.paused;\n var hasUnpaused = prevProps.paused && !this.props.paused;\n if (hasActivated) {\n this.updatePreviousElement();\n this.focusTrap.activate();\n }\n if (hasDeactivated) {\n this.deactivateTrap();\n return; // un/pause does nothing on an inactive trap\n }\n if (hasPaused) {\n this.focusTrap.pause();\n }\n if (hasUnpaused) {\n this.focusTrap.unpause();\n }\n } else {\n // NOTE: if we're in `componentDidUpdate` and we don't have a trap yet,\n // it either means it shouldn't be active, or it should be but none of\n // of given `containerElements` were present in the DOM the last time\n // we tried to create the trap\n\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrapElements = this.props.containerElements;\n }\n\n // don't create the trap unless it should be active in case the consumer\n // is still updating `focusTrapOptions`\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n if (this.props.active) {\n this.updatePreviousElement();\n this.setupFocusTrap();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.deactivateTrap();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var child = this.props.children ? React.Children.only(this.props.children) : undefined;\n if (child) {\n if (child.type && child.type === React.Fragment) {\n throw new Error('A focus-trap cannot use a Fragment as its child container. Try replacing it with a <div> element.');\n }\n var callbackRef = function callbackRef(element) {\n var containerElements = _this3.props.containerElements;\n if (child) {\n if (typeof child.ref === 'function') {\n child.ref(element);\n } else if (child.ref) {\n child.ref.current = element;\n }\n }\n _this3.focusTrapElements = containerElements ? containerElements : [element];\n };\n var childWithRef = React.cloneElement(child, {\n ref: callbackRef\n });\n return childWithRef;\n }\n return null;\n }\n }]);\n}(React.Component); // support server-side rendering where `Element` will not be defined\nvar ElementType = typeof Element === 'undefined' ? Function : Element;\nFocusTrap.propTypes = {\n active: PropTypes.bool,\n paused: PropTypes.bool,\n focusTrapOptions: PropTypes.shape({\n document: PropTypes.object,\n onActivate: PropTypes.func,\n onPostActivate: PropTypes.func,\n checkCanFocusTrap: PropTypes.func,\n onPause: PropTypes.func,\n onPostPause: PropTypes.func,\n onUnpause: PropTypes.func,\n onPostUnpause: PropTypes.func,\n onDeactivate: PropTypes.func,\n onPostDeactivate: PropTypes.func,\n checkCanReturnFocus: PropTypes.func,\n initialFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n fallbackFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string,\n // NOTE: does not support `false` as value (or return value from function)\n PropTypes.func]),\n escapeDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n clickOutsideDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n returnFocusOnDeactivate: PropTypes.bool,\n setReturnFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n allowOutsideClick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n preventScroll: PropTypes.bool,\n tabbableOptions: PropTypes.shape({\n displayCheck: PropTypes.oneOf(['full', 'legacy-full', 'non-zero-area', 'none']),\n getShadowRoot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func])\n }),\n trapStack: PropTypes.array,\n isKeyForward: PropTypes.func,\n isKeyBackward: PropTypes.func\n }),\n containerElements: PropTypes.arrayOf(PropTypes.instanceOf(ElementType)),\n // DOM element ONLY\n children: PropTypes.oneOfType([PropTypes.element,\n // React element\n PropTypes.instanceOf(ElementType) // DOM element\n ])\n\n // NOTE: _createFocusTrap is internal, for testing purposes only, so we don't\n // specify it here. It's expected to be set to the function returned from\n // require('focus-trap'), or one with a compatible interface.\n};\nFocusTrap.defaultProps = {\n active: true,\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\nmodule.exports = FocusTrap;","/*!\n* focus-trap 7.6.0\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { isFocusable, tabbable, focusable, isTabbable, getTabIndex } from 'tabbable';\n\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nvar activeFocusTraps = {\n activateTrap: function activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n var activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n deactivateTrap: function deactivateTrap(trapStack, trap) {\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nvar findIndex = function findIndex(arr, fn) {\n var idx = -1;\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n return true; // next\n });\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return typeof value === 'function' ? value.apply(void 0, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward: isKeyForward,\n isKeyBackward: isKeyBackward\n }, userOptions);\n var state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [],\n // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n var findContainerIndex = function findContainerIndex(element, event) {\n var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(function (_ref) {\n var container = _ref.container,\n tabbableNodes = _ref.tabbableNodes;\n return container.contains(element) || ( // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n return node === element;\n });\n });\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n var getNodeForOption = function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n if (typeof optionValue === 'function') {\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n optionValue = optionValue.apply(void 0, params);\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n }\n return node;\n };\n var getInitialFocusNode = function getInitialFocusNode() {\n var node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n return node;\n };\n var updateTabbableNodes = function updateTabbableNodes() {\n state.containerGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n var focusableNodes = focusable(container, config.tabbableOptions);\n var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n var firstDomTabbableNode = focusableNodes.find(function (node) {\n return isTabbable(node);\n });\n var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n return isTabbable(node);\n });\n var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n return getTabIndex(node) > 0;\n });\n return {\n container: container,\n tabbableNodes: tabbableNodes,\n focusableNodes: focusableNodes,\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound: posTabIndexesFound,\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode: firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode: lastTabbableNode,\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode: firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode: lastDomTabbableNode,\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode: function nextTabbableNode(node) {\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n return isTabbable(el);\n });\n }\n return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n return isTabbable(el);\n });\n }\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n };\n });\n state.tabbableGroups = state.containerGroups.filter(function (group) {\n return group.tabbableNodes.length > 0;\n });\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (state.containerGroups.find(function (g) {\n return g.posTabIndexesFound;\n }) && state.containerGroups.length > 1) {\n throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n var _getActiveElement = function getActiveElement(el) {\n var activeElement = el.activeElement;\n if (!activeElement) {\n return;\n }\n if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n return _getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n };\n var _tryFocus = function tryFocus(node) {\n if (node === false) {\n return;\n }\n if (node === _getActiveElement(document)) {\n return;\n }\n if (!node || !node.focus) {\n _tryFocus(getInitialFocusNode());\n return;\n }\n node.focus({\n preventScroll: !!config.preventScroll\n });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n var findNextNavNode = function findNextNavNode(_ref2) {\n var target = _ref2.target,\n event = _ref2.event,\n _ref2$isBackward = _ref2.isBackward,\n isBackward = _ref2$isBackward === void 0 ? false : _ref2$isBackward;\n target = target || getActualTarget(event);\n updateTabbableNodes();\n var destinationNode = null;\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findContainerIndex(target, event);\n var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref3) {\n var firstTabbableNode = _ref3.firstTabbableNode;\n return target === firstTabbableNode;\n });\n if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref4) {\n var lastTabbableNode = _ref4.lastTabbableNode;\n return target === lastTabbableNode;\n });\n if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n var checkPointerDown = function checkPointerDown(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n var checkFocusIn = function checkFocusIn(event) {\n var target = getActualTarget(event);\n var targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n var nextNode; // next node to focus, if we find one\n var navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n var mruTabIdx = tabbableNodes.findIndex(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (!state.containerGroups.some(function (g) {\n return g.tabbableNodes.some(function (n) {\n return getTabIndex(n) > 0;\n });\n })) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent)\n });\n }\n if (nextNode) {\n _tryFocus(nextNode);\n } else {\n _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n var checkKeyNav = function checkKeyNav(event) {\n var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.recentNavEvent = event;\n var destinationNode = findNextNavNode({\n event: event,\n isBackward: isBackward\n });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n _tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n var checkTabKey = function checkTabKey(event) {\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n var checkEscapeKey = function checkEscapeKey(event) {\n if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n trap.deactivate();\n }\n };\n var checkClick = function checkClick(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () {\n _tryFocus(getInitialFocusNode());\n }) : _tryFocus(getInitialFocusNode());\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkTabKey, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkEscapeKey);\n return trap;\n };\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkTabKey, true);\n doc.removeEventListener('keydown', checkEscapeKey);\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n var checkDomRemoval = function checkDomRemoval(mutations) {\n var isFocusedNodeRemoved = mutations.some(function (mutation) {\n var removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n _tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n var updateObservedNodes = function updateObservedNodes() {\n if (!mutationObserver) {\n return;\n }\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n get paused() {\n return state.paused;\n },\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n var onActivate = getOption(activateOptions, 'onActivate');\n var onPostActivate = getOption(activateOptions, 'onPostActivate');\n var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n onActivate === null || onActivate === void 0 || onActivate();\n var finishActivation = function finishActivation() {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate === null || onPostActivate === void 0 || onPostActivate();\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n var options = _objectSpread2({\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus\n }, deactivateOptions);\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n activeFocusTraps.deactivateTrap(trapStack, trap);\n var onDeactivate = getOption(options, 'onDeactivate');\n var onPostDeactivate = getOption(options, 'onPostDeactivate');\n var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n onDeactivate === null || onDeactivate === void 0 || onDeactivate();\n var finishDeactivation = function finishDeactivation() {\n delay(function () {\n if (returnFocus) {\n _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate();\n });\n };\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n },\n pause: function pause(pauseOptions) {\n if (state.paused || !state.active) {\n return this;\n }\n var onPause = getOption(pauseOptions, 'onPause');\n var onPostPause = getOption(pauseOptions, 'onPostPause');\n state.paused = true;\n onPause === null || onPause === void 0 || onPause();\n removeListeners();\n updateObservedNodes();\n onPostPause === null || onPostPause === void 0 || onPostPause();\n return this;\n },\n unpause: function unpause(unpauseOptions) {\n if (!state.paused || !state.active) {\n return this;\n }\n var onUnpause = getOption(unpauseOptions, 'onUnpause');\n var onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n state.paused = false;\n onUnpause === null || onUnpause === void 0 || onUnpause();\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause();\n return this;\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n if (state.active) {\n updateTabbableNodes();\n }\n updateObservedNodes();\n return this;\n }\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Teaser\":\"xSMweNr2\",\"Border\":\"lx6XEPmM\",\"Bottom\":\"unOMiasZ\",\"Badges\":\"n2tfW9KQ\",\"TopActions\":\"nnQkxsSH\",\"Content\":\"pq8hNoSw\",\"Info\":\"Wri4AMzT\",\"RatingContainer\":\"dgMzl1Az\",\"Actions\":\"WXN8ISWz\",\"Heading\":\"_lXDvo6T\",\"Link\":\"uf3WecLV\",\"Image\":\"x2oY2fBp\",\"SkeletonText\":\"VWZhLE0R\",\"SkeletonButton\":\"v9ylroyI\"};","// extracted by mini-css-extract-plugin\nexport default {\"WithBackgroundMixin\":\"b65Amywg\",\"Container\":\"WDsaDiRu\",\"Background--light1Green2\":\"W3bm0CoR\",\"Background--light1Green3\":\"Yx1KyJ9k\",\"Background--light1Green4\":\"j6LYvUjx\",\"SwiperContainer\":\"OCD_W3n9\",\"Banner\":\"GbEqA3cO\",\"GridBanner\":\"CV3g0Mw5\",\"ListContainer\":\"cLfu9QdN\",\"WithBanner\":\"zJ7EaBlZ\",\"Swiper\":\"Cly_TVWq\",\"SwiperPagination\":\"_SDu9HmR\",\"HeaderContainer\":\"Fz59m8zD\",\"Header\":\"y6lOtOf1\",\"Link\":\"c4WCyKHO\",\"BannerCell1of1\":\"M6gHKoNb\",\"BannerCell2of2\":\"ncyp1nr0\",\"BannerCell2of3\":\"sEGu_rWG\",\"BannerCell2of4\":\"YlXeup8u\",\"BannerCell2of5\":\"RLaVsKyL\",\"BannerCell2of6\":\"TloHg7FQ\",\"BannerCell3of7\":\"ZV6tHixn\",\"BannerCell3of8\":\"mHBC5kOY\"};","// extracted by mini-css-extract-plugin\nexport default {\"MissingItemInfo\":\"XyD819sD\",\"RecipeItemActions\":\"xGNPEbje\",\"RecipeItemActionsContainer\":\"t3_zjtbW\"};","// extracted by mini-css-extract-plugin\nexport default {\"ActionList\":\"itbvuHLp\",\"NoResults\":\"wWJqNXNL\",\"Item\":\"qZUW1oDQ\",\"NoResultsItem\":\"PKUeCReq\",\"ItemIcon\":\"phSAdaxj\",\"ItemHovered\":\"KIb11HB5\",\"ItemFocusVisible\":\"HNG_hZl_\"};","// extracted by mini-css-extract-plugin\nexport default {\"BadgePositioning\":\"qQ6hw97v\",\"Badge\":\"FAkyjvah\",\"Badge-wide\":\"jeYf0ayb\",\"Badge--animated\":\"szszpBkW\",\"is-updating\":\"tTyJ1LjB\",\"pulseGreen\":\"XYseNCfi\",\"is-active\":\"CKEBzLcU\",\"AsIcon\":\"wULzSkan\",\"Badge--xsmall\":\"kTOj5dQE\",\"Badge--small\":\"PiEpAH2p\",\"Badge--medium\":\"MPIK3bR5\",\"Badge--red\":\"g4BlKIVG\",\"Badge--white\":\"VDx9_fIq\",\"Badge--greenLight2\":\"bI8Rjrwa\",\"Badge--ctaGreen\":\"ubS4zBBP\"};","// extracted by mini-css-extract-plugin\nexport default {\"Modal\":\"TuTnwT5V\",\"Modal--fixed\":\"h7Rgi7_l\",\"Modal--absolute\":\"pCGdhI13\",\"ModalHeader\":\"MbR48uTv\",\"Modal-overlay\":\"sVvEmeb0\",\"Modal-container\":\"wm4ENTRt\",\"Modal-close\":\"ynNr65Bz\",\"Modal-close--white\":\"rcfzVAPi\",\"Modal--left\":\"fnCj3bod\",\"Modal--center\":\"Dx4vSt7J\",\"Modal--right\":\"z9IXJRkC\",\"Modal--maxHeight\":\"Z4eYgwiq\",\"Animated-overlay\":\"XxUS6N_Q\",\"Animated\":\"n2tNyrf1\",\"is-visible\":\"nuELj8Rp\",\"fadeIn\":\"_kDcE9Jc\",\"slideInFromLeft\":\"IOJLrYQx\",\"Modal--scaleAnimation\":\"rqC1T0UZ\",\"scaleIn\":\"B3ENWT73\",\"Modal--fadeAnimation\":\"rsCe_lFy\",\"Modal--slideLeftAnimation\":\"sFVlwW8y\",\"Modal--slideRightAnimation\":\"UNbSci5J\",\"slideInFromRight\":\"qdeVrIFj\",\"is-hidden\":\"xtWFtf9U\",\"fadeOut\":\"kPDhbC1z\",\"slideOutFromRight\":\"DXD6dGco\",\"scaleOut\":\"PA9Rj7ry\",\"slideOutFromLeft\":\"rnFw2tTe\"};","// extracted by mini-css-extract-plugin\nexport default {\"Search\":\"ZJoyxDAW\",\"Search--hidden\":\"dcXQdb7D\",\"Search-content\":\"oDq6An2m\",\"Search-input\":\"rXjMsUPA\",\"Search-actions\":\"gIEZRGNZ\",\"Search-icon\":\"vJ6gvrQv\",\"Search--large\":\"awlM8ShU\",\"Search--medium\":\"K6UbBi1w\",\"Search--small\":\"dozh4_al\"};","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import { useLayoutEffect, useEffect, useRef, useState, useCallback } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\n// A type of promise-like that resolves synchronously and supports only one observer\n\nconst _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\nconst _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously await a promise and pass the result to a finally continuation\nfunction _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, value);\n}\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect; // assign current value to a ref and providing a getter.\n// This way we are sure to always get latest value provided to hook and\n// avoid weird issues due to closures capturing stale values...\n// See https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n\nvar useGetter = function useGetter(t) {\n var ref = useRef(t);\n useIsomorphicLayoutEffect(function () {\n ref.current = t;\n });\n return function () {\n return ref.current;\n };\n};\n\nvar InitialAsyncState = {\n status: 'not-requested',\n loading: false,\n result: undefined,\n error: undefined\n};\nvar InitialAsyncLoadingState = {\n status: 'loading',\n loading: true,\n result: undefined,\n error: undefined\n};\n\nvar defaultSetLoading = function defaultSetLoading(_asyncState) {\n return InitialAsyncLoadingState;\n};\n\nvar defaultSetResult = function defaultSetResult(result, _asyncState) {\n return {\n status: 'success',\n loading: false,\n result: result,\n error: undefined\n };\n};\n\nvar defaultSetError = function defaultSetError(error, _asyncState) {\n return {\n status: 'error',\n loading: false,\n result: undefined,\n error: error\n };\n};\n\nvar noop = function noop() {};\n\nvar DefaultOptions = {\n initialState: function initialState(options) {\n return options && options.executeOnMount ? InitialAsyncLoadingState : InitialAsyncState;\n },\n executeOnMount: true,\n executeOnUpdate: true,\n setLoading: defaultSetLoading,\n setResult: defaultSetResult,\n setError: defaultSetError,\n onSuccess: noop,\n onError: noop\n};\n\nvar normalizeOptions = function normalizeOptions(options) {\n return _extends({}, DefaultOptions, {}, options);\n};\n\nvar useAsyncState = function useAsyncState(options) {\n var _useState = useState(function () {\n return options.initialState(options);\n }),\n value = _useState[0],\n setValue = _useState[1];\n\n var reset = useCallback(function () {\n return setValue(options.initialState(options));\n }, [setValue, options]);\n var setLoading = useCallback(function () {\n return setValue(options.setLoading(value));\n }, [value, setValue]);\n var setResult = useCallback(function (result) {\n return setValue(options.setResult(result, value));\n }, [value, setValue]);\n var setError = useCallback(function (error) {\n return setValue(options.setError(error, value));\n }, [value, setValue]);\n var set = setValue;\n var merge = useCallback(function (state) {\n return set(_extends({}, value, {}, state));\n }, [value, set]);\n return {\n value: value,\n set: set,\n merge: merge,\n reset: reset,\n setLoading: setLoading,\n setResult: setResult,\n setError: setError\n };\n};\n\nvar useIsMounted = function useIsMounted() {\n var ref = useRef(false);\n useEffect(function () {\n ref.current = true;\n return function () {\n ref.current = false;\n };\n }, []);\n return function () {\n return ref.current;\n };\n};\n\nvar useCurrentPromise = function useCurrentPromise() {\n var ref = useRef(null);\n return {\n set: function set(promise) {\n return ref.current = promise;\n },\n get: function get() {\n return ref.current;\n },\n is: function is(promise) {\n return ref.current === promise;\n }\n };\n}; // Relaxed interface which accept both async and sync functions\n// Accepting sync function is convenient for useAsyncCallback\n\n\nvar useAsyncInternal = function useAsyncInternal(asyncFunction, params, options) {\n var normalizedOptions = normalizeOptions(options);\n\n var _useState2 = useState(null),\n currentParams = _useState2[0],\n setCurrentParams = _useState2[1];\n\n var AsyncState = useAsyncState(normalizedOptions);\n var isMounted = useIsMounted();\n var CurrentPromise = useCurrentPromise(); // We only want to handle the promise result/error\n // if it is the last operation and the comp is still mounted\n\n var shouldHandlePromise = function shouldHandlePromise(p) {\n return isMounted() && CurrentPromise.is(p);\n };\n\n var executeAsyncOperation = function executeAsyncOperation() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var promise = asyncFunction.apply(void 0, args);\n setCurrentParams(args);\n\n if (promise instanceof Promise) {\n CurrentPromise.set(promise);\n AsyncState.setLoading();\n promise.then(function (result) {\n if (shouldHandlePromise(promise)) {\n AsyncState.setResult(result);\n }\n\n normalizedOptions.onSuccess(result, {\n isCurrent: function isCurrent() {\n return CurrentPromise.is(promise);\n }\n });\n }, function (error) {\n if (shouldHandlePromise(promise)) {\n AsyncState.setError(error);\n }\n\n normalizedOptions.onError(error, {\n isCurrent: function isCurrent() {\n return CurrentPromise.is(promise);\n }\n });\n });\n return promise;\n } else {\n // We allow passing a non-async function (mostly for useAsyncCallback conveniency)\n var syncResult = promise;\n AsyncState.setResult(syncResult);\n return Promise.resolve(syncResult);\n }\n }; // Keep this outside useEffect, because inside isMounted()\n // will be true as the component is already mounted when it's run\n\n\n var isMounting = !isMounted();\n useEffect(function () {\n if (isMounting) {\n normalizedOptions.executeOnMount && executeAsyncOperation.apply(void 0, params);\n } else {\n normalizedOptions.executeOnUpdate && executeAsyncOperation.apply(void 0, params);\n }\n }, params);\n return _extends({}, AsyncState.value, {\n set: AsyncState.set,\n merge: AsyncState.merge,\n reset: AsyncState.reset,\n execute: executeAsyncOperation,\n currentPromise: CurrentPromise.get(),\n currentParams: currentParams\n });\n};\n\nfunction useAsync(asyncFunction, params, options) {\n return useAsyncInternal(asyncFunction, params, options);\n}\nvar useAsyncAbortable = function useAsyncAbortable(asyncFunction, params, options) {\n var abortControllerRef = useRef(); // Wrap the original async function and enhance it with abortion login\n\n var asyncFunctionWrapper = function asyncFunctionWrapper() {\n for (var _len2 = arguments.length, p = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n p[_key2] = arguments[_key2];\n }\n\n try {\n // Cancel previous async call\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n } // Create/store new abort controller for next async call\n\n\n var abortController = new AbortController();\n abortControllerRef.current = abortController;\n return Promise.resolve(_finallyRethrows(function () {\n // @ts-ignore // TODO how to type this?\n return Promise.resolve(asyncFunction.apply(void 0, [abortController.signal].concat(p)));\n }, function (_wasThrown, _result) {\n // Unset abortController ref if response is already there,\n // as it's not needed anymore to try to abort it (would it be no-op?)\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = undefined;\n }\n\n if (_wasThrown) throw _result;\n return _result;\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return useAsync(asyncFunctionWrapper, params, options);\n};\nvar useAsyncCallback = function useAsyncCallback(asyncFunction, options) {\n return useAsyncInternal(asyncFunction, // Hacky but in such case we don't need the params,\n // because async function is only executed manually\n [], _extends({}, options, {\n executeOnMount: false,\n executeOnUpdate: false\n }));\n};\nvar useAsyncFetchMore = function useAsyncFetchMore(_ref) {\n var value = _ref.value,\n fetchMore = _ref.fetchMore,\n merge = _ref.merge,\n isEndFn = _ref.isEnd;\n var getAsyncValue = useGetter(value);\n\n var _useState3 = useState(false),\n isEnd = _useState3[0],\n setIsEnd = _useState3[1]; // TODO not really fan of this id thing, we should find a way to support cancellation!\n\n\n var fetchMoreId = useRef(0);\n var fetchMoreAsync = useAsyncCallback(function () {\n try {\n var freshAsyncValue = getAsyncValue();\n\n if (freshAsyncValue.status !== 'success') {\n throw new Error(\"Can't fetch more if the original fetch is not a success\");\n }\n\n if (fetchMoreAsync.status === 'loading') {\n throw new Error(\"Can't fetch more, because we are already fetching more!\");\n }\n\n fetchMoreId.current = fetchMoreId.current + 1;\n var currentId = fetchMoreId.current;\n return Promise.resolve(fetchMore(freshAsyncValue.result)).then(function (moreResult) {\n // TODO not satisfied with this, we should just use \"freshAsyncValue === getAsyncValue()\" but asyncValue is not \"stable\"\n var isStillSameValue = freshAsyncValue.status === getAsyncValue().status && freshAsyncValue.result === getAsyncValue().result;\n var isStillSameId = fetchMoreId.current === currentId; // Handle race conditions: we only merge the fetchMore result if the initial async value is the same\n\n var canMerge = isStillSameValue && isStillSameId;\n\n if (canMerge) {\n value.merge({\n result: merge(value.result, moreResult)\n });\n\n if (isEndFn(moreResult)) {\n setIsEnd(true);\n }\n } // return is useful for chaining, like fetchMore().then(result => {});\n\n\n return moreResult;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n });\n\n var reset = function reset() {\n fetchMoreAsync.reset();\n setIsEnd(false);\n }; // We only allow to fetch more on a stable async value\n // If that value change for whatever reason, we reset the fetchmore too (which will make current pending requests to be ignored)\n // TODO value is not stable, we could just reset on value change otherwise\n\n\n var shouldReset = value.status !== 'success';\n useEffect(function () {\n if (shouldReset) {\n reset();\n }\n }, [shouldReset]);\n return {\n canFetchMore: value.status === 'success' && fetchMoreAsync.status !== 'loading',\n loading: fetchMoreAsync.loading,\n status: fetchMoreAsync.status,\n fetchMore: fetchMoreAsync.execute,\n isEnd: isEnd\n };\n};\n\nexport { useAsync, useAsyncAbortable, useAsyncCallback, useAsyncFetchMore };\n//# sourceMappingURL=react-async-hook.esm.js.map\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","(function(a,b){\"object\"==typeof exports&&\"undefined\"!=typeof module?b(exports,require(\"@babel/runtime/helpers/defineProperty\"),require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"@babel/runtime/helpers/defineProperty\",\"@babel/runtime/helpers/objectWithoutPropertiesLoose\",\"react\"],b):(a=\"undefined\"==typeof globalThis?a||self:globalThis,b(a.Img={},a._defineProperty,a._objectWithoutPropertiesLoose,a.React))})(this,function(a,b,c,d){\"use strict\";function e(a){return a&&\"object\"==typeof a&&\"default\"in a?a:{default:a}}function f(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function g(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?f(Object(b),!0).forEach(function(c){l[\"default\"](a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):f(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function h(a){var b=a.srcList,c=a.imgPromise,e=void 0===c?o({decode:!0}):c,f=a.useSuspense,h=void 0===f||f,i=d.useState(!1),j=i[1],k=p(q(b)),l=k.join(\"\");if(r[l]||(r[l]={promise:s(k,e),cache:\"pending\",error:null}),\"resolved\"===r[l].cache)return{src:r[l].src,isLoading:!1,error:null};if(\"rejected\"===r[l].cache){if(h)throw r[l].error;return{isLoading:!1,error:r[l].error,src:void 0}}if(r[l].promise.then(function(a){r[l]=g(g({},r[l]),{},{cache:\"resolved\",src:a}),h||j(l)})[\"catch\"](function(a){r[l]=g(g({},r[l]),{},{cache:\"rejected\",error:a}),h||j(l)}),h)throw r[l].promise;return{isLoading:!0,src:void 0,error:null}}function j(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function k(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?j(Object(b),!0).forEach(function(c){l[\"default\"](a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):j(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}var l=e(b),m=e(c),n=e(d),o=function(a){var b=a.decode,c=a.crossOrigin,d=void 0===c?\"\":c;return function(a){return new Promise(function(c,e){var f=new Image;d&&(f.crossOrigin=d),f.onload=function(){(!(void 0!==b)||b)&&f.decode?f.decode().then(c)[\"catch\"](e):c()},f.onerror=e,f.src=a})}},p=function(b){return b.filter(function(a){return a})},q=function(a){return Array.isArray(a)?a:[a]},r={},s=function(a,b){var c=!1;return new Promise(function(d,e){var f=function(a){return b(a).then(function(){c=!0,d(a)})};a.reduce(function(a,b){return a[\"catch\"](function(){if(!c)return f(b)})},f(a.shift()))[\"catch\"](e)})},t=[\"decode\",\"src\",\"loader\",\"unloader\",\"container\",\"loaderContainer\",\"unloaderContainer\",\"imgPromise\",\"crossorigin\",\"useSuspense\"],u=function(a){return a};a.Img=function(a){var b=a.decode,c=a.src,d=void 0===c?[]:c,e=a.loader,f=void 0===e?null:e,g=a.unloader,i=void 0===g?null:g,j=a.container,l=void 0===j?u:j,p=a.loaderContainer,q=void 0===p?u:p,r=a.unloaderContainer,s=void 0===r?u:r,v=a.imgPromise,w=a.crossorigin,x=a.useSuspense,y=void 0!==x&&x,z=m[\"default\"](a,t);v=v||o({decode:!(void 0!==b)||b,crossOrigin:w});var A=h({srcList:d,imgPromise:v,useSuspense:y}),B=A.src,C=A.isLoading;return B?l(n[\"default\"].createElement(\"img\",k({src:B},z))):!y&&C?q(f):!y&&i?s(i):null},a.useImage=h,Object.defineProperty(a,\"__esModule\",{value:!0})});\n//# sourceMappingURL=index.js.map\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory(require(\"react\")) : \"function\" == typeof define && define.amd ? define([ \"react\" ], factory) : \"object\" == typeof exports ? exports.MediaQuery = factory(require(\"react\")) : root.MediaQuery = factory(root.React);\n}(\"undefined\" != typeof self ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\n return function(modules) {\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n module.l = !0, module.exports;\n }\n var installedModules = {};\n return __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n }, __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n return __webpack_require__.d(getter, \"a\", getter), getter;\n }, __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 7);\n }([ function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (o) {\n if (\"string\" == typeof o) return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n return \"Object\" === n && o.constructor && (n = o.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(o) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _arrayLikeToArray(o, minLen) : void 0;\n }\n }\n function _arrayLikeToArray(arr, len) {\n (null == len || len > arr.length) && (len = arr.length);\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _iterableToArrayLimit(arr, i) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(arr)) {\n var _arr = [], _n = !0, _d = !1, _e = void 0;\n try {\n for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done) && (_arr.push(_s.value), \n !i || _arr.length !== i); _n = !0) ;\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n _n || null == _i.return || _i.return();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1), __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__), __WEBPACK_IMPORTED_MODULE_1_matchmediaquery__ = __webpack_require__(8), __WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_matchmediaquery__), __WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__ = __webpack_require__(2), __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__ = __webpack_require__(10), __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__), __WEBPACK_IMPORTED_MODULE_4__toQuery__ = __webpack_require__(3), __WEBPACK_IMPORTED_MODULE_5__Context__ = __webpack_require__(6), makeQuery = function(settings) {\n return settings.query || Object(__WEBPACK_IMPORTED_MODULE_4__toQuery__.a)(settings);\n }, hyphenateKeys = function(obj) {\n if (!obj) return null;\n var keys = Object.keys(obj);\n return 0 === keys.length ? null : keys.reduce(function(result, key) {\n return result[Object(__WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__.a)(key)] = obj[key], \n result;\n }, {});\n }, useIsUpdate = function() {\n var ref = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useRef(!1);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n ref.current = !0;\n }, []), ref.current;\n }, useDevice = function(deviceFromProps) {\n var deviceFromContext = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useContext(__WEBPACK_IMPORTED_MODULE_5__Context__.a), getDevice = function() {\n return hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext);\n }, _React$useState = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getDevice), _React$useState2 = _slicedToArray(_React$useState, 2), device = _React$useState2[0], setDevice = _React$useState2[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var newDevice = getDevice();\n __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default()(device, newDevice) || setDevice(newDevice);\n }, [ deviceFromProps, deviceFromContext ]), device;\n }, useQuery = function(settings) {\n var getQuery = function() {\n return makeQuery(settings);\n }, _React$useState3 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getQuery), _React$useState4 = _slicedToArray(_React$useState3, 2), query = _React$useState4[0], setQuery = _React$useState4[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var newQuery = getQuery();\n query !== newQuery && setQuery(newQuery);\n }, [ settings ]), query;\n }, useMatchMedia = function(query, device) {\n var getMatchMedia = function() {\n return __WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default()(query, device || {}, !!device);\n }, _React$useState5 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getMatchMedia), _React$useState6 = _slicedToArray(_React$useState5, 2), mq = _React$useState6[0], setMq = _React$useState6[1], isUpdate = useIsUpdate();\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n return isUpdate && setMq(getMatchMedia()), function() {\n mq.dispose();\n };\n }, [ query, device ]), mq;\n }, useMatches = function(mediaQuery) {\n var _React$useState7 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(mediaQuery.matches), _React$useState8 = _slicedToArray(_React$useState7, 2), matches = _React$useState8[0], setMatches = _React$useState8[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var updateMatches = function() {\n setMatches(mediaQuery.matches);\n };\n return mediaQuery.addListener(updateMatches), updateMatches(), function() {\n mediaQuery.removeListener(updateMatches);\n };\n }, [ mediaQuery ]), matches;\n }, useMediaQuery = function(settings, device, onChange) {\n var deviceSettings = useDevice(device), query = useQuery(settings);\n if (!query) throw new Error(\"Invalid or missing MediaQuery!\");\n var mq = useMatchMedia(query, deviceSettings), matches = useMatches(mq), isUpdate = useIsUpdate();\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n isUpdate && onChange && onChange(matches);\n }, [ matches ]), matches;\n };\n __webpack_exports__.a = useMediaQuery;\n }, function(module, exports) {\n module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function toHyphenLower(match) {\n return \"-\" + match.toLowerCase();\n }\n function hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) return cache[name];\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? \"-\" + hName : hName;\n }\n var uppercasePattern = /[A-Z]/g, msPattern = /^ms-/, cache = {};\n __webpack_exports__.a = hyphenateStyleName;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__ = __webpack_require__(2), __WEBPACK_IMPORTED_MODULE_1__mediaQuery__ = __webpack_require__(11), negate = function(cond) {\n return \"not \".concat(cond);\n }, keyVal = function(k, v) {\n var realKey = Object(__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__.a)(k);\n return \"number\" == typeof v && (v = \"\".concat(v, \"px\")), !0 === v ? realKey : !1 === v ? negate(realKey) : \"(\".concat(realKey, \": \").concat(v, \")\");\n }, join = function(conds) {\n return conds.join(\" and \");\n }, toQuery = function(obj) {\n var rules = [];\n return Object.keys(__WEBPACK_IMPORTED_MODULE_1__mediaQuery__.a.all).forEach(function(k) {\n var v = obj[k];\n null != v && rules.push(keyVal(k, v));\n }), join(rules);\n };\n __webpack_exports__.a = toQuery;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n module.exports = __webpack_require__(13);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n module.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1), __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__), Context = __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext();\n __webpack_exports__.a = Context;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__ = __webpack_require__(0), __WEBPACK_IMPORTED_MODULE_1__Component__ = __webpack_require__(17), __WEBPACK_IMPORTED_MODULE_2__toQuery__ = __webpack_require__(3), __WEBPACK_IMPORTED_MODULE_3__Context__ = __webpack_require__(6);\n __webpack_require__.d(__webpack_exports__, \"default\", function() {\n return __WEBPACK_IMPORTED_MODULE_1__Component__.a;\n }), __webpack_require__.d(__webpack_exports__, \"useMediaQuery\", function() {\n return __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__.a;\n }), __webpack_require__.d(__webpack_exports__, \"toQuery\", function() {\n return __WEBPACK_IMPORTED_MODULE_2__toQuery__.a;\n }), __webpack_require__.d(__webpack_exports__, \"Context\", function() {\n return __WEBPACK_IMPORTED_MODULE_3__Context__.a;\n });\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function Mql(query, values, forceStatic) {\n function addListener(listener) {\n mql && mql.addListener(listener);\n }\n function removeListener(listener) {\n mql && mql.removeListener(listener);\n }\n function update(evt) {\n self.matches = evt.matches, self.media = evt.media;\n }\n function dispose() {\n mql && mql.removeListener(update);\n }\n var self = this;\n if (dynamicMatch && !forceStatic) {\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches, this.media = mql.media, mql.addListener(update);\n } else this.matches = staticMatch(query, values), this.media = query;\n this.addListener = addListener, this.removeListener = removeListener, this.dispose = dispose;\n }\n function matchMedia(query, values, forceStatic) {\n return new Mql(query, values, forceStatic);\n }\n var staticMatch = __webpack_require__(9).match, dynamicMatch = \"undefined\" != typeof window ? window.matchMedia : null;\n module.exports = matchMedia;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function(query) {\n var inverse = query.inverse, typeMatch = \"all\" === query.type || values.type === query.type;\n if (typeMatch && inverse || !typeMatch && !inverse) return !1;\n var expressionsMatch = query.expressions.every(function(expression) {\n var feature = expression.feature, modifier = expression.modifier, expValue = expression.value, value = values[feature];\n if (!value) return !1;\n switch (feature) {\n case \"orientation\":\n case \"scan\":\n return value.toLowerCase() === expValue.toLowerCase();\n\n case \"width\":\n case \"height\":\n case \"device-width\":\n case \"device-height\":\n expValue = toPx(expValue), value = toPx(value);\n break;\n\n case \"resolution\":\n expValue = toDpi(expValue), value = toDpi(value);\n break;\n\n case \"aspect-ratio\":\n case \"device-aspect-ratio\":\n case \"device-pixel-ratio\":\n expValue = toDecimal(expValue), value = toDecimal(value);\n break;\n\n case \"grid\":\n case \"color\":\n case \"color-index\":\n case \"monochrome\":\n expValue = parseInt(expValue, 10) || 1, value = parseInt(value, 10) || 0;\n }\n switch (modifier) {\n case \"min\":\n return value >= expValue;\n\n case \"max\":\n return value <= expValue;\n\n default:\n return value === expValue;\n }\n });\n return expressionsMatch && !inverse || !expressionsMatch && inverse;\n });\n }\n function parseQuery(mediaQuery) {\n return mediaQuery.split(\",\").map(function(query) {\n query = query.trim();\n var captures = query.match(RE_MEDIA_QUERY), modifier = captures[1], type = captures[2], expressions = captures[3] || \"\", parsed = {};\n return parsed.inverse = !!modifier && \"not\" === modifier.toLowerCase(), parsed.type = type ? type.toLowerCase() : \"all\", \n expressions = expressions.match(/\\([^\\)]+\\)/g) || [], parsed.expressions = expressions.map(function(expression) {\n var captures = expression.match(RE_MQ_EXPRESSION), feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n return {\n modifier: feature[1],\n feature: feature[2],\n value: captures[2]\n };\n }), parsed;\n });\n }\n function toDecimal(ratio) {\n var numbers, decimal = Number(ratio);\n return decimal || (numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/), decimal = numbers[1] / numbers[2]), \n decimal;\n }\n function toDpi(resolution) {\n var value = parseFloat(resolution);\n switch (String(resolution).match(RE_RESOLUTION_UNIT)[1]) {\n case \"dpcm\":\n return value / 2.54;\n\n case \"dppx\":\n return 96 * value;\n\n default:\n return value;\n }\n }\n function toPx(length) {\n var value = parseFloat(length);\n switch (String(length).match(RE_LENGTH_UNIT)[1]) {\n case \"em\":\n case \"rem\":\n return 16 * value;\n\n case \"cm\":\n return 96 * value / 2.54;\n\n case \"mm\":\n return 96 * value / 2.54 / 10;\n\n case \"in\":\n return 96 * value;\n\n case \"pt\":\n return 72 * value;\n\n case \"pc\":\n return 72 * value / 12;\n\n default:\n return value;\n }\n }\n exports.match = matchQuery, exports.parse = parseQuery;\n var RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i, RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/, RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/, RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/, RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function shallowEqualObjects(objA, objB) {\n if (objA === objB) return !0;\n if (!objA || !objB) return !1;\n var aKeys = Object.keys(objA), bKeys = Object.keys(objB), len = aKeys.length;\n if (bKeys.length !== len) return !1;\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) return !1;\n }\n return !0;\n }\n module.exports = shallowEqualObjects;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n return key in obj ? Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : obj[key] = value, obj;\n }\n var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(12), __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__), stringOrNumber = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOfType([ __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number ]), matchers = {\n orientation: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf([ \"portrait\", \"landscape\" ]),\n scan: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf([ \"progressive\", \"interlace\" ]),\n aspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n deviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n colorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n monochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n resolution: stringOrNumber\n }, features = _objectSpread({\n minAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n }, matchers), types = {\n all: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n grid: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n aural: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n braille: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n handheld: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n print: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n projection: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n screen: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tty: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tv: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n embossed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool\n }, all = _objectSpread(_objectSpread({}, types), features);\n matchers.type = Object.keys(types), __webpack_exports__.a = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n };\n }, function(module, exports, __webpack_require__) {\n var ReactIs = __webpack_require__(4);\n module.exports = __webpack_require__(14)(ReactIs.isElement, !0);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n !function() {\n function isValidElementType(type) {\n return \"string\" == typeof type || \"function\" == typeof type || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || \"object\" == typeof type && null !== type && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (\"object\" == typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n function isAsyncMode(object) {\n return hasWarnedAboutDeprecatedIsAsyncMode || (hasWarnedAboutDeprecatedIsAsyncMode = !0, \n console.warn(\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\")), \n isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return \"object\" == typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n var hasSymbol = \"function\" == typeof Symbol && Symbol.for, REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103, REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106, REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107, REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108, REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114, REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109, REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110, REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111, REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111, REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112, REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113, REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120, REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115, REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116, REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121, REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117, REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118, REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119, AsyncMode = REACT_ASYNC_MODE_TYPE, ConcurrentMode = REACT_CONCURRENT_MODE_TYPE, ContextConsumer = REACT_CONTEXT_TYPE, ContextProvider = REACT_PROVIDER_TYPE, Element = REACT_ELEMENT_TYPE, ForwardRef = REACT_FORWARD_REF_TYPE, Fragment = REACT_FRAGMENT_TYPE, Lazy = REACT_LAZY_TYPE, Memo = REACT_MEMO_TYPE, Portal = REACT_PORTAL_TYPE, Profiler = REACT_PROFILER_TYPE, StrictMode = REACT_STRICT_MODE_TYPE, Suspense = REACT_SUSPENSE_TYPE, hasWarnedAboutDeprecatedIsAsyncMode = !1;\n exports.AsyncMode = AsyncMode, exports.ConcurrentMode = ConcurrentMode, exports.ContextConsumer = ContextConsumer, \n exports.ContextProvider = ContextProvider, exports.Element = Element, exports.ForwardRef = ForwardRef, \n exports.Fragment = Fragment, exports.Lazy = Lazy, exports.Memo = Memo, exports.Portal = Portal, \n exports.Profiler = Profiler, exports.StrictMode = StrictMode, exports.Suspense = Suspense, \n exports.isAsyncMode = isAsyncMode, exports.isConcurrentMode = isConcurrentMode, \n exports.isContextConsumer = isContextConsumer, exports.isContextProvider = isContextProvider, \n exports.isElement = isElement, exports.isForwardRef = isForwardRef, exports.isFragment = isFragment, \n exports.isLazy = isLazy, exports.isMemo = isMemo, exports.isPortal = isPortal, exports.isProfiler = isProfiler, \n exports.isStrictMode = isStrictMode, exports.isSuspense = isSuspense, exports.isValidElementType = isValidElementType, \n exports.typeOf = typeOf;\n }();\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n var ReactIs = __webpack_require__(4), assign = __webpack_require__(15), ReactPropTypesSecret = __webpack_require__(5), checkPropTypes = __webpack_require__(16), has = Function.call.bind(Object.prototype.hasOwnProperty), printWarning = function() {};\n printWarning = function(text) {\n var message = \"Warning: \" + text;\n \"undefined\" != typeof console && console.error(message);\n try {\n throw new Error(message);\n } catch (x) {}\n }, module.exports = function(isValidElement, throwOnDirectAccess) {\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (\"function\" == typeof iteratorFn) return iteratorFn;\n }\n function is(x, y) {\n return x === y ? 0 !== x || 1 / x == 1 / y : x !== x && y !== y;\n }\n function PropTypeError(message) {\n this.message = message, this.stack = \"\";\n }\n function createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n if (componentName = componentName || ANONYMOUS, propFullName = propFullName || propName, \n secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");\n throw err.name = \"Invariant Violation\", err;\n }\n if (\"undefined\" != typeof console) {\n var cacheKey = componentName + \":\" + propName;\n !manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3 && (printWarning(\"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"), \n manualPropTypeCallCache[cacheKey] = !0, manualPropTypeWarningCount++);\n }\n }\n return null == props[propName] ? isRequired ? new PropTypeError(null === props[propName] ? \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `null`.\" : \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `undefined`.\") : null : validate(props, propName, componentName, location, propFullName);\n }\n var manualPropTypeCallCache = {}, manualPropTypeWarningCount = 0, chainedCheckType = checkType.bind(null, !1);\n return chainedCheckType.isRequired = checkType.bind(null, !0), chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n if (getPropType(propValue) !== expectedType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPreciseType(propValue) + \"` supplied to `\" + componentName + \"`, expected `\" + expectedType + \"`.\");\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected an array.\");\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getClassName(props[propName]) + \"` supplied to `\" + componentName + \"`, expected instance of `\" + expectedClassName + \"`.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null;\n var valuesString = JSON.stringify(expectedValues, function(key, value) {\n return \"symbol\" === getPreciseType(value) ? String(value) : value;\n });\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + String(propValue) + \"` supplied to `\" + componentName + \"`, expected one of \" + valuesString + \".\");\n }\n return Array.isArray(expectedValues) ? createChainableTypeChecker(validate) : (printWarning(arguments.length > 1 ? \"Invalid arguments supplied to oneOf, expected an array, got \" + arguments.length + \" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).\" : \"Invalid argument supplied to oneOf, expected an array.\"), \n emptyFunctionThatReturnsNull);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\");\n for (var key in propValue) if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location, propFullName, ReactPropTypesSecret)) return null;\n }\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`.\");\n }\n if (!Array.isArray(arrayOfTypeCheckers)) return printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\"), \n emptyFunctionThatReturnsNull;\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (\"function\" != typeof checker) return printWarning(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i + \".\"), \n emptyFunctionThatReturnsNull;\n }\n return createChainableTypeChecker(validate);\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (checker) {\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \" \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \" \"));\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case \"number\":\n case \"string\":\n case \"undefined\":\n return !0;\n\n case \"boolean\":\n return !propValue;\n\n case \"object\":\n if (Array.isArray(propValue)) return propValue.every(isNode);\n if (null === propValue || isValidElement(propValue)) return !0;\n var iteratorFn = getIteratorFn(propValue);\n if (!iteratorFn) return !1;\n var step, iterator = iteratorFn.call(propValue);\n if (iteratorFn !== propValue.entries) {\n for (;!(step = iterator.next()).done; ) if (!isNode(step.value)) return !1;\n } else for (;!(step = iterator.next()).done; ) {\n var entry = step.value;\n if (entry && !isNode(entry[1])) return !1;\n }\n return !0;\n\n default:\n return !1;\n }\n }\n function isSymbol(propType, propValue) {\n return \"symbol\" === propType || !!propValue && (\"Symbol\" === propValue[\"@@toStringTag\"] || \"function\" == typeof Symbol && propValue instanceof Symbol);\n }\n function getPropType(propValue) {\n var propType = typeof propValue;\n return Array.isArray(propValue) ? \"array\" : propValue instanceof RegExp ? \"object\" : isSymbol(propType, propValue) ? \"symbol\" : propType;\n }\n function getPreciseType(propValue) {\n if (void 0 === propValue || null === propValue) return \"\" + propValue;\n var propType = getPropType(propValue);\n if (\"object\" === propType) {\n if (propValue instanceof Date) return \"date\";\n if (propValue instanceof RegExp) return \"regexp\";\n }\n return propType;\n }\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case \"array\":\n case \"object\":\n return \"an \" + type;\n\n case \"boolean\":\n case \"date\":\n case \"regexp\":\n return \"a \" + type;\n\n default:\n return type;\n }\n }\n function getClassName(propValue) {\n return propValue.constructor && propValue.constructor.name ? propValue.constructor.name : ANONYMOUS;\n }\n var ITERATOR_SYMBOL = \"function\" == typeof Symbol && Symbol.iterator, FAUX_ITERATOR_SYMBOL = \"@@iterator\", ANONYMOUS = \"<<anonymous>>\", ReactPropTypes = {\n array: createPrimitiveTypeChecker(\"array\"),\n bool: createPrimitiveTypeChecker(\"boolean\"),\n func: createPrimitiveTypeChecker(\"function\"),\n number: createPrimitiveTypeChecker(\"number\"),\n object: createPrimitiveTypeChecker(\"object\"),\n string: createPrimitiveTypeChecker(\"string\"),\n symbol: createPrimitiveTypeChecker(\"symbol\"),\n any: function() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }(),\n arrayOf: createArrayOfTypeChecker,\n element: function() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }(),\n elementType: function() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement type.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }(),\n instanceOf: createInstanceTypeChecker,\n node: function() {\n function validate(props, propName, componentName, location, propFullName) {\n return isNode(props[propName]) ? null : new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`, expected a ReactNode.\");\n }\n return createChainableTypeChecker(validate);\n }(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n return PropTypeError.prototype = Error.prototype, ReactPropTypes.checkPropTypes = checkPropTypes, \n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache, ReactPropTypes.PropTypes = ReactPropTypes, \n ReactPropTypes;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function toObject(val) {\n if (null === val || void 0 === val) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n return Object(val);\n }\n /*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n var getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty, propIsEnumerable = Object.prototype.propertyIsEnumerable;\n module.exports = function() {\n try {\n if (!Object.assign) return !1;\n var test1 = new String(\"abc\");\n if (test1[5] = \"de\", \"5\" === Object.getOwnPropertyNames(test1)[0]) return !1;\n for (var test2 = {}, i = 0; i < 10; i++) test2[\"_\" + String.fromCharCode(i)] = i;\n if (\"0123456789\" !== Object.getOwnPropertyNames(test2).map(function(n) {\n return test2[n];\n }).join(\"\")) return !1;\n var test3 = {};\n return \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, test3)).join(\"\");\n } catch (err) {\n return !1;\n }\n }() ? Object.assign : function(target, source) {\n for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) hasOwnProperty.call(from, key) && (to[key] = from[key]);\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]);\n }\n }\n return to;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) {\n var error;\n try {\n if (\"function\" != typeof typeSpecs[typeSpecName]) {\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\");\n throw err.name = \"Invariant Violation\", err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (!error || error instanceof Error || printWarning((componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"), \n error instanceof Error && !(error.message in loggedTypeFailures)) {\n loggedTypeFailures[error.message] = !0;\n var stack = getStack ? getStack() : \"\";\n printWarning(\"Failed \" + location + \" type: \" + error.message + (null != stack ? stack : \"\"));\n }\n }\n }\n var printWarning = function() {}, ReactPropTypesSecret = __webpack_require__(5), loggedTypeFailures = {}, has = Function.call.bind(Object.prototype.hasOwnProperty);\n printWarning = function(text) {\n var message = \"Warning: \" + text;\n \"undefined\" != typeof console && console.error(message);\n try {\n throw new Error(message);\n } catch (x) {}\n }, checkPropTypes.resetWarningCache = function() {\n loggedTypeFailures = {};\n }, module.exports = checkPropTypes;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function _objectWithoutProperties(source, excluded) {\n if (null == source) return {};\n var key, i, target = _objectWithoutPropertiesLoose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) key = sourceSymbolKeys[i], excluded.indexOf(key) >= 0 || Object.prototype.propertyIsEnumerable.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (null == source) return {};\n var key, i, target = {}, sourceKeys = Object.keys(source);\n for (i = 0; i < sourceKeys.length; i++) key = sourceKeys[i], excluded.indexOf(key) >= 0 || (target[key] = source[key]);\n return target;\n }\n function MediaQuery(_ref) {\n var children = _ref.children, device = _ref.device, onChange = _ref.onChange, settings = _objectWithoutProperties(_ref, [ \"children\", \"device\", \"onChange\" ]), matches = Object(__WEBPACK_IMPORTED_MODULE_0__useMediaQuery__.a)(settings, device, onChange);\n return \"function\" == typeof children ? children(matches) : matches ? children : null;\n }\n __webpack_exports__.a = MediaQuery;\n var __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__ = __webpack_require__(0);\n } ]);\n});\n//# sourceMappingURL=react-responsive.js.map","/**\n * React Router DOM v6.26.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a <button> or <input type=\\\"submit\\\"> without a <form>\");\n }\n // <button>/<input type=\"submit\"> may override attributes of <form>\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let {\n name,\n type,\n value\n } = target;\n if (type === \"image\") {\n let prefix = name ? name + \".\" : \"\";\n formData.append(prefix + \"x\", \"0\");\n formData.append(prefix + \"y\", \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\"Cannot submit element that is not <form>, <button>, or \" + \"<input type=\\\"submit|image\\\">\");\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n return {\n action,\n method: method.toLowerCase(),\n encType,\n formData,\n body\n };\n}\n\nconst _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\", \"unstable_viewTransition\"],\n _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"unstable_viewTransition\", \"children\"],\n _excluded3 = [\"fetcherKey\", \"navigate\", \"reloadDocument\", \"replace\", \"state\", \"method\", \"action\", \"onSubmit\", \"relative\", \"preventScrollReset\", \"unstable_viewTransition\"];\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report. This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"6\";\ntry {\n window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n // no-op\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createBrowserHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,\n unstable_patchRoutesOnNavigation: opts == null ? void 0 : opts.unstable_patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createHashHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,\n unstable_patchRoutesOnNavigation: opts == null ? void 0 : opts.unstable_patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction parseHydrationData() {\n var _window;\n let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n if (state && state.errors) {\n state = _extends({}, state, {\n errors: deserializeErrors(state.errors)\n });\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nconst ViewTransitionContext = /*#__PURE__*/React.createContext({\n isTransitioning: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n ViewTransitionContext.displayName = \"ViewTransition\";\n}\nconst FetchersContext = /*#__PURE__*/React.createContext(new Map());\nif (process.env.NODE_ENV !== \"production\") {\n FetchersContext.displayName = \"Fetchers\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\nfunction startTransitionSafe(cb) {\n if (startTransitionImpl) {\n startTransitionImpl(cb);\n } else {\n cb();\n }\n}\nfunction flushSyncSafe(cb) {\n if (flushSyncImpl) {\n flushSyncImpl(cb);\n } else {\n cb();\n }\n}\nclass Deferred {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = value => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = reason => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n}\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let [pendingState, setPendingState] = React.useState();\n let [vtContext, setVtContext] = React.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React.useState();\n let [transition, setTransition] = React.useState();\n let [interruption, setInterruption] = React.useState();\n let fetcherData = React.useRef(new Map());\n let {\n v7_startTransition\n } = future || {};\n let optInStartTransition = React.useCallback(cb => {\n if (v7_startTransition) {\n startTransitionSafe(cb);\n } else {\n cb();\n }\n }, [v7_startTransition]);\n let setState = React.useCallback((newState, _ref2) => {\n let {\n deletedFetchers,\n unstable_flushSync: flushSync,\n unstable_viewTransitionOpts: viewTransitionOpts\n } = _ref2;\n deletedFetchers.forEach(key => fetcherData.current.delete(key));\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== undefined) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== \"function\";\n // If this isn't a view transition or it's not available in this browser,\n // just update and be done with it\n if (!viewTransitionOpts || isViewTransitionUnavailable) {\n if (flushSync) {\n flushSyncSafe(() => setStateImpl(newState));\n } else {\n optInStartTransition(() => setStateImpl(newState));\n }\n return;\n }\n // flushSync + startViewTransition\n if (flushSync) {\n // Flush through the context to mark DOM elements as transition=ing\n flushSyncSafe(() => {\n // Cancel any pending transitions\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n // Update the DOM\n let t = router.window.document.startViewTransition(() => {\n flushSyncSafe(() => setStateImpl(newState));\n });\n // Clean up after the animation completes\n t.finished.finally(() => {\n flushSyncSafe(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n });\n flushSyncSafe(() => setTransition(t));\n return;\n }\n // startTransition + startViewTransition\n if (transition) {\n // Interrupting an in-progress transition, cancel and let everything flush\n // out, and then kick off a new transition from the interruption state\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n // Completed navigation update with opted-in view transitions, let 'er rip\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n // When we start a view transition, create a Deferred we can use for the\n // eventual \"completed\" render\n React.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n // Once the deferred is created, kick off startViewTransition() to update the\n // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n // happened)\n React.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition = router.window.document.startViewTransition(async () => {\n optInStartTransition(() => setStateImpl(newState));\n await renderPromise;\n });\n transition.finished.finally(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n setTransition(transition);\n }\n }, [optInStartTransition, pendingState, renderDfd, router.window]);\n // When the new location finally renders and is committed to the DOM, this\n // effect will run to resolve the transition\n React.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n // If we get interrupted with a new navigation during a transition, we skip\n // the active transition, let it cleanup, then kick it off again here\n React.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(undefined);\n }\n }, [vtContext.isTransitioning, interruption]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n let routerFuture = React.useMemo(() => ({\n v7_relativeSplatPath: router.future.v7_relativeSplatPath\n }), [router.future.v7_relativeSplatPath]);\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React.createElement(UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React.createElement(FetchersContext.Provider, {\n value: fetcherData.current\n }, /*#__PURE__*/React.createElement(ViewTransitionContext.Provider, {\n value: vtContext\n }, /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator,\n future: routerFuture\n }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(MemoizedDataRoutes, {\n routes: router.routes,\n future: router.future,\n state: state\n }) : fallbackElement))))), null);\n}\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = /*#__PURE__*/React.memo(DataRoutes);\nfunction DataRoutes(_ref3) {\n let {\n routes,\n future,\n state\n } = _ref3;\n return UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nfunction BrowserRouter(_ref4) {\n let {\n basename,\n children,\n future,\n window\n } = _ref4;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nfunction HashRouter(_ref5) {\n let {\n basename,\n children,\n future,\n window\n } = _ref5;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter(_ref6) {\n let {\n basename,\n children,\n future,\n history\n } = _ref6;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\nif (process.env.NODE_ENV !== \"production\") {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nconst Link = /*#__PURE__*/React.forwardRef(function LinkWithRef(_ref7, ref) {\n let {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n unstable_viewTransition\n } = _ref7,\n rest = _objectWithoutPropertiesLoose(_ref7, _excluded);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"<Link to=\\\"\" + to + \"\\\"> contains an invalid URL which will probably break \" + \"when clicked - please update to a valid URL path.\") : void 0;\n }\n }\n }\n // Rendered into <a href> for relative URLs\n let href = useHref(to, {\n relative\n });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n unstable_viewTransition\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n React.createElement(\"a\", _extends({}, rest, {\n href: absoluteHref || href,\n onClick: isExternal || reloadDocument ? onClick : handleClick,\n ref: ref,\n target: target\n }))\n );\n});\nif (process.env.NODE_ENV !== \"production\") {\n Link.displayName = \"Link\";\n}\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = /*#__PURE__*/React.forwardRef(function NavLinkWithRef(_ref8, ref) {\n let {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n unstable_viewTransition,\n children\n } = _ref8,\n rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);\n let path = useResolvedPath(to, {\n relative: rest.relative\n });\n let location = useLocation();\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let {\n navigator,\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let isTransitioning = routerState != null &&\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) && unstable_viewTransition === true;\n let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n // If the `to` has a trailing slash, look at that exact spot. Otherwise,\n // we're looking for a slash _after_ what's in `to`. For example:\n //\n // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n // both want to look for a / at index 6 to match URL `/users/matt`\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null, isTransitioning ? \"transitioning\" : null].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {\n \"aria-current\": ariaCurrent,\n className: className,\n ref: ref,\n style: style,\n to: to,\n unstable_viewTransition: unstable_viewTransition\n }), typeof children === \"function\" ? children(renderProps) : children);\n});\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n}\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nconst Form = /*#__PURE__*/React.forwardRef((_ref9, forwardedRef) => {\n let {\n fetcherKey,\n navigate,\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n unstable_viewTransition\n } = _ref9,\n props = _objectWithoutPropertiesLoose(_ref9, _excluded3);\n let submit = useSubmit();\n let formAction = useFormAction(action, {\n relative\n });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let submitHandler = event => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = (submitter == null ? void 0 : submitter.getAttribute(\"formmethod\")) || method;\n submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace,\n state,\n relative,\n preventScrollReset,\n unstable_viewTransition\n });\n };\n return /*#__PURE__*/React.createElement(\"form\", _extends({\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler\n }, props));\n});\nif (process.env.NODE_ENV !== \"production\") {\n Form.displayName = \"Form\";\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nfunction ScrollRestoration(_ref10) {\n let {\n getKey,\n storageKey\n } = _ref10;\n useScrollRestoration({\n getKey,\n storageKey\n });\n return null;\n}\nif (process.env.NODE_ENV !== \"production\") {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\nvar DataRouterHook;\n(function (DataRouterHook) {\n DataRouterHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n DataRouterHook[\"UseSubmit\"] = \"useSubmit\";\n DataRouterHook[\"UseSubmitFetcher\"] = \"useSubmitFetcher\";\n DataRouterHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterHook[\"useViewTransitionState\"] = \"useViewTransitionState\";\n})(DataRouterHook || (DataRouterHook = {}));\nvar DataRouterStateHook;\n(function (DataRouterStateHook) {\n DataRouterStateHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterStateHook[\"UseFetchers\"] = \"useFetchers\";\n DataRouterStateHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n// Internal hooks\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(UNSAFE_DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\n// External hooks\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nfunction useLinkClickHandler(to, _temp) {\n let {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n unstable_viewTransition\n } = _temp === void 0 ? {} : _temp;\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, {\n relative\n });\n return React.useCallback(event => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace = replaceProp !== undefined ? replaceProp : createPath(location) === createPath(path);\n navigate(to, {\n replace,\n state,\n preventScrollReset,\n relative,\n unstable_viewTransition\n });\n }\n }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, unstable_viewTransition]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nfunction useSearchParams(defaultInit) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params.\") : void 0;\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n let location = useLocation();\n let searchParams = React.useMemo(() =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);\n let navigate = useNavigate();\n let setSearchParams = React.useCallback((nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n }, [navigate, searchParams]);\n return [searchParams, setSearchParams];\n}\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n }\n}\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => \"__\" + String(++fetcherId) + \"__\";\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nfunction useSubmit() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseSubmit);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let currentRouteId = UNSAFE_useRouteId();\n return React.useCallback(function (target, options) {\n if (options === void 0) {\n options = {};\n }\n validateClientSideSubmission();\n let {\n action,\n method,\n encType,\n formData,\n body\n } = getFormSubmissionInfo(target, basename);\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n router.fetch(key, currentRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n unstable_flushSync: options.unstable_flushSync\n });\n } else {\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n unstable_flushSync: options.unstable_flushSync,\n unstable_viewTransition: options.unstable_viewTransition\n });\n }\n }, [router, basename, currentRouteId]);\n}\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nfunction useFormAction(action, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let routeContext = React.useContext(UNSAFE_RouteContext);\n !routeContext ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFormAction must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = _extends({}, useResolvedPath(action ? action : \".\", {\n relative\n }));\n // If no action was specified, browsers will persist current search params\n // when determining the path, so match that behavior\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n // When grabbing search params from the URL, remove any included ?index param\n // since it might not apply to our contextual route. We add it back based\n // on match.route.index below\n let params = new URLSearchParams(path.search);\n if (params.has(\"index\") && params.get(\"index\") === \"\") {\n params.delete(\"index\");\n path.search = params.toString() ? \"?\" + params.toString() : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nfunction useFetcher(_temp3) {\n var _route$matches;\n let {\n key\n } = _temp3 === void 0 ? {} : _temp3;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseFetcher);\n let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n let fetcherData = React.useContext(FetchersContext);\n let route = React.useContext(UNSAFE_RouteContext);\n let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n !fetcherData ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a FetchersContext\") : UNSAFE_invariant(false) : void 0;\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n // Fetcher key handling\n // OK to call conditionally to feature detect `useId`\n // eslint-disable-next-line react-hooks/rules-of-hooks\n let defaultKey = useIdImpl ? useIdImpl() : \"\";\n let [fetcherKey, setFetcherKey] = React.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n } else if (!fetcherKey) {\n // We will only fall through here when `useId` is not available\n setFetcherKey(getUniqueFetcherId());\n }\n // Registration/cleanup\n React.useEffect(() => {\n router.getFetcher(fetcherKey);\n return () => {\n // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n // will not delete immediately but instead queue up a delete after the\n // fetcher returns to an `idle` state\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n // Fetcher additions\n let load = React.useCallback((href, opts) => {\n !routeId ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"No routeId available for fetcher.load()\") : UNSAFE_invariant(false) : void 0;\n router.fetch(fetcherKey, routeId, href, opts);\n }, [fetcherKey, routeId, router]);\n let submitImpl = useSubmit();\n let submit = React.useCallback((target, opts) => {\n submitImpl(target, _extends({}, opts, {\n navigate: false,\n fetcherKey\n }));\n }, [fetcherKey, submitImpl]);\n let FetcherForm = React.useMemo(() => {\n let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(Form, _extends({}, props, {\n navigate: false,\n fetcherKey: fetcherKey,\n ref: ref\n }));\n });\n if (process.env.NODE_ENV !== \"production\") {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n }, [fetcherKey]);\n // Exposed FetcherWithComponents\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React.useMemo(() => _extends({\n Form: FetcherForm,\n submit,\n load\n }, fetcher, {\n data\n }), [FetcherForm, submit, load, fetcher, data]);\n return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nfunction useFetchers() {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return Array.from(state.fetchers.entries()).map(_ref11 => {\n let [key, fetcher] = _ref11;\n return _extends({}, fetcher, {\n key\n });\n });\n}\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions = {};\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration(_temp4) {\n let {\n getKey,\n storageKey\n } = _temp4 === void 0 ? {} : _temp4;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let {\n restoreScrollPosition,\n preventScrollReset\n } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n // Save positions on pagehide\n usePageHide(React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n } catch (error) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (\" + error + \").\") : void 0;\n }\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches]));\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename = getKey && basename !== \"/\" ? (location, matches) => getKey( // Strip the basename to match useLocation()\n _extends({}, location, {\n pathname: stripBasename(location.pathname, basename) || location.pathname\n }), matches) : getKey;\n let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction useBeforeUnload(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt(_ref12) {\n let {\n when,\n message\n } = _ref12;\n let blocker = useBlocker(when);\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href. You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(to, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let vtContext = React.useContext(ViewTransitionContext);\n !(vtContext != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"`unstable_useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. \" + \"Did you accidentally import `RouterProvider` from `react-router`?\") : UNSAFE_invariant(false) : void 0;\n let {\n basename\n } = useDataRouterContext(DataRouterHook.useViewTransitionState);\n let path = useResolvedPath(to, {\n relative: opts.relative\n });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n // Transition is active if we're going to or coming from the indicated\n // destination. This ensures that other PUSH navigations that reverse\n // an indicated transition apply. I.e., on the list view you have:\n //\n // <NavLink to=\"/details/1\" unstable_viewTransition>\n //\n // If you click the breadcrumb back to the list view:\n //\n // <NavLink to=\"/list\" unstable_viewTransition>\n //\n // We should apply the transition because it's indicated as active going\n // from /list -> /details/1 and therefore should be active on the reverse\n // (even though this isn't strictly a POP reverse)\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n//#endregion\n\nexport { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useViewTransitionState as unstable_useViewTransitionState, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit };\n//# sourceMappingURL=index.js.map\n","/**\n * @remix-run/router v1.19.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route (<Route path=\"*\">) since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded, allowPartial);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname, allowPartial) {\n if (allowPartial === void 0) {\n allowPartial = false;\n }\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n }, remainingPathname);\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in <Link to=\\\"...\\\"> and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how <a href> works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass DataWithResponseInit {\n constructor(data, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data;\n this.init = init || null;\n }\n}\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nfunction data(data, init) {\n return new DataWithResponseInit(data, typeof init === \"number\" ? {\n status: init\n } : init);\n}\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n let initialized;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some(m => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some(m => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = m => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (typeof m.route.loader === \"function\" && m.route.loader.hydrate === true) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined;\n };\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = new Set();\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let {\n error,\n notFoundMatches,\n route\n } = handleNavigational404(location.pathname);\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a <Form method=\"post\">\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionResult;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [findNearestBoundary(matches).route.id, {\n type: ResultType.error,\n error: opts.pendingError\n }];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {\n replace: opts.replace,\n flushSync\n });\n if (actionResult.shortCircuited) {\n return;\n }\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error\n }\n });\n return;\n }\n }\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n // Create a GET request for the loaders\n request = createClientSideRequest(init.history, request.url, request.signal);\n }\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches: updatedMatches || matches\n }, getActionDataForCommit(pendingActionResult), {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, isFogOfWar, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n if (discoverResult.type === \"aborted\") {\n return {\n shortCircuited: true\n };\n } else if (discoverResult.type === \"error\") {\n let {\n boundaryId,\n error\n } = handleDiscoverRouteError(location.pathname, discoverResult);\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [boundaryId, {\n type: ResultType.error,\n error\n }]\n };\n } else if (!discoverResult.matches) {\n let {\n notFoundMatches,\n error,\n route\n } = handleNavigational404(location.pathname);\n return {\n matches: notFoundMatches,\n pendingActionResult: [route.id, {\n type: ResultType.error,\n error\n }]\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches);\n result = results[0];\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename);\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData !== undefined ? {\n actionData\n } : {}), {\n flushSync\n });\n }\n let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n if (discoverResult.type === \"aborted\") {\n return {\n shortCircuited: true\n };\n } else if (discoverResult.type === \"error\") {\n let {\n boundaryId,\n error\n } = handleDiscoverRouteError(location.pathname, discoverResult);\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error\n }\n };\n } else if (!discoverResult.matches) {\n let {\n error,\n notFoundMatches,\n route\n } = handleNavigational404(location.pathname);\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null\n }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n if (shouldUpdateNavigationState) {\n let updates = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors).filter(_ref2 => {\n let [id] = _ref2;\n return !matchesToLoad.some(m => m.route.id === id);\n }).forEach(_ref3 => {\n let [routeId, error] = _ref3;\n errors = Object.assign(errors || {}, {\n [routeId]: error\n });\n });\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n matches,\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n function getUpdatedActionData(pendingActionResult) {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n function detectAndHandle405Error(m) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return true;\n }\n return false;\n }\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(requestMatches, path, fetchRequest.signal);\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let {\n error\n } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: path\n }), {\n flushSync\n });\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\"action\", fetchRequest, [match], requestMatches);\n let actionResult = actionResults[0];\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(matches, path, fetchRequest.signal);\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let {\n error\n } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: path\n }), {\n flushSync\n });\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\"loader\", fetchRequest, [match], matches);\n let result = results[0];\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(request, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(location, new URL(request.url), basename);\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true || redirect.response.headers.has(\"X-Remix-Replace\") ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches) {\n try {\n let results = await callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath)\n };\n }\n return convertHandlerResultToDataResult(result);\n }));\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e\n }));\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n let [loaderResults, ...fetcherResults] = await Promise.all([matchesToLoad.length ? callDataStrategy(\"loader\", request, matchesToLoad, matches) : [], ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(init.history, f.path, f.controller.signal);\n return callDataStrategy(\"loader\", fetcherRequest, [f.match], f.matches).then(r => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n });\n }\n })]);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref4) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref4;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function handleNavigational404(pathname) {\n let error = getInternalRouterError(404, {\n pathname\n });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let {\n matches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n return {\n notFoundMatches: matches,\n route,\n error\n };\n }\n function handleDiscoverRouteError(pathname, discoverResult) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message: discoverResult.error != null && \"message\" in discoverResult.error ? discoverResult.error : String(discoverResult.error)\n })\n };\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function checkFogOfWar(matches, routesToUse, pathname) {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return {\n active: false,\n matches\n };\n }\n if (!matches) {\n let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n return {\n active: true,\n matches: fogMatches || []\n };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n return {\n active: true,\n matches: partialMatches\n };\n }\n }\n }\n return {\n active: false,\n matches: null\n };\n }\n async function discoverRoutes(matches, pathname, signal) {\n let partialMatches = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(patchRoutesOnNavigationImpl, pathname, partialMatches, routesToUse, manifest, mapRouteProperties, pendingPatchRoutes, signal);\n } catch (e) {\n return {\n type: \"error\",\n error: e,\n partialMatches\n };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n if (signal.aborted) {\n return {\n type: \"aborted\"\n };\n }\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return {\n type: \"success\",\n matches: newMatches\n };\n }\n let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n // Avoid loops if the second pass results in the same partial matches\n if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {\n addToFifoQueue(pathname, discoveredRoutes);\n return {\n type: \"success\",\n matches: null\n };\n }\n partialMatches = newPartialMatches;\n }\n }\n function addToFifoQueue(path, queue) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n function patchRoutes(routeId, children) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties);\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(request, _temp3) {\n let {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, skipLoaderErrorBubbling === true, null);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext,\n unstable_dataStrategy\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, false, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, unstable_dataStrategy);\n result = results[0];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null);\n return _extends({}, context, {\n actionData: {\n [actionMatch.route.id]: result.data\n }\n }, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionHeaders: result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {}\n });\n }\n async function loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy) {\n let results = await callDataStrategyImpl(unstable_dataStrategy || defaultDataStrategy, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath);\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n return convertHandlerResultToDataResult(result);\n }));\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref5) => {\n let [name, value] = _ref5;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[0] : undefined;\n let boundaryMatches = boundaryId ? getLoaderMatchesUntilBoundary(matches, boundaryId) : matches;\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false :\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(patchRoutesOnNavigationImpl, path, matches, routes, manifest, mapRouteProperties, pendingRouteChildren, signal) {\n let key = [path, ...matches.map(m => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(routeId, children, routes, manifest, mapRouteProperties);\n }\n }\n });\n pendingRouteChildren.set(key, pending);\n }\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties) {\n if (routeId) {\n var _route$children;\n let route = manifest[routeId];\n invariant(route, \"No route found to patch children into: routeId = \" + routeId);\n let dataChildren = convertRoutesToDataRoutes(children, mapRouteProperties, [routeId, \"patch\", String(((_route$children = route.children) == null ? void 0 : _route$children.length) || \"0\")], manifest);\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(children, mapRouteProperties, [\"patch\", String(routesToUse.length || \"0\")], manifest);\n routesToUse.push(...dataChildren);\n }\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(opts) {\n return Promise.all(opts.matches.map(m => m.resolve()));\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext) {\n let routeIdsToLoad = matchesToLoad.reduce((acc, m) => acc.add(m.route.id), new Set());\n let loadedMatches = new Set();\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map(match => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve = handlerOverride => {\n loadedMatches.add(match.route.id);\n return shouldLoad ? callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, requestContext) : Promise.resolve({\n type: ResultType.data,\n result: undefined\n });\n };\n return _extends({}, match, {\n shouldLoad,\n resolve\n });\n }),\n request,\n params: matches[0].params,\n context: requestContext\n });\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach(m => invariant(loadedMatches.has(m.route.id), \"`match.resolve()` was not called for route id \\\"\" + m.route.id + \"\\\". \" + \"You must call `match.resolve()` on every match passed to \" + \"`dataStrategy` to ensure all routes are properly loaded.\"));\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n // This will never resolve so safe to type it as Promise<HandlerResult> to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = ctx => {\n if (typeof handler !== \"function\") {\n return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n }\n return handler({\n request,\n params: match.params,\n context: staticContext\n }, ...(ctx !== undefined ? [ctx] : []));\n };\n let handlerPromise;\n if (handlerOverride) {\n handlerPromise = handlerOverride(ctx => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return {\n type: \"data\",\n result: val\n };\n } catch (e) {\n return {\n type: \"error\",\n result: e\n };\n }\n })();\n }\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n result: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return {\n type: ResultType.error,\n result: e\n };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertHandlerResultToDataResult(handlerResult) {\n let {\n result,\n type\n } = handlerResult;\n if (isResponse(result)) {\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n var _result$init2;\n if (result.data instanceof Error) {\n var _result$init;\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status\n };\n }\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(((_result$init2 = result.init) == null ? void 0 : _result$init2.status) || 500, undefined, result.data);\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined\n };\n }\n if (isDeferredData(result)) {\n var _result$init3, _result$init4;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init3 = result.init) == null ? void 0 : _result$init3.status,\n headers: ((_result$init4 = result.init) == null ? void 0 : _result$init4.headers) && new Headers(result.init.headers)\n };\n }\n if (isDataWithResponseInit(result)) {\n var _result$init5, _result$init6;\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,\n headers: (_result$init6 = result.init) != null && _result$init6.headers ? new Headers(result.init.headers) : undefined\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n let location = response.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = {\n [pendingActionResult[0]]: pendingError\n };\n loaderData[pendingActionResult[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n );\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type,\n message\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage = \"Unable to match URL \\\"\" + pathname + \"\\\" - the `unstable_patchRoutesOnNavigation()` \" + (\"function threw the following error:\\n\" + message);\n } else if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isPromise(val) {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\nfunction isHandlerResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectHandlerResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDataWithResponseInit(value) {\n return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, decodePath as UNSAFE_decodePath, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDataWithResponseInit, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, replace, resolvePath, resolveTo, stripBasename, data as unstable_data };\n//# sourceMappingURL=router.js.map\n","/**\n * React Router v6.26.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_invariant, joinPaths, matchPath, UNSAFE_decodePath, UNSAFE_getResolveToMatches, UNSAFE_warning, resolveTo, parsePath, matchRoutes, Action, UNSAFE_convertRouteMatchToUiMatch, stripBasename, IDLE_BLOCKER, isRouteErrorResponse, createMemoryHistory, AbortedDeferredError, createRouter } from '@remix-run/router';\nexport { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, replace, resolvePath } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nconst DataRouterContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterContext.displayName = \"DataRouter\";\n}\nconst DataRouterStateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n AwaitContext.displayName = \"Await\";\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n NavigationContext.displayName = \"Navigation\";\n}\nconst LocationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n LocationContext.displayName = \"Location\";\n}\nconst RouteContext = /*#__PURE__*/React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n RouteContext.displayName = \"Route\";\n}\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nfunction useHref(to, _temp) {\n let {\n relative\n } = _temp === void 0 ? {} : _temp;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useHref() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n basename,\n navigator\n } = React.useContext(NavigationContext);\n let {\n hash,\n pathname,\n search\n } = useResolvedPath(to, {\n relative\n });\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({\n pathname: joinedPathname,\n search,\n hash\n });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nfunction useInRouterContext() {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nfunction useLocation() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useLocation() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nfunction useNavigationType() {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nfunction useMatch(pattern) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useMatch() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n pathname\n } = useLocation();\n return React.useMemo(() => matchPath(pattern, UNSAFE_decodePath(pathname)), [pathname, pattern]);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\nconst navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\";\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nfunction useNavigate() {\n let {\n isDataRoute\n } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useNavigate() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let dataRouterContext = React.useContext(DataRouterContext);\n let {\n basename,\n future,\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nfunction useOutletContext() {\n return React.useContext(OutletContext);\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nfunction useOutlet(context) {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n value: context\n }, outlet);\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nfunction useParams() {\n let {\n matches\n } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nfunction useResolvedPath(to, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n future\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useRoutes() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches: parentMatches\n } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (process.env.NODE_ENV !== \"production\") {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant <Routes> (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under <Route path=\\\"\" + parentPath + \"\\\">) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent <Route path=\\\"\" + parentPath + \"\\\"> to <Route \") + (\"path=\\\"\" + (parentPath === \"/\" ? \"*\" : parentPath + \"/*\") + \"\\\">.\"));\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n var _parsedLocationArg$pa;\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : UNSAFE_invariant(false) : void 0;\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, {\n pathname: remainingPathname\n });\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \" + \"does not have an element or Component. This means it will render an <Outlet /> with a \" + \"null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n }\n let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n })), parentMatches, dataRouterState, future);\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n value: {\n location: _extends({\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\"\n }, location),\n navigationType: Action.Pop\n }\n }, renderedMatches);\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = {\n padding: \"0.5rem\",\n backgroundColor: lightgrey\n };\n let codeStyles = {\n padding: \"2px 4px\",\n backgroundColor: lightgrey\n };\n let devInfo = null;\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n devInfo = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"ErrorBoundary\"), \" or\", \" \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"errorElement\"), \" prop on your route.\"));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unexpected Application Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n fontStyle: \"italic\"\n }\n }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n style: preStyles\n }, stack) : null, devInfo);\n}\nconst defaultErrorElement = /*#__PURE__*/React.createElement(DefaultErrorComponent, null);\nclass RenderErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error: error\n };\n }\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"React Router caught the following error during render\", error, errorInfo);\n }\n render() {\n return this.state.error !== undefined ? /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: this.props.routeContext\n }, /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n value: this.state.error,\n children: this.props.component\n })) : this.props.children;\n }\n}\nfunction RenderedRoute(_ref) {\n let {\n routeContext,\n match,\n children\n } = _ref;\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: routeContext\n }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n var _dataRouterState;\n if (parentMatches === void 0) {\n parentMatches = [];\n }\n if (dataRouterState === void 0) {\n dataRouterState = null;\n }\n if (future === void 0) {\n future = null;\n }\n if (matches == null) {\n var _future;\n if (!dataRouterState) {\n return null;\n }\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches;\n } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // `<Routes>`\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);\n !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : UNSAFE_invariant(false) : void 0;\n renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let {\n loaderData,\n errors\n } = dataRouterState;\n let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `<Route Component={...}>` in `<Routes>` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = /*#__PURE__*/React.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /*#__PURE__*/React.createElement(RenderedRoute, {\n match: match,\n routeContext: {\n outlet,\n matches,\n isDataRoute: dataRouterState != null\n },\n children: children\n });\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error: error,\n children: getChildren(),\n routeContext: {\n outlet: null,\n matches,\n isDataRoute: true\n }\n }) : getChildren();\n }, null);\n}\nvar DataRouterHook = /*#__PURE__*/function (DataRouterHook) {\n DataRouterHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterHook[\"UseNavigateStable\"] = \"useNavigate\";\n return DataRouterHook;\n}(DataRouterHook || {});\nvar DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {\n DataRouterStateHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterStateHook[\"UseNavigateStable\"] = \"useNavigate\";\n DataRouterStateHook[\"UseRouteId\"] = \"useRouteId\";\n return DataRouterStateHook;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React.useContext(RouteContext);\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, hookName + \" can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nfunction useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nfunction useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(() => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation\n }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nfunction useMatches() {\n let {\n matches,\n loaderData\n } = useDataRouterState(DataRouterStateHook.UseMatches);\n return React.useMemo(() => matches.map(m => UNSAFE_convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nfunction useLoaderData() {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n if (state.errors && state.errors[routeId] != null) {\n console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nfunction useActionData() {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nfunction useRouteError() {\n var _state$errors;\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nfunction useAsyncValue() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nfunction useAsyncError() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._error;\n}\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nfunction useBlocker(shouldBlock) {\n let {\n router,\n basename\n } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(arg => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = arg;\n return shouldBlock({\n currentLocation: _extends({}, currentLocation, {\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n }),\n nextLocation: _extends({}, nextLocation, {\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n }),\n historyAction\n });\n }, [basename, shouldBlock]);\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, _extends({\n fromRouteId: id\n }, options));\n }\n }, [router, id]);\n return navigate;\n}\nconst alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, message) : void 0;\n }\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n }, [setStateImpl, v7_startTransition]);\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React.createElement(DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator,\n future: {\n v7_relativeSplatPath: router.future.v7_relativeSplatPath\n }\n }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(DataRoutes, {\n routes: router.routes,\n future: router.future,\n state: state\n }) : fallbackElement))), null);\n}\nfunction DataRoutes(_ref2) {\n let {\n routes,\n future,\n state\n } = _ref2;\n return useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nfunction MemoryRouter(_ref3) {\n let {\n basename,\n children,\n initialEntries,\n initialIndex,\n future\n } = _ref3;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nfunction Navigate(_ref4) {\n let {\n to,\n replace,\n state,\n relative\n } = _ref4;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n \"<Navigate> may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n future,\n static: isStatic\n } = React.useContext(NavigationContext);\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(!isStatic, \"<Navigate> must not be used on the initial render in a <StaticRouter>. \" + \"This is a no-op, but you should modify your code so the <Navigate> is \" + \"only ever rendered in response to some user interaction or state change.\") : void 0;\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let navigate = useNavigate();\n\n // Resolve the path outside of the effect so that when effects run twice in\n // StrictMode they navigate to the same place\n let path = resolveTo(to, UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath), locationPathname, relative === \"path\");\n let jsonPath = JSON.stringify(path);\n React.useEffect(() => navigate(JSON.parse(jsonPath), {\n replace,\n state,\n relative\n }), [navigate, jsonPath, relative, replace, state]);\n return null;\n}\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nfunction Route(_props) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"A <Route> is only ever to be used as the child of <Routes> element, \" + \"never rendered directly. Please wrap your <Route> in a <Routes>.\") : UNSAFE_invariant(false) ;\n}\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nfunction Router(_ref5) {\n let {\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = Action.Pop,\n navigator,\n static: staticProp = false,\n future\n } = _ref5;\n !!useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"You cannot render a <Router> inside another <Router>.\" + \" You should never have more than one in your app.\") : UNSAFE_invariant(false) : void 0;\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(() => ({\n basename,\n navigator,\n static: staticProp,\n future: _extends({\n v7_relativeSplatPath: false\n }, future)\n }), [basename, future, navigator, staticProp]);\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n let locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n if (trailingPathname == null) {\n return null;\n }\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n },\n navigationType\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(locationContext != null, \"<Router basename=\\\"\" + basename + \"\\\"> is not able to match the URL \" + (\"\\\"\" + pathname + search + hash + \"\\\" because it does not start with the \") + \"basename, so the <Router> won't render anything.\") : void 0;\n if (locationContext == null) {\n return null;\n }\n return /*#__PURE__*/React.createElement(NavigationContext.Provider, {\n value: navigationContext\n }, /*#__PURE__*/React.createElement(LocationContext.Provider, {\n children: children,\n value: locationContext\n }));\n}\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nfunction Routes(_ref6) {\n let {\n children,\n location\n } = _ref6;\n return useRoutes(createRoutesFromChildren(children), location);\n}\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nfunction Await(_ref7) {\n let {\n children,\n errorElement,\n resolve\n } = _ref7;\n return /*#__PURE__*/React.createElement(AwaitErrorBoundary, {\n resolve: resolve,\n errorElement: errorElement\n }, /*#__PURE__*/React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus = /*#__PURE__*/function (AwaitRenderStatus) {\n AwaitRenderStatus[AwaitRenderStatus[\"pending\"] = 0] = \"pending\";\n AwaitRenderStatus[AwaitRenderStatus[\"success\"] = 1] = \"success\";\n AwaitRenderStatus[AwaitRenderStatus[\"error\"] = 2] = \"error\";\n return AwaitRenderStatus;\n}(AwaitRenderStatus || {});\nconst neverSettledPromise = new Promise(() => {});\nclass AwaitErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"<Await> caught the following error during render\", error, errorInfo);\n }\n render() {\n let {\n children,\n errorElement,\n resolve\n } = this.props;\n let promise = null;\n let status = AwaitRenderStatus.pending;\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_data\", {\n get: () => resolve\n });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_error\", {\n get: () => renderError\n });\n } else if (resolve._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status = \"_error\" in promise ? AwaitRenderStatus.error : \"_data\" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", {\n get: () => true\n });\n promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n get: () => data\n }), error => Object.defineProperty(resolve, \"_error\", {\n get: () => error\n }));\n }\n if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: errorElement\n });\n }\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: children\n });\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait(_ref8) {\n let {\n children\n } = _ref8;\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, toRender);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nfunction createRoutesFromChildren(children, parentPath) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n let routes = [];\n React.Children.forEach(children, (element, index) => {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n let treePath = [...parentPath, index];\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));\n return;\n }\n !(element.type === Route) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>\") : UNSAFE_invariant(false) : void 0;\n !(!element.props.index || !element.props.children) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"An index route cannot have child routes.\") : UNSAFE_invariant(false) : void 0;\n let route = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy\n };\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children, treePath);\n }\n routes.push(route);\n });\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\n\nfunction mapRouteProperties(route) {\n let updates = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null\n };\n if (route.Component) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.element) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `Component` and `element` on your route - \" + \"`Component` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n element: /*#__PURE__*/React.createElement(route.Component),\n Component: undefined\n });\n }\n if (route.HydrateFallback) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.hydrateFallbackElement) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" + \"`HydrateFallback` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n hydrateFallbackElement: /*#__PURE__*/React.createElement(route.HydrateFallback),\n HydrateFallback: undefined\n });\n }\n if (route.ErrorBoundary) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.errorElement) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" + \"`ErrorBoundary` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n errorElement: /*#__PURE__*/React.createElement(route.ErrorBoundary),\n ErrorBoundary: undefined\n });\n }\n return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createMemoryHistory({\n initialEntries: opts == null ? void 0 : opts.initialEntries,\n initialIndex: opts == null ? void 0 : opts.initialIndex\n }),\n hydrationData: opts == null ? void 0 : opts.hydrationData,\n routes,\n mapRouteProperties,\n unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,\n unstable_patchRoutesOnNavigation: opts == null ? void 0 : opts.unstable_patchRoutesOnNavigation\n }).initialize();\n}\n\nexport { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jsonLdScriptProps = exports.JsonLd = exports.helmetJsonLdProp = void 0;\nvar json_ld_1 = require(\"./json-ld\");\nObject.defineProperty(exports, \"helmetJsonLdProp\", { enumerable: true, get: function () { return json_ld_1.helmetJsonLdProp; } });\nObject.defineProperty(exports, \"JsonLd\", { enumerable: true, get: function () { return json_ld_1.JsonLd; } });\nObject.defineProperty(exports, \"jsonLdScriptProps\", { enumerable: true, get: function () { return json_ld_1.jsonLdScriptProps; } });\n","\"use strict\";\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.helmetJsonLdProp = exports.jsonLdScriptProps = exports.JsonLd = void 0;\nconst React = require(\"react\");\nfunction JsonLd(props) {\n return React.createElement(\"script\", Object.assign({}, jsonLdScriptProps(props.item, props)));\n}\nexports.JsonLd = JsonLd;\nfunction jsonLdScriptProps(item, options = {}) {\n return {\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: {\n __html: JSON.stringify(item, safeJsonLdReplacer, options.space),\n },\n };\n}\nexports.jsonLdScriptProps = jsonLdScriptProps;\nfunction helmetJsonLdProp(item, options = {}) {\n return {\n type: \"application/ld+json\",\n innerHTML: JSON.stringify(item, safeJsonLdReplacer, options.space),\n };\n}\nexports.helmetJsonLdProp = helmetJsonLdProp;\nconst ESCAPE_ENTITIES = Object.freeze({\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n});\nconst ESCAPE_REGEX = new RegExp(`[${Object.keys(ESCAPE_ENTITIES).join(\"\")}]`, \"g\");\nconst ESCAPE_REPLACER = (t) => ESCAPE_ENTITIES[t];\n/**\n * A replacer for JSON.stringify to strip JSON-LD of illegal HTML entities\n * per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements\n */\nconst safeJsonLdReplacer = (() => {\n // Replace per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements\n // Solution from https://stackoverflow.com/a/5499821/864313\n return (_, value) => {\n switch (typeof value) {\n case \"object\":\n // Omit null values.\n if (value === null) {\n return undefined;\n }\n return value; // JSON.stringify will recursively call replacer.\n case \"number\":\n case \"boolean\":\n case \"bigint\":\n return value; // These values are not risky.\n case \"string\":\n return value.replace(ESCAPE_REGEX, ESCAPE_REPLACER);\n default: {\n // We shouldn't expect other types.\n isNever(value);\n // JSON.stringify will remove this element.\n return undefined;\n }\n }\n };\n})();\n// Utility: Assert never\nfunction isNever(_) { }\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n// the entire query to fail, resulting in no nodes found, which will break a lot\n// of things... so we have to rely on JS to identify nodes inside an inert container\nvar candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n // so it likely would not support `:is([inert] *)` either...\n var result = inert || lookUp && node && isInert(node.parentNode); // recursive\n\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert, all its children are inert\n if (isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled ||\n // we must do an inert look up to filter out any elements inside an inert ancestor\n // because we're limited in the type of selectors we can use in JSDom (see related\n // note related to `candidateSelectors`)\n isInert(node) || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isValidShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-classes-per-file */\nimport { appConfig } from '../appConfig';\n\ntype EventNames =\n | 'transaction'\n // so it doesnt collide with legacy checkout event\n | 'checkout2'\n | 'purchase'\n | 'recipeClick'\n | 'interaction'\n | 'virtualPageView'\n | 'nonInteraction'\n | 'refund'\n | 'emptyCart'\n | 'modalPopup'\n | 'error';\n\nexport interface AnalyticsInteractionClickEvent extends Event {\n eventCategory: string;\n eventAction: string;\n eventLabel?: string;\n filterCombination?: string;\n callback: Function;\n additionalData?: object;\n}\n\nexport interface NonInteractionUserEvent extends Event {\n pointShopPoints: string;\n utbud: string; // selection support\n dimension23: string; // antalKop\n}\n\ninterface InteractionFieldObject {\n event: string;\n eventCategory: string;\n eventAction: string;\n eventLabel?: string;\n eventValue?: string;\n filterCombination?: string;\n eventCallback?: Function;\n}\n\ninterface InteractionUserFieldObject extends InteractionFieldObject {\n pointShopPoints: string;\n utbud: string;\n dimension23: string;\n}\n\n/**\n * Those properties are mostly set in Epi blocks, see IGaPromoData interface on backend\n * If product views are loaded via AJAX, the initial render will only have list name, and the item position will be filled once fetching is done.\n * */\nexport interface AnalyticsListOptions {\n list?: string; // list name, if available\n listPosition?: number; // index of a list, if multiple lists exist (i.e. start page), 0-based\n position?: number; // index of item (product) in a list, 0-based\n}\n\nexport interface AnalyticsEmptyCartEvent extends Event {\n eventAction: string;\n}\n\nexport interface AnalyticsVoucherInteractionEvent extends Event {\n campaignCode: string;\n eventLabel: string;\n}\n\ninterface ActionFieldObject {\n event?: EventNames;\n eventCategory?: string;\n eventLabel?: string;\n eventAction?: string;\n ecommerce?: EcommerceObject;\n}\n\ninterface EcommerceObject {\n impressions?: ProductFieldObject[];\n detail?: DetailFieldObject;\n refund?: RefundFieldObject;\n}\n\ninterface RefundFieldObject {\n actionField: OrderActionFieldObject;\n}\n\ninterface DetailFieldObject {\n products: ProductDetailFieldObject[];\n}\n\ninterface ProductDetailFieldObject {\n id: string;\n price: string;\n EAN: string;\n name: string;\n brand: string;\n category: string;\n variant: string;\n dimension89: string;\n}\n\nexport interface ProductFieldObject extends BaseProductObject {\n list?: string;\n}\n\ninterface BaseProductObject {\n id: string;\n price: number | string;\n variant: string;\n quantity?: number;\n EAN?: string;\n name: string;\n brand: string;\n category: string;\n position?: number | string;\n}\n\ninterface OrderActionFieldObject {\n id: string;\n}\n\ninterface VoucherInteractionObject {\n event: EventNames;\n eventCategory: string;\n eventAction: string;\n eventLabel: string;\n campaignCode: string;\n}\n\ninterface SubscriptionInteractionObject {\n event: EventNames;\n eventCategory: string;\n eventAction: string;\n eventLabel: string;\n subscriptionInterval: string;\n checkoutStep: string;\n}\n\ninterface DeliveryInfoObject {\n event: EventNames;\n eventCategory: string;\n eventAction: string;\n eventLabel: string;\n checkoutStep: string;\n}\n\nexport class AnalyticsHandler {\n private static initialized = false;\n\n public static initialize() {\n if (AnalyticsHandler.initialized) return;\n AnalyticsHandler.initialized = true;\n window.addEventListener(\n 'ga:interactionWithoutCustomerSegment',\n AnalyticsHandler.interactionClickWithoutCustomerSegment as any,\n );\n window.addEventListener(\n 'ga:nonInteractionUser',\n AnalyticsHandler.nonInteractionUserEvent as any,\n );\n window.addEventListener('ga:emptyCart', AnalyticsHandler.emptyCart as any);\n window.addEventListener(\n 'ga:voucherInteraction',\n AnalyticsHandler.voucherInteraction as any,\n );\n window.addEventListener('ga:deliveryInfo', AnalyticsHandler.deliveryInfo);\n }\n\n // Uses adapter pattern instead of updating lots of coupled interfaces for legacy events and relate new\n private static adaptWithLoginStatus<TEvent = object>(gaEvent: TEvent) {\n return {\n ...gaEvent,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n };\n }\n\n private static interactionClickWithoutCustomerSegment(\n interactionEvent: AnalyticsInteractionClickEvent,\n ) {\n setTimeout(() => {\n if (\n !interactionEvent ||\n !interactionEvent.eventCategory ||\n !interactionEvent.eventAction\n )\n return;\n\n const { eventCategory, eventAction, eventLabel, filterCombination } = interactionEvent;\n\n let gaEvent: InteractionFieldObject = {\n event: 'interaction',\n eventCategory,\n eventAction,\n eventLabel,\n filterCombination,\n };\n\n if (interactionEvent.additionalData) {\n gaEvent = Object.assign(gaEvent, interactionEvent.additionalData);\n }\n\n const analyticsData = <InteractionFieldObject>JSON.parse(JSON.stringify(gaEvent));\n analyticsData.eventCallback = interactionEvent.callback;\n window.dataLayer.push(AnalyticsHandler.adaptWithLoginStatus(analyticsData));\n }, 0);\n }\n\n private static nonInteractionUserEvent(nonInteractionUserEvent: NonInteractionUserEvent) {\n setTimeout(() => {\n const gaEvent: InteractionUserFieldObject = {\n event: 'nonInteractionUser',\n eventCategory: 'Dimensioner',\n eventAction: 'Dimensioner inskickade',\n pointShopPoints: nonInteractionUserEvent.pointShopPoints,\n utbud: nonInteractionUserEvent.utbud,\n dimension23: nonInteractionUserEvent.dimension23,\n };\n\n window.dataLayer.push(JSON.parse(JSON.stringify(gaEvent)));\n }, 0);\n }\n\n private static emptyCart(event: AnalyticsEmptyCartEvent) {\n setTimeout(() => {\n if (!event) return;\n\n const gaEvent: ActionFieldObject = {\n event: 'emptyCart',\n eventAction: event.eventAction,\n eventLabel: 'Töm varukorgen',\n };\n\n const analyticsData = JSON.parse(JSON.stringify(gaEvent));\n window.dataLayer.push(analyticsData);\n }, 0);\n }\n\n private static voucherInteraction(event: AnalyticsVoucherInteractionEvent) {\n setTimeout(() => {\n if (!event) {\n return;\n }\n\n const gaEvent: VoucherInteractionObject = {\n event: 'interaction',\n eventCategory: 'Ecommerce',\n eventAction: 'Checkout - Varukorg',\n eventLabel: event.eventLabel,\n campaignCode: event.campaignCode,\n };\n\n const analyticsData = <VoucherInteractionObject>JSON.parse(JSON.stringify(gaEvent));\n window.dataLayer.push(AnalyticsHandler.adaptWithLoginStatus(analyticsData));\n }, 0);\n }\n\n private static deliveryInfo() {\n setTimeout(() => {\n const gaEvent = {\n event: 'interaction',\n eventCategory: 'Ecommerce',\n eventAction: 'Leverans',\n eventLabel: 'Lägg till leveransmetod',\n checkoutStep: '3',\n } as SubscriptionInteractionObject;\n\n const analyticsData = <DeliveryInfoObject>JSON.parse(JSON.stringify(gaEvent));\n window.dataLayer.push(AnalyticsHandler.adaptWithLoginStatus(analyticsData));\n }, 0);\n }\n}\n\nexport class AnalyticsHelper {\n public static getLoginStatus() {\n const isMember = appConfig.coopUserSettings.isMedmeraCustomer;\n const isLoggedIn = appConfig.coopUserSettings.isAuthenticated;\n\n if (isMember && isLoggedIn) {\n return 'Inloggad medlem';\n }\n\n if (isLoggedIn) {\n return 'Inloggad ej medlem';\n }\n\n if (isLoggedIn === false) {\n return 'Utloggad';\n }\n\n return undefined;\n }\n\n public static getLocalOrGlobalProductString(productAttributeIds: string[]) {\n const isLocal = !!productAttributeIds?.find(\n (item) => item === ApiProductAttributeIds.LocalProduct,\n );\n return isLocal ? 'Lokalt sortiment' : 'Globalt sortiment';\n }\n}\n\nexport enum ApiProductAttributeIds {\n LocalProduct = 'LOCAL_PRODUCT',\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type AppConfig = RecursiveReadonly<{\n coopSettings: CoopSettings;\n /**\n * @deprecated Use Redux hooks to access user settings.\n * The idea behind using hooks instead is to allow Coop.se to be self-hosted as a pure SPA (i.e. for end-to-end testing purposes on CI) without the need for a global object that is injected by backend (or even without ASP.NET MVC backend at all).\n * It also makes sure that user data can be mocked in Storybook stories and component tests.\n */\n coopUserSettings: CoopUserSettings;\n}>;\n\nexport const appConfig: AppConfig = {\n coopSettings: (window as any).coopSettings as CoopSettings,\n coopUserSettings: (window as any).coopUserSettings,\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\nexport var ObjAssign = ObjClass[\"assign\"];\r\nexport var ObjCreate = ObjClass[\"create\"];\r\nexport var ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport var ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\nvar _cachedGlobal = null;\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - <null> (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached) {\r\n if (useCached === void 0) { useCached = true; }\r\n if (!_cachedGlobal || !useCached) {\r\n if (typeof globalThis !== strShimUndefined && globalThis) {\r\n _cachedGlobal = globalThis;\r\n }\r\n if (typeof self !== strShimUndefined && self) {\r\n _cachedGlobal = self;\r\n }\r\n if (typeof window !== strShimUndefined && window) {\r\n _cachedGlobal = window;\r\n }\r\n if (typeof global !== strShimUndefined && global) {\r\n _cachedGlobal = global;\r\n }\r\n }\r\n return _cachedGlobal;\r\n}\r\nexport function throwTypeError(message) {\r\n throw new TypeError(message);\r\n}\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj) {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n function tmpFunc() { }\r\n tmpFunc[strShimPrototype] = obj;\r\n return new tmpFunc();\r\n}\r\n//# sourceMappingURL=Helpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype } from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasSymbol = !!SymbolObj;\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = ObjAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() { this.constructor = d; }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (ObjCreate) {\r\n ObjDefineProperty(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n//# sourceMappingURL=TsLibShims.js.map","/*!\n * Microsoft Dynamic Proto Utility, 1.1.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Internal Global used to generate a unique dynamic class name, every new class will increase this value\r\n * @ignore\r\n */\r\nvar _dynamicNames = 0;\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n var getOwnProps = Obj[\"getOwnPropertyNames\"];\r\n if (getOwnProps) {\r\n props = getOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nfunction dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] is not in class hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _dynamicNames;\r\n _dynamicNames++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\nvar perfDefaults = {\r\n setInstFuncs: true,\r\n useBaseInst: true\r\n};\r\n// And expose for testing\r\ndynamicProto[DynProtoDefaultOptions] = perfDefaults;\n\nexport default dynamicProto;\n//# sourceMappingURL=dynamicproto-js.js.map\n","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var LoggingSeverity;\r\n(function (LoggingSeverity) {\r\n /**\r\n * Error will be sent as internal telemetry\r\n */\r\n LoggingSeverity[LoggingSeverity[\"CRITICAL\"] = 1] = \"CRITICAL\";\r\n /**\r\n * Error will NOT be sent as internal telemetry, and will only be shown in browser console\r\n */\r\n LoggingSeverity[LoggingSeverity[\"WARNING\"] = 2] = \"WARNING\";\r\n})(LoggingSeverity || (LoggingSeverity = {}));\r\n/**\r\n * Internal message ID. Please create a new one for every conceptually different message. Please keep alphabetically ordered\r\n */\r\nexport var _InternalMessageId = {\r\n // Non user actionable\r\n BrowserDoesNotSupportLocalStorage: 0,\r\n BrowserCannotReadLocalStorage: 1,\r\n BrowserCannotReadSessionStorage: 2,\r\n BrowserCannotWriteLocalStorage: 3,\r\n BrowserCannotWriteSessionStorage: 4,\r\n BrowserFailedRemovalFromLocalStorage: 5,\r\n BrowserFailedRemovalFromSessionStorage: 6,\r\n CannotSendEmptyTelemetry: 7,\r\n ClientPerformanceMathError: 8,\r\n ErrorParsingAISessionCookie: 9,\r\n ErrorPVCalc: 10,\r\n ExceptionWhileLoggingError: 11,\r\n FailedAddingTelemetryToBuffer: 12,\r\n FailedMonitorAjaxAbort: 13,\r\n FailedMonitorAjaxDur: 14,\r\n FailedMonitorAjaxOpen: 15,\r\n FailedMonitorAjaxRSC: 16,\r\n FailedMonitorAjaxSend: 17,\r\n FailedMonitorAjaxGetCorrelationHeader: 18,\r\n FailedToAddHandlerForOnBeforeUnload: 19,\r\n FailedToSendQueuedTelemetry: 20,\r\n FailedToReportDataLoss: 21,\r\n FlushFailed: 22,\r\n MessageLimitPerPVExceeded: 23,\r\n MissingRequiredFieldSpecification: 24,\r\n NavigationTimingNotSupported: 25,\r\n OnError: 26,\r\n SessionRenewalDateIsZero: 27,\r\n SenderNotInitialized: 28,\r\n StartTrackEventFailed: 29,\r\n StopTrackEventFailed: 30,\r\n StartTrackFailed: 31,\r\n StopTrackFailed: 32,\r\n TelemetrySampledAndNotSent: 33,\r\n TrackEventFailed: 34,\r\n TrackExceptionFailed: 35,\r\n TrackMetricFailed: 36,\r\n TrackPVFailed: 37,\r\n TrackPVFailedCalc: 38,\r\n TrackTraceFailed: 39,\r\n TransmissionFailed: 40,\r\n FailedToSetStorageBuffer: 41,\r\n FailedToRestoreStorageBuffer: 42,\r\n InvalidBackendResponse: 43,\r\n FailedToFixDepricatedValues: 44,\r\n InvalidDurationValue: 45,\r\n TelemetryEnvelopeInvalid: 46,\r\n CreateEnvelopeError: 47,\r\n // User actionable\r\n CannotSerializeObject: 48,\r\n CannotSerializeObjectNonSerializable: 49,\r\n CircularReferenceDetected: 50,\r\n ClearAuthContextFailed: 51,\r\n ExceptionTruncated: 52,\r\n IllegalCharsInName: 53,\r\n ItemNotInArray: 54,\r\n MaxAjaxPerPVExceeded: 55,\r\n MessageTruncated: 56,\r\n NameTooLong: 57,\r\n SampleRateOutOfRange: 58,\r\n SetAuthContextFailed: 59,\r\n SetAuthContextFailedAccountName: 60,\r\n StringValueTooLong: 61,\r\n StartCalledMoreThanOnce: 62,\r\n StopCalledWithoutStart: 63,\r\n TelemetryInitializerFailed: 64,\r\n TrackArgumentsNotSpecified: 65,\r\n UrlTooLong: 66,\r\n SessionStorageBufferFull: 67,\r\n CannotAccessCookie: 68,\r\n IdTooLong: 69,\r\n InvalidEvent: 70,\r\n FailedMonitorAjaxSetRequestHeader: 71,\r\n SendBrowserInfoOnUserInit: 72,\r\n PluginException: 73,\r\n NotificationException: 74,\r\n SnippetScriptLoadFailure: 99,\r\n InvalidInstrumentationKey: 100,\r\n CannotParseAiBlobValue: 101,\r\n InvalidContentBlob: 102,\r\n TrackPageActionEventFailed: 103,\r\n FailedAddingCustomDefinedRequestContext: 104,\r\n InMemoryStorageBufferFull: 105\r\n};\r\n//# sourceMappingURL=LoggingEnums.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimUndefined, strShimObject, strShimFunction, throwTypeError, ObjClass, ObjProto, ObjAssign, ObjHasOwnProperty, ObjDefineProperty, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString.call(ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString.call(obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty.call(obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (!isNullOrUndefined(obj)) {\r\n try {\r\n if (!isNullOrUndefined(obj[strAddEventHelper])) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](eventNameWithoutOn, handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (!isNullOrUndefined(obj[strAttachEvent])) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n result = true;\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event\r\n * @param handlerRef {any} - The callback function that needs to be executed for the given event\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (!isNullOrUndefined(obj)) {\r\n try {\r\n if (!isNullOrUndefined(obj[strRemoveEventListener])) {\r\n obj[strRemoveEventListener](eventNameWithoutOn, handlerRef, useCapture);\r\n }\r\n else if (!isNullOrUndefined(obj[strDetachEvent])) {\r\n obj[strDetachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value.replace(rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value.replace(rNormalizeInvalid, \"_\");\r\n value = value.replace(rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty.call(target, prop)) {\r\n callbackfn.call(target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search.length : 0;\r\n var valLen = value ? value.length : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue.length : 0;\r\n if (value && chkLen && value.length >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value.indexOf(search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty.call(proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString.call(proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r.length === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr.length;\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn.call(thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr.length;\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr.length;\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn.call(_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr.length;\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments.length >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str.replace ? str.replace(/^\\s+|\\s+$/g, \"\") : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty.call(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums.length;\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {\r\n result.push(_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object.name;\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n * @memberof Initialization\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && target !== source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = (function (funcName) {\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n return source[funcName].apply(source, originalArguments);\r\n };\r\n })(field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\n/**\r\n * Pass in the objects to merge as arguments, this will only \"merge\" (extend) properties that are owned by the object.\r\n * It will NOT merge inherited or non-enumerable properties.\r\n * @param obj1 - object to merge. Set this argument to 'true' for a deep extend.\r\n * @param obj2 - object to merge.\r\n * @param obj3 - object to merge.\r\n * @param obj4 - object to merge.\r\n * @param obj5 - object to merge.\r\n * @returns The extended first object.\r\n */\r\nexport function objExtend(obj, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs.length;\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty.call(arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimUndefined, strShimObject, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where <global>.window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav.userAgent !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav.userAgent;\r\n var userAgent = (_navUserAgentCheck || \"\").toLowerCase();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1.userAgent || \"\").toLowerCase() : \"\";\r\n }\r\n var ua = (userAgentStr || \"\").toLowerCase();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua.split(strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua.split(strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString.call(object);\r\n var propertyValueDump = \"\";\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object.name + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2.userAgent || \"\").toLowerCase() : \"\";\r\n }\r\n var ua = (userAgentStr || \"\").toLowerCase();\r\n return (ua.indexOf(\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n var fetchApi = getGlobalInst(\"fetch\");\r\n isSupported = !!fetchApi;\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== \"undefined\");\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(\"XMLHttpRequest\"), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(\"XMLHttpRequest\");\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name].apply(listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs.length; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _InternalMessageId, LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { hasJSON, getJSON, getConsole } from \"./EnvUtils\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isFunction, isNullOrUndefined, isUndefined } from \"./HelperFuncs\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nvar strErrorToConsole = \"errorToConsole\";\r\nvar strWarnToConsole = \"warnToConsole\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text.replace(/\\\"/g, \"\") + \"\\\"\";\r\n }\r\n return \"\";\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self.messageId = msgId;\r\n _self.message =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = \"\";\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : \"\") +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : \"\");\r\n _self.message += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {}).logger || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n if (isNullOrUndefined(config)) {\r\n config = {};\r\n }\r\n _self.consoleLoggingLevel = function () { return _getConfigValue(\"loggingLevelConsole\", 0); };\r\n _self.telemetryLoggingLevel = function () { return _getConfigValue(\"loggingLevelTelemetry\", 1); };\r\n _self.maxInternalMessageLimit = function () { return _getConfigValue(\"maxMessageLimit\", 25); };\r\n _self.enableDebugExceptions = function () { return _getConfigValue(\"enableDebugExceptions\", false); };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_self.enableDebugExceptions()) {\r\n throw message;\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === LoggingSeverity.CRITICAL ? strErrorToConsole : strWarnToConsole;\r\n if (!isUndefined(message.message)) {\r\n var logLevel = _self.consoleLoggingLevel();\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message.messageId;\r\n if (!_messageLogged[messageKey] && logLevel >= severity) {\r\n _self[logFunc](message.message);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (logLevel >= severity) {\r\n _self[logFunc](message.message);\r\n }\r\n }\r\n _self.logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === LoggingSeverity.CRITICAL ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self.warnToConsole = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self.errorToConsole = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self.logInternalMessage = function (severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message.messageId;\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _self.telemetryLoggingLevel()) {\r\n _self.queue.push(message);\r\n _messageCount++;\r\n _debugExtMsg((severity === LoggingSeverity.CRITICAL ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _self.maxInternalMessageLimit()) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);\r\n _self.queue.push(throttleMessage);\r\n if (severity === LoggingSeverity.CRITICAL) {\r\n _self.errorToConsole(throttleLimitMessage);\r\n }\r\n else {\r\n _self.warnToConsole(throttleLimitMessage);\r\n }\r\n }\r\n }\r\n };\r\n function _getConfigValue(name, defValue) {\r\n var value = config[name];\r\n if (!isNullOrUndefined(value)) {\r\n return value;\r\n }\r\n return defValue;\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _self.maxInternalMessageLimit();\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt && dbgExt.diagLog) {\r\n dbgExt.diagLog(name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.enableDebugExceptions.\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.telemetryLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.maxInternalMessageLimit.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\n//# sourceMappingURL=DiagnosticLogger.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self.name = name;\r\n _self.isAsync = isAsync;\r\n _self.isChildEvt = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self.getCtx = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey || key === PerfEvent.ChildrenContextKey) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self.isChildEvt = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent.ChildrenContextKey) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self.complete = function () {\r\n var childTime = 0;\r\n var childEvts = _self.getCtx(PerfEvent.ChildrenContextKey);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts.length; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt.time;\r\n }\r\n }\r\n }\r\n _self.time = dateNow() - _self.start;\r\n _self.exTime = _self.time - childTime;\r\n _self.complete = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent.complete();\r\n if (manager && isFunction(manager.perfEvent)) {\r\n manager.perfEvent(perfEvent);\r\n }\r\n }\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self.getCtx = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (isFunction(perfMgr[\"getPerfMgr\"])) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[\"getPerfMgr\"]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr.getCtx(doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt.setCtx) {\r\n perfEvt.setCtx(PerfEvent.ParentContextKey, currentActive);\r\n if (currentActive.getCtx && currentActive.setCtx) {\r\n var children = currentActive.getCtx(PerfEvent.ChildrenContextKey);\r\n if (!children) {\r\n children = [];\r\n currentActive.setCtx(PerfEvent.ChildrenContextKey, children);\r\n }\r\n children.push(perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr.setCtx(doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt.setCtx) {\r\n perfEvt.setCtx(\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr.setCtx(doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { LoggingSeverity, _InternalMessageId } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { isFunction } from \"./HelperFuncs\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nvar TelemetryPluginChain = /** @class */ (function () {\r\n function TelemetryPluginChain(plugin, defItemCtx) {\r\n var _self = this;\r\n var _nextProxy = null;\r\n var _hasProcessTelemetry = isFunction(plugin.processTelemetry);\r\n var _hasSetNext = isFunction(plugin.setNextPlugin);\r\n _self._hasRun = false;\r\n _self.getPlugin = function () {\r\n return plugin;\r\n };\r\n _self.getNext = function () {\r\n return _nextProxy;\r\n };\r\n _self.setNext = function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n if (!itemCtx) {\r\n // Looks like a plugin didn't pass the (optional) context, so restore to the default\r\n itemCtx = defItemCtx;\r\n }\r\n var identifier = plugin ? plugin.identifier : \"TelemetryPluginChain\";\r\n doPerf(itemCtx ? itemCtx.core() : null, function () { return identifier + \":processTelemetry\"; }, function () {\r\n if (plugin && _hasProcessTelemetry) {\r\n _self._hasRun = true;\r\n try {\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n itemCtx.setNext(_nextProxy);\r\n if (_hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin.setNextPlugin(_nextProxy);\r\n }\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n _nextProxy && (_nextProxy._hasRun = false);\r\n plugin.processTelemetry(env, itemCtx);\r\n }\r\n catch (error) {\r\n var hasRun = _nextProxy && _nextProxy._hasRun;\r\n if (!_nextProxy || !hasRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.PluginException, \"Plugin [\" + plugin.identifier + \"] failed during processTelemetry - \" + dumpObj(error));\r\n }\r\n if (_nextProxy && !hasRun) {\r\n // As part of the failure the current plugin did not attempt to call the next plugin in the cahin\r\n // So rather than leave the pipeline dead in the water we call the next plugin\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n }\r\n }\r\n else if (_nextProxy) {\r\n _self._hasRun = true;\r\n // The underlying plugin is either not defined or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n }, function () { return ({ item: env }); }, !(env.sync));\r\n };\r\n }\r\n return TelemetryPluginChain;\r\n}());\r\nexport { TelemetryPluginChain };\r\n//# sourceMappingURL=TelemetryPluginChain.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { TelemetryPluginChain } from \"./TelemetryPluginChain\";\r\nimport { arrForEach, isFunction, isNullOrUndefined, isUndefined } from \"./HelperFuncs\";\r\n/**\r\n * Creates the instance execution chain for the plugins\r\n */\r\nfunction _createProxyChain(plugins, itemCtx) {\r\n var proxies = [];\r\n if (plugins && plugins.length > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy = null;\r\n for (var idx = 0; idx < plugins.length; idx++) {\r\n var thePlugin = plugins[idx];\r\n if (thePlugin && isFunction(thePlugin.processTelemetry)) {\r\n // Only add plugins that are processors\r\n var newProxy = new TelemetryPluginChain(thePlugin, itemCtx);\r\n proxies.push(newProxy);\r\n if (lastProxy) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy.setNext(newProxy);\r\n }\r\n lastProxy = newProxy;\r\n }\r\n }\r\n }\r\n return proxies.length > 0 ? proxies[0] : null;\r\n}\r\nfunction _copyProxyChain(proxy, itemCtx, startAt) {\r\n var plugins = [];\r\n var add = startAt ? false : true;\r\n if (proxy) {\r\n while (proxy) {\r\n var thePlugin = proxy.getPlugin();\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n if (!add) {\r\n plugins.push(startAt);\r\n }\r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\nfunction _copyPluginChain(srcPlugins, itemCtx, startAt) {\r\n var plugins = srcPlugins;\r\n var add = false;\r\n if (startAt && srcPlugins) {\r\n plugins = [];\r\n arrForEach(srcPlugins, function (thePlugin) {\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n });\r\n }\r\n if (startAt && !add) {\r\n if (!plugins) {\r\n plugins = [];\r\n }\r\n plugins.push(startAt);\r\n }\r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(plugins, config, core, startAt) {\r\n var _self = this;\r\n var _nextProxy = null; // Null == No next plugin\r\n // There is no next element (null) vs not defined (undefined)\r\n if (startAt !== null) {\r\n if (plugins && isFunction(plugins.getPlugin)) {\r\n // We have a proxy chain object\r\n _nextProxy = _copyProxyChain(plugins, _self, startAt || plugins.getPlugin());\r\n }\r\n else {\r\n // We just have an array\r\n if (startAt) {\r\n _nextProxy = _copyPluginChain(plugins, _self, startAt);\r\n }\r\n else if (isUndefined(startAt)) {\r\n // Undefined means copy the existing chain\r\n _nextProxy = _createProxyChain(plugins, _self);\r\n }\r\n }\r\n }\r\n _self.core = function () {\r\n return core;\r\n };\r\n _self.diagLog = function () {\r\n return safeGetLogger(core, config);\r\n };\r\n _self.getCfg = function () {\r\n return config;\r\n };\r\n _self.getExtCfg = function (identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config.extensionConfig;\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n return (theConfig ? theConfig : defaultValue);\r\n };\r\n _self.getConfig = function (identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _self.getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n };\r\n _self.hasNext = function () {\r\n return _nextProxy != null;\r\n };\r\n _self.getNext = function () {\r\n return _nextProxy;\r\n };\r\n _self.setNext = function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n };\r\n _self.processNext = function (env) {\r\n var nextPlugin = _nextProxy;\r\n if (nextPlugin) {\r\n // Automatically move to the next plugin\r\n _nextProxy = nextPlugin.getNext();\r\n nextPlugin.processTelemetry(env, _self);\r\n }\r\n };\r\n _self.createNew = function (plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n return new ProcessTelemetryContext(plugins || _nextProxy, config, core, startAt);\r\n };\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var strIKey = \"iKey\";\r\nexport var strExtensionConfig = \"extensionConfig\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { ProcessTelemetryContext } from \"./ProcessTelemetryContext\";\r\nimport { isFunction, isNullOrUndefined, setValue } from \"./HelperFuncs\";\r\nimport { strExtensionConfig } from \"./Constants\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this;\r\n var _isinitialized = false;\r\n var _rootCtx = null; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin = null; // Used for backward compatibility where plugins don't call the main pipeline\r\n _self.core = null;\r\n _self.diagLog = function (itemCtx) {\r\n return _self._getTelCtx(itemCtx).diagLog();\r\n };\r\n _self.isInitialized = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self.setNextPlugin = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self.processNext = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx.processNext(env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin.processTelemetry)) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin.processTelemetry(env, null);\r\n }\r\n };\r\n _self._getTelCtx = function (currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || new ProcessTelemetryContext(null, {}, _self.core);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx.createNew(null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx.createNew(null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n };\r\n _self._baseTelInit = function (config, core, extensions, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, strExtensionConfig, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self.core = core;\r\n _rootCtx = new ProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n _isinitialized = true;\r\n };\r\n }\r\n BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n this._baseTelInit(config, core, extensions, pluginChain);\r\n };\r\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nvar processTelemetry = \"processTelemetry\";\r\nvar priority = \"priority\";\r\nvar setNextPlugin = \"setNextPlugin\";\r\nvar isInitialized = \"isInitialized\";\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext.getNext();\r\n while (proxy) {\r\n var thePlugin = proxy.getPlugin();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[setNextPlugin]) &&\r\n isFunction(thePlugin[processTelemetry])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[setNextPlugin](thePlugin);\r\n }\r\n if (!isFunction(thePlugin[isInitialized]) || !thePlugin[isInitialized]()) {\r\n initPlugins.push(thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n // Now initiatilize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n thePlugin.initialize(processContext.getCfg(), processContext.core(), extensions, processContext.getNext());\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n var bHasProcess = isFunction(extB[processTelemetry]);\r\n if (isFunction(extA[processTelemetry])) {\r\n result = bHasProcess ? extA[priority] - extB[priority] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { ProcessTelemetryContext } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nimport { arrForEach, objDefineAccessors, throwError } from \"./HelperFuncs\";\r\nvar ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority\";\r\nvar ChannelController = /** @class */ (function (_super) {\r\n __extends(ChannelController, _super);\r\n function ChannelController() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"ChannelControllerPlugin\";\r\n _this.priority = ChannelControllerPriority; // in reserved range 100 to 200\r\n var _channelQueue;\r\n dynamicProto(ChannelController, _this, function (_self, _base) {\r\n _self.setNextPlugin = function (next) {\r\n // The Channel controller is last in pipeline\r\n };\r\n _self.processTelemetry = function (item, itemCtx) {\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (queues) {\r\n // pass on to first item in queue\r\n if (queues.length > 0) {\r\n // Copying the item context as we could have mutiple chains that are executing asynchronously\r\n // and calling _getDefTelCtx as it's possible that the caller doesn't pass any context\r\n var chainCtx = _this._getTelCtx(itemCtx).createNew(queues);\r\n chainCtx.processNext(item);\r\n }\r\n });\r\n }\r\n };\r\n _self.getChannelControls = function () {\r\n return _channelQueue;\r\n };\r\n _self.initialize = function (config, core, extensions) {\r\n if (_self.isInitialized()) {\r\n // already initialized\r\n return;\r\n }\r\n _base.initialize(config, core, extensions);\r\n _createChannelQueues((config || {}).channels, extensions);\r\n // Initialize the Queues\r\n arrForEach(_channelQueue, function (queue) { return initializePlugins(new ProcessTelemetryContext(queue, config, core), extensions); });\r\n };\r\n });\r\n function _checkQueuePriority(queue) {\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem.priority < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem.identifier);\r\n }\r\n });\r\n }\r\n function _addChannelQueue(queue) {\r\n if (queue && queue.length > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a.priority - b.priority;\r\n });\r\n _checkQueuePriority(queue);\r\n _channelQueue.push(queue);\r\n }\r\n }\r\n function _createChannelQueues(channels, extensions) {\r\n _channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(queue); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin.priority > ChannelControllerPriority) {\r\n extensionQueue_1.push(plugin);\r\n }\r\n });\r\n _addChannelQueue(extensionQueue_1);\r\n }\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for ChannelController.prototype.processTelemetry.\r\n// Removed Stub for ChannelController.prototype.getChannelControls.\r\n// Removed Stub for ChannelController.prototype.initialize.\r\n /**\r\n * Static constructor, attempt to create accessors\r\n */\r\n // tslint:disable-next-line\r\n ChannelController._staticInit = (function () {\r\n var proto = ChannelController.prototype;\r\n // Dynamically create get/set property accessors\r\n objDefineAccessors(proto, \"ChannelControls\", proto.getChannelControls);\r\n objDefineAccessors(proto, \"channelQueue\", proto.getChannelControls);\r\n })();\r\n return ChannelController;\r\n}(BaseTelemetryPlugin));\r\nexport { ChannelController };\r\n//# sourceMappingURL=ChannelController.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _InternalMessageId, LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar strEmpty = \"\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig.cookieCfg = rootConfig.cookieCfg || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config.cookieCfg;\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {}).logger);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n },\r\n setEnabled: function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n set: function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n var values = {};\r\n var theValue = strTrim(value || strEmpty);\r\n var idx = theValue.indexOf(\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value.substring(0, idx));\r\n values = _extractParts(value.substring(idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || strEmpty, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", strEmpty + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {}).userAgent);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n get: function (name) {\r\n var value = strEmpty;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n del: function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n purge: function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(strEmpty, values));\r\n result = true;\r\n }\r\n return result;\r\n }\r\n };\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotAccessCookie, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue.length) {\r\n var parts = strTrim(theValue).split(\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || strEmpty);\r\n if (thePart) {\r\n var idx = thePart.indexOf(\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart.substring(0, idx))] = strTrim(thePart.substring(idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || strEmpty;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : strEmpty);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = strEmpty;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || strEmpty;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || strEmpty);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { ChannelController } from \"./ChannelController\";\r\nimport { ProcessTelemetryContext } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { getGblPerfMgr, PerfManager } from \"./PerfManager\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { arrForEach, isNullOrUndefined, toISOString, getSetValue, setValue, throwError, isNotTruthy, isFunction } from \"./HelperFuncs\";\r\nimport { strExtensionConfig, strIKey } from \"./Constants\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nvar validationError = \"Extensions must provide callback to initialize\";\r\nvar strNotificationManager = \"_notificationManager\";\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n var _isInitialized = false;\r\n var _eventQueue;\r\n var _channelController;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cookieManager;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n _self._extensions = new Array();\r\n _channelController = new ChannelController();\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _self.logger = new DiagnosticLogger({ loggingLevelConsole: LoggingSeverity.CRITICAL });\r\n _eventQueue = [];\r\n _self.isInitialized = function () { return _isInitialized; };\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n // Make sure core is only initialized once\r\n if (_self.isInitialized()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n if (!config || isNullOrUndefined(config.instrumentationKey)) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _self.config = config || {};\r\n if (notificationManager && _self.config.disableDbgExt !== true) {\r\n notificationManager.addNotificationListener(getDebugListener(config));\r\n }\r\n if (_self.config.enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n setValue(_self.config, \"createPerfMgr\", _createPerfManager);\r\n }\r\n config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;\r\n // add notification to the extensions in the config so other plugins can access it\r\n var extConfig = getSetValue(config, strExtensionConfig);\r\n extConfig.NotificationManager = notificationManager;\r\n if (logger) {\r\n _self.logger = logger;\r\n }\r\n // Concat all available extensions\r\n var allExtensions = [];\r\n allExtensions.push.apply(allExtensions, __spreadArray(__spreadArray([], extensions, false), config.extensions, false));\r\n allExtensions = sortPlugins(allExtensions);\r\n var coreExtensions = [];\r\n var channelExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext.initialize)) {\r\n throwError(validationError);\r\n }\r\n var extPriority = ext.priority;\r\n var identifier = ext.identifier;\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n logger.warnToConsole(\"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < _channelController.priority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions.push(ext);\r\n }\r\n else {\r\n // Add all other extensions to be managed by the channel controller\r\n channelExtensions.push(ext);\r\n }\r\n });\r\n // Validation complete\r\n // Add the channelController to the complete extension collection and\r\n // to the end of the core extensions\r\n allExtensions.push(_channelController);\r\n coreExtensions.push(_channelController);\r\n // Sort the complete set of extensions by priority\r\n allExtensions = sortPlugins(allExtensions);\r\n _self._extensions = allExtensions;\r\n // initialize channel controller first, this will initialize all channel plugins\r\n initializePlugins(new ProcessTelemetryContext([_channelController], config, _self), allExtensions);\r\n initializePlugins(new ProcessTelemetryContext(coreExtensions, config, _self), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self._extensions = coreExtensions;\r\n if (_self.getTransmissionControls().length === 0) {\r\n throwError(\"No channels available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n return _channelController.getChannelControls();\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);\r\n // add default timestamp if not passed in\r\n setValue(telemetryItem, \"time\", toISOString(new Date()), null, isNotTruthy);\r\n // Common Schema 4.0\r\n setValue(telemetryItem, \"ver\", \"4.0\", null, isNullOrUndefined);\r\n if (_self.isInitialized()) {\r\n // Process the telemetry plugin chain\r\n _self.getProcessTelContext().processNext(telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue.push(telemetryItem);\r\n }\r\n };\r\n _self.getProcessTelContext = function () {\r\n var extensions = _self._extensions;\r\n var thePlugins = extensions;\r\n // invoke any common telemetry processors before sending through pipeline\r\n if (!extensions || extensions.length === 0) {\r\n // Pass to Channel controller so data is sent to correct channel queues\r\n thePlugins = [_channelController];\r\n }\r\n return new ProcessTelemetryContext(thePlugins, _self.config, _self);\r\n };\r\n _self.getNotifyMgr = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = objCreateFn({\r\n addNotificationListener: function (listener) { },\r\n removeNotificationListener: function (listener) { },\r\n eventsSent: function (events) { },\r\n eventsDiscarded: function (events, reason) { },\r\n eventsSendRequest: function (sendReason, isAsync) { }\r\n });\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_self.config, _self.logger);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self.getPerfMgr = function () {\r\n if (!_perfManager) {\r\n if (_self.config && _self.config.enablePerfMgr && isFunction(_self.config.createPerfMgr)) {\r\n _perfManager = _self.config.createPerfMgr(_self, _self.getNotifyMgr());\r\n }\r\n }\r\n return _perfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue.length;\r\n };\r\n _self.releaseQueue = function () {\r\n if (_eventQueue.length > 0) {\r\n arrForEach(_eventQueue, function (event) {\r\n _self.getProcessTelContext().processNext(event);\r\n });\r\n _eventQueue = [];\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseCore.prototype.initialize.\r\n// Removed Stub for BaseCore.prototype.getTransmissionControls.\r\n// Removed Stub for BaseCore.prototype.track.\r\n// Removed Stub for BaseCore.prototype.getProcessTelContext.\r\n// Removed Stub for BaseCore.prototype.getNotifyMgr.\r\n// Removed Stub for BaseCore.prototype.getCookieMgr.\r\n// Removed Stub for BaseCore.prototype.setCookieMgr.\r\n// Removed Stub for BaseCore.prototype.getPerfMgr.\r\n// Removed Stub for BaseCore.prototype.setPerfMgr.\r\n// Removed Stub for BaseCore.prototype.eventCnt.\r\n// Removed Stub for BaseCore.prototype.releaseQueue.\r\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self.addNotificationListener = function (listener) {\r\n _self.listeners.push(listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self.removeNotificationListener = function (listener) {\r\n var index = arrIndexOf(_self.listeners, listener);\r\n while (index > -1) {\r\n _self.listeners.splice(index, 1);\r\n index = arrIndexOf(_self.listeners, listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self.eventsSent = function (events) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsSent) {\r\n setTimeout(function () { return listener.eventsSent(events); }, 0);\r\n }\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self.eventsDiscarded = function (events, reason) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsDiscarded) {\r\n setTimeout(function () { return listener.eventsDiscarded(events, reason); }, 0);\r\n }\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self.eventsSendRequest = function (sendReason, isAsync) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsSendRequest) {\r\n if (isAsync) {\r\n setTimeout(function () { return listener.eventsSendRequest(sendReason, isAsync); }, 0);\r\n }\r\n else {\r\n try {\r\n listener.eventsSendRequest(sendReason, isAsync);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n };\r\n _self.perfEvent = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent.isChildEvt()) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.perfEvent) {\r\n if (perfEvent.isAsync) {\r\n setTimeout(function () { return listener.perfEvent(perfEvent); }, 0);\r\n }\r\n else {\r\n try {\r\n listener.perfEvent(perfEvent);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { EventsDiscardedReason } from \"../JavaScriptSDK.Enums/EventsDiscardedReason\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _InternalLogMessage, DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrForEach, isNullOrUndefined, toISOString, throwError } from \"./HelperFuncs\";\r\n\"use strict\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n _base.initialize(config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self.getPerfMgr(), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self.addNotificationListener = function (listener) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.addNotificationListener(listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self.removeNotificationListener = function (listener) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.removeNotificationListener(listener);\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for log messages to be flushed\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n var interval = _self.config.diagnosticLogInterval;\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n if (_internalLogPoller) {\r\n _self.stopPollingInternalLogs();\r\n }\r\n _internalLogPoller = setInterval(function () {\r\n var queue = _self.logger ? _self.logger.queue : [];\r\n arrForEach(queue, function (logMessage) {\r\n var item = {\r\n name: eventName ? eventName : \"InternalMessageId: \" + logMessage.messageId,\r\n iKey: _self.config.instrumentationKey,\r\n time: toISOString(new Date()),\r\n baseType: _InternalLogMessage.dataType,\r\n baseData: { message: logMessage.message }\r\n };\r\n _self.track(item);\r\n });\r\n queue.length = 0;\r\n }, interval);\r\n return _internalLogPoller;\r\n };\r\n /**\r\n * Stop polling log messages from logger.queue\r\n */\r\n _self.stopPollingInternalLogs = function () {\r\n if (!_internalLogPoller)\r\n return;\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem.name)) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throw Error(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.eventsDiscarded([telemetryItem], EventsDiscardedReason.InvalidEvent);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n// Removed Stub for AppInsightsCore.prototype.addNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.removeNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.pollInternalLogs.\r\n// Removed Stub for AppInsightsCore.prototype.stopPollingInternalLogs.\r\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * The EventsDiscardedReason enumeration contains a set of values that specify the reason for discarding an event.\r\n */\r\nexport var EventsDiscardedReason = {\r\n /**\r\n * Unknown.\r\n */\r\n Unknown: 0,\r\n /**\r\n * Status set to non-retryable.\r\n */\r\n NonRetryableStatus: 1,\r\n /**\r\n * The event is invalid.\r\n */\r\n InvalidEvent: 2,\r\n /**\r\n * The size of the event is too large.\r\n */\r\n SizeLimitExceeded: 3,\r\n /**\r\n * The server is not accepting events from this instrumentation key.\r\n */\r\n KillSwitch: 4,\r\n /**\r\n * The event queue is full.\r\n */\r\n QueueFull: 5\r\n};\r\n//# sourceMappingURL=EventsDiscardedReason.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n else if (isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n else {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getWindow, getDocument, getPerformance, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, attachEvent, dateNow, detachEvent, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { randomValue, random32, mwcRandomSeed, mwcRandom32 } from \"./RandomHelper\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = attachEvent(w, eventName, callback);\r\n result = attachEvent(w[\"body\"], eventName, callback) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = attachEvent(doc, eventName, callback) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n var excluded_1 = [];\r\n arrForEach(events, function (name) {\r\n if (isString(name)) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener) || added;\r\n }\r\n else {\r\n excluded_1.push(name);\r\n }\r\n }\r\n });\r\n if (!added && excluded_1.length > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = addEventListeners(excluded_1, listener);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([\"beforeunload\", \"unload\", \"pagehide\"], listener, excludeEvents);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n var pageUnloadAdded = false;\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strPageHide) === -1) {\r\n pageUnloadAdded = addEventHandler(strPageHide, listener);\r\n }\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = addEventHandler(strVisibilityChangeEvt, _handlePageVisibility) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n var pageShowAdded = false;\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strPageShow) === -1) {\r\n pageShowAdded = addEventHandler(strPageShow, listener);\r\n }\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageShowAdded = addEventHandler(strVisibilityChangeEvt, _handlePageVisibility) || pageShowAdded;\r\n }\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener);\r\n }\r\n return pageShowAdded;\r\n}\r\nexport function newGuid() {\r\n function randomHexDigit() {\r\n return randomValue(15); // Get a random value from 0..15\r\n }\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(GuidRegex, function (c) {\r\n var r = (randomHexDigit() | 0), v = (c === \"x\" ? r : r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = \"\";\r\n while (result.length < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value.length;\r\n var start = len - search.length;\r\n return value.substring(start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = \"\", tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct.substr(0, 8) + oct.substr(9, 4) + \"4\" + oct.substr(13, 3) + clockSequenceHi + oct.substr(16, 3) + oct.substr(19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr.setEnabled(value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs.push(cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr.setEnabled(legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr.setEnabled(_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr().setEnabled(false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint } from \"./Util\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, strNotSpecified } from \"./Constants\";\r\nexport { Data as AIData } from \"./Interfaces/Contracts/Generated/Data\";\r\nexport { Base as AIBase } from \"./Interfaces/Contracts/Generated/Base\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { PageViewData } from \"./Interfaces/Contracts/Generated/PageViewData\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/Generated/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/Generated/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isObject, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key.length;\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field.length !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field.substring(0, 150 /* MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name.toString());\r\n // truncate the string to 150 chars\r\n if (name.length > 150 /* MAX_NAME_LENGTH */) {\r\n nameTrunc = name.substring(0, 150 /* MAX_NAME_LENGTH */);\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.NameTooLong, \"name is too long. It has been truncated to \" + 150 /* MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString().length > maxLength) {\r\n valueTrunc = value.toString().substring(0, maxLength);\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StringValueTooLong, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* MAX_URL_LENGTH */, _InternalMessageId.UrlTooLong);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message.length > 32768 /* MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message.substring(0, 32768 /* MAX_MESSAGE_LENGTH */);\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.MessageTruncated, \"message is too long, it has been truncated to \" + 32768 /* MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value.length > 32768 /* MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value.substring(0, 32768 /* MAX_EXCEPTION_LENGTH */);\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ExceptionTruncated, \"exception is too long, it has been truncated to \" + 32768 /* MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON().stringify(value);\r\n }\r\n catch (e) {\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* MAX_ID_LENGTH */, _InternalMessageId.IdTooLong).toString() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input.length > maxLength) {\r\n inputTrunc = input.substring(0, maxLength);\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s.length - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = {\r\n MAX_NAME_LENGTH: 150 /* MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* MAX_EXCEPTION_LENGTH */,\r\n sanitizeKeyAndAddUniqueness: dataSanitizeKeyAndAddUniqueness,\r\n sanitizeKey: dataSanitizeKey,\r\n sanitizeString: dataSanitizeString,\r\n sanitizeUrl: dataSanitizeUrl,\r\n sanitizeMessage: dataSanitizeMessage,\r\n sanitizeException: dataSanitizeException,\r\n sanitizeProperties: dataSanitizeProperties,\r\n sanitizeMeasurements: dataSanitizeMeasurements,\r\n sanitizeId: dataSanitizeId,\r\n sanitizeInput: dataSanitizeInput,\r\n padNumber: dsPadNumber,\r\n trim: strTrim\r\n};\r\n//# sourceMappingURL=DataSanitizer.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Type of the metric data measurement.\r\n */\r\nexport var DataPointType;\r\n(function (DataPointType) {\r\n DataPointType[DataPointType[\"Measurement\"] = 0] = \"Measurement\";\r\n DataPointType[DataPointType[\"Aggregation\"] = 1] = \"Aggregation\";\r\n})(DataPointType || (DataPointType = {}));\r\n//# sourceMappingURL=DataPointType.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { objForEachKey, isNullOrUndefined, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified, strIkey } from \"./Constants\";\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = function (item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throw Error(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = {\r\n name: envelopeName,\r\n time: toISOString(new Date()),\r\n iKey: iKey,\r\n ext: systemProperties ? systemProperties : {},\r\n tags: [],\r\n data: {},\r\n baseType: baseType,\r\n baseData: item // Part B\r\n };\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n };\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * Instances of Event represent structured event records that can be grouped and searched by their properties. Event data item also creates a metric of event count by name.\r\n */\r\nvar EventData = /** @class */ (function () {\r\n function EventData() {\r\n /**\r\n * Schema version\r\n */\r\n this.ver = 2;\r\n /**\r\n * Collection of custom properties.\r\n */\r\n this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n this.measurements = {};\r\n }\r\n return EventData;\r\n}());\r\nexport { EventData };\r\n//# sourceMappingURL=EventData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { EventData } from \"../Interfaces/Contracts/Generated/EventData\";\r\nimport { dataSanitizeString, dataSanitizeProperties, dataSanitizeMeasurements } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Event = /** @class */ (function (_super) {\r\n __extends(Event, _super);\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n name: 1 /* Required */,\r\n properties: 0 /* Default */,\r\n measurements: 0 /* Default */\r\n };\r\n _this.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n return _this;\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}(EventData));\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { MessageData } from \"../Interfaces/Contracts/Generated/MessageData\";\r\nimport { dataSanitizeMessage, dataSanitizeProperties, dataSanitizeMeasurements } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Trace = /** @class */ (function (_super) {\r\n __extends(Trace, _super);\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n message: 1 /* Required */,\r\n severityLevel: 0 /* Default */,\r\n properties: 0 /* Default */\r\n };\r\n message = message || strNotSpecified;\r\n _this.message = dataSanitizeMessage(logger, message);\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _this.severityLevel = severityLevel;\r\n }\r\n return _this;\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}(MessageData));\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * Instances of Message represent printf-like trace statements that are text-searched. Log4Net, NLog and other text-based log file entries are translated into intances of this type. The message does not have measurements.\r\n */\r\nvar MessageData = /** @class */ (function () {\r\n function MessageData() {\r\n /**\r\n * Schema version\r\n */\r\n this.ver = 2;\r\n /**\r\n * Collection of custom properties.\r\n */\r\n this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n this.measurements = {};\r\n }\r\n return MessageData;\r\n}());\r\nexport { MessageData };\r\n//# sourceMappingURL=MessageData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { DataPointType } from \"./DataPointType\";\r\n/**\r\n * Metric data single measurement.\r\n */\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = DataPointType.Measurement;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { DataPoint as AIDataPoint } from \"../../Interfaces/Contracts/Generated/DataPoint\";\r\nvar DataPoint = /** @class */ (function (_super) {\r\n __extends(DataPoint, _super);\r\n function DataPoint() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n _this.aiDataContract = {\r\n name: 1 /* Required */,\r\n kind: 0 /* Default */,\r\n value: 1 /* Required */,\r\n count: 0 /* Default */,\r\n min: 0 /* Default */,\r\n max: 0 /* Default */,\r\n stdDev: 0 /* Default */\r\n };\r\n return _this;\r\n }\r\n return DataPoint;\r\n}(AIDataPoint));\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { MetricData } from \"../Interfaces/Contracts/Generated/MetricData\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Metric = /** @class */ (function (_super) {\r\n __extends(Metric, _super);\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n metrics: 1 /* Required */,\r\n properties: 0 /* Default */\r\n };\r\n var dataPoint = new DataPoint();\r\n dataPoint.count = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _this.metrics = [dataPoint];\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n return _this;\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}(MetricData));\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * An instance of the Metric item is a list of measurements (single data points) and/or aggregations.\r\n */\r\nvar MetricData = /** @class */ (function () {\r\n function MetricData() {\r\n /**\r\n * Schema version\r\n */\r\n this.ver = 2;\r\n /**\r\n * List of metrics. Only one metric in the list is currently supported by Application Insights storage. If multiple data points were sent only the first one will be used.\r\n */\r\n this.metrics = [];\r\n /**\r\n * Collection of custom properties.\r\n */\r\n this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n this.measurements = {};\r\n }\r\n return MetricData;\r\n}());\r\nexport { MetricData };\r\n//# sourceMappingURL=MetricData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { EventData } from \"./EventData\";\r\n/**\r\n * An instance of PageView represents a generic action on a page like a button click. It is also the base type for PageView.\r\n */\r\nvar PageViewData = /** @class */ (function (_super) {\r\n __extends(PageViewData, _super);\r\n function PageViewData() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Schema version\r\n */\r\n _this.ver = 2;\r\n /**\r\n * Collection of custom properties.\r\n */\r\n _this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n _this.measurements = {};\r\n return _this;\r\n }\r\n return PageViewData;\r\n}(EventData));\r\nexport { PageViewData };\r\n//# sourceMappingURL=PageViewData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString().toLowerCase() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = \"\" + totalms % 1000;\r\n var sec = \"\" + Math.floor(totalms / 1000) % 60;\r\n var min = \"\" + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = \"\" + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms.length === 1 ? \"00\" + ms : ms.length === 2 ? \"0\" + ms : ms;\r\n sec = sec.length < 2 ? \"0\" + sec : sec;\r\n min = min.length < 2 ? \"0\" + min : min;\r\n hour = hour.length < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : \"\") + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { PageViewData } from \"../Interfaces/Contracts/Generated/PageViewData\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar PageView = /** @class */ (function (_super) {\r\n __extends(PageView, _super);\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n name: 0 /* Default */,\r\n url: 0 /* Default */,\r\n duration: 0 /* Default */,\r\n properties: 0 /* Default */,\r\n measurements: 0 /* Default */,\r\n id: 0 /* Default */\r\n };\r\n _this.id = dataSanitizeId(logger, id);\r\n _this.url = dataSanitizeUrl(logger, url);\r\n _this.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _this.duration = msToTimeSpan(durationMs);\r\n }\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n return _this;\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}(PageViewData));\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { PageViewPerfData } from \"../Interfaces/Contracts/Generated/PageViewPerfData\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar PageViewPerformance = /** @class */ (function (_super) {\r\n __extends(PageViewPerformance, _super);\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n name: 0 /* Default */,\r\n url: 0 /* Default */,\r\n duration: 0 /* Default */,\r\n perfTotal: 0 /* Default */,\r\n networkConnect: 0 /* Default */,\r\n sentRequest: 0 /* Default */,\r\n receivedResponse: 0 /* Default */,\r\n domProcessing: 0 /* Default */,\r\n properties: 0 /* Default */,\r\n measurements: 0 /* Default */\r\n };\r\n _this.url = dataSanitizeUrl(logger, url);\r\n _this.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _this.domProcessing = cs4BaseData.domProcessing;\r\n _this.duration = cs4BaseData.duration;\r\n _this.networkConnect = cs4BaseData.networkConnect;\r\n _this.perfTotal = cs4BaseData.perfTotal;\r\n _this.receivedResponse = cs4BaseData.receivedResponse;\r\n _this.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n return _this;\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}(PageViewPerfData));\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { PageViewData } from \"./PageViewData\";\r\n/**\r\n * An instance of PageViewPerf represents: a page view with no performance data, a page view with performance data, or just the performance data of an earlier page request.\r\n */\r\nvar PageViewPerfData = /** @class */ (function (_super) {\r\n __extends(PageViewPerfData, _super);\r\n function PageViewPerfData() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Schema version\r\n */\r\n _this.ver = 2;\r\n /**\r\n * Collection of custom properties.\r\n */\r\n _this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n _this.measurements = {};\r\n return _this;\r\n }\r\n return PageViewPerfData;\r\n}(PageViewData));\r\nexport { PageViewPerfData };\r\n//# sourceMappingURL=PageViewPerfData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { StackFrame } from \"../Interfaces/Contracts/Generated/StackFrame\";\r\nimport { ExceptionData } from \"../Interfaces/Contracts/Generated/ExceptionData\";\r\nimport { ExceptionDetails } from \"../Interfaces/Contracts/Generated/ExceptionDetails\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nimport { isNullOrUndefined, arrMap, isString, strTrim, isArray, isError, arrForEach, isObject, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON.stringify) {\r\n result = JSON.stringify(value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value.toString)) {\r\n result = value.toString();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\").indexOf(errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src.split(\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage.split(\"\\n\");\r\n for (var lp = 0; lp < lines.length; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj.message);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames.length > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame.toString();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame.sizeInBytes;\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack.length - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left].sizeInBytes;\r\n var rSize = parsedStack[right].sizeInBytes;\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType.name || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor.toString());\r\n typeName = (results && results.length > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result.indexOf(errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function (_super) {\r\n __extends(Exception, _super);\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n ver: 1 /* Required */,\r\n exceptions: 1 /* Required */,\r\n severityLevel: 0 /* Default */,\r\n properties: 0 /* Default */,\r\n measurements: 0 /* Default */\r\n };\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _this.exceptions = [new _ExceptionDetails(logger, exception, properties)];\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _this.severityLevel = severityLevel;\r\n }\r\n if (id) {\r\n _this.id = id;\r\n }\r\n }\r\n else {\r\n _this.exceptions = exception.exceptions;\r\n _this.properties = exception.properties;\r\n _this.measurements = exception.measurements;\r\n if (exception.severityLevel) {\r\n _this.severityLevel = exception.severityLevel;\r\n }\r\n if (exception.id) {\r\n _this.id = exception.id;\r\n }\r\n if (exception.problemGroup) {\r\n _this.problemGroup = exception.problemGroup;\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n _this.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!isNullOrUndefined(exception.isManual)) {\r\n _this.isManual = exception.isManual;\r\n }\r\n }\r\n return _this;\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var errorType = _getErrorType(error || evt || message);\r\n return {\r\n message: _formatMessage(message, errorType),\r\n url: url,\r\n lineNumber: lineNumber,\r\n columnNumber: columnNumber,\r\n error: _formatErrorCode(error || evt || message),\r\n evt: _formatErrorCode(evt || message),\r\n typeName: errorType,\r\n stackDetails: _getStackFromErrorObj(stack || error || evt),\r\n errorSrc: errorSrc\r\n };\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception.exceptions\r\n && arrMap(exception.exceptions, function (ex) { return _ExceptionDetails.CreateFromInterface(logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a = this, exceptions = _a.exceptions, properties = _a.properties, measurements = _a.measurements, severityLevel = _a.severityLevel, problemGroup = _a.problemGroup, id = _a.id, isManual = _a.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return {\r\n ver: \"4.0\",\r\n exceptions: exceptionDetailsInterface,\r\n severityLevel: severityLevel,\r\n properties: properties,\r\n measurements: measurements,\r\n problemGroup: problemGroup,\r\n id: id,\r\n isManual: isManual\r\n };\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n return {\r\n exceptions: [\r\n {\r\n hasFullStack: true,\r\n message: message,\r\n stack: details,\r\n typeName: typeName\r\n }\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}(ExceptionData));\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function (_super) {\r\n __extends(_ExceptionDetails, _super);\r\n function _ExceptionDetails(logger, exception, properties) {\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n id: 0 /* Default */,\r\n outerId: 0 /* Default */,\r\n typeName: 1 /* Required */,\r\n message: 1 /* Required */,\r\n hasFullStack: 0 /* Default */,\r\n stack: 0 /* Default */,\r\n parsedStack: 2 /* Array */\r\n };\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _this.typeName = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _this.message = dataSanitizeMessage(logger, _formatMessage(exception || error, _this.typeName)) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _this.parsedStack = _parseStack(stack);\r\n _this[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _this.hasFullStack = isArray(_this.parsedStack) && _this.parsedStack.length > 0;\r\n if (properties) {\r\n properties.typeName = properties.typeName || _this.typeName;\r\n }\r\n }\r\n else {\r\n _this.typeName = exception.typeName;\r\n _this.message = exception.message;\r\n _this[strStack] = exception[strStack];\r\n _this.parsedStack = exception.parsedStack;\r\n _this.hasFullStack = exception.hasFullStack;\r\n }\r\n return _this;\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var parsedStack = this.parsedStack instanceof Array\r\n && arrMap(this.parsedStack, function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = {\r\n id: this.id,\r\n outerId: this.outerId,\r\n typeName: this.typeName,\r\n message: this.message,\r\n hasFullStack: this.hasFullStack,\r\n stack: this[strStack],\r\n parsedStack: parsedStack || undefined\r\n };\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception.parsedStack instanceof Array\r\n && arrMap(exception.parsedStack, function (frame) { return _StackFrame.CreateFromInterface(frame); }))\r\n || exception.parsedStack;\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}(ExceptionDetails));\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function (_super) {\r\n __extends(_StackFrame, _super);\r\n function _StackFrame(sourceFrame, level) {\r\n var _this = _super.call(this) || this;\r\n _this.sizeInBytes = 0;\r\n _this.aiDataContract = {\r\n level: 1 /* Required */,\r\n method: 1 /* Required */,\r\n assembly: 0 /* Default */,\r\n fileName: 0 /* Default */,\r\n line: 0 /* Default */\r\n };\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _this.level = level;\r\n _this.method = NoMethod;\r\n _this.assembly = strTrim(frame);\r\n _this.fileName = \"\";\r\n _this.line = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches.length >= 5) {\r\n _this.method = strTrim(matches[2]) || _this.method;\r\n _this.fileName = strTrim(matches[4]);\r\n _this.line = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _this.level = sourceFrame.level;\r\n _this.method = sourceFrame.method;\r\n _this.assembly = sourceFrame.assembly;\r\n _this.fileName = sourceFrame.fileName;\r\n _this.line = sourceFrame.line;\r\n _this.sizeInBytes = 0;\r\n }\r\n _this.sizeInBytes += _this.method.length;\r\n _this.sizeInBytes += _this.fileName.length;\r\n _this.sizeInBytes += _this.assembly.length;\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _this.sizeInBytes += _StackFrame.baseSize;\r\n _this.sizeInBytes += _this.level.toString().length;\r\n _this.sizeInBytes += _this.line.toString().length;\r\n return _this;\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n return {\r\n level: this.level,\r\n method: this.method,\r\n assembly: this.assembly,\r\n fileName: this.fileName,\r\n line: this.line\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}(StackFrame));\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * Type of storage to differentiate between local storage and session storage\r\n */\r\nexport var StorageType;\r\n(function (StorageType) {\r\n StorageType[StorageType[\"LocalStorage\"] = 0] = \"LocalStorage\";\r\n StorageType[StorageType[\"SessionStorage\"] = 1] = \"SessionStorage\";\r\n})(StorageType || (StorageType = {}));\r\nexport var DistributedTracingModes;\r\n(function (DistributedTracingModes) {\r\n /**\r\n * (Default) Send Application Insights correlation headers\r\n */\r\n DistributedTracingModes[DistributedTracingModes[\"AI\"] = 0] = \"AI\";\r\n /**\r\n * Send both W3C Trace Context headers and back-compatibility Application Insights headers\r\n */\r\n DistributedTracingModes[DistributedTracingModes[\"AI_AND_W3C\"] = 1] = \"AI_AND_W3C\";\r\n /**\r\n * Send W3C Trace Context headers\r\n */\r\n DistributedTracingModes[DistributedTracingModes[\"W3C\"] = 2] = \"W3C\";\r\n})(DistributedTracingModes || (DistributedTracingModes = {}));\r\n//# sourceMappingURL=Enums.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * An instance of Exception represents a handled or unhandled exception that occurred during execution of the monitored application.\r\n */\r\nvar ExceptionData = /** @class */ (function () {\r\n function ExceptionData() {\r\n /**\r\n * Schema version\r\n */\r\n this.ver = 2;\r\n /**\r\n * Exception chain - list of inner exceptions.\r\n */\r\n this.exceptions = [];\r\n /**\r\n * Collection of custom properties.\r\n */\r\n this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n this.measurements = {};\r\n }\r\n return ExceptionData;\r\n}());\r\nexport { ExceptionData };\r\n//# sourceMappingURL=ExceptionData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * Exception details of the exception in a chain.\r\n */\r\nvar ExceptionDetails = /** @class */ (function () {\r\n function ExceptionDetails() {\r\n /**\r\n * Indicates if full exception stack is provided in the exception. The stack may be trimmed, such as in the case of a StackOverflow exception.\r\n */\r\n this.hasFullStack = true;\r\n /**\r\n * List of stack frames. Either stack or parsedStack should have a value.\r\n */\r\n this.parsedStack = [];\r\n }\r\n return ExceptionDetails;\r\n}());\r\nexport { ExceptionDetails };\r\n//# sourceMappingURL=ExceptionDetails.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Stack frame information.\r\n */\r\nvar StackFrame = /** @class */ (function () {\r\n function StackFrame() {\r\n }\r\n return StackFrame;\r\n}());\r\nexport { StackFrame };\r\n//# sourceMappingURL=StackFrame.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, LoggingSeverity, objForEachKey, _InternalMessageId } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = new Date;\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid.toString(), uid.toString());\r\n var fail = storage.getItem(uid.toString()) !== uid.toString();\r\n storage.removeItem(uid.toString());\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\nexport function utlCanUseLocalStorage() {\r\n if (_canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserCannotReadLocalStorage, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserCannotWriteLocalStorage, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserFailedRemovalFromLocalStorage, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage() {\r\n if (_canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserCannotReadSessionStorage, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserCannotWriteSessionStorage, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserFailedRemovalFromSessionStorage, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var RequestHeaders = {\r\n requestContextHeader: \"Request-Context\",\r\n requestContextTargetKey: \"appId\",\r\n requestContextAppIdFormat: \"appId=cid-v1:\",\r\n requestIdHeader: \"Request-Id\",\r\n traceParentHeader: \"traceparent\",\r\n traceStateHeader: \"tracestate\",\r\n sdkContextHeader: \"Sdk-Context\",\r\n sdkContextHeaderAppIdRequest: \"appId\",\r\n requestContextHeaderLowerCase: \"request-context\"\r\n};\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache.length) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.pathname;\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www[0-9]?\\.)?(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 3 && isString(match[2]) && match[2].length > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w*):\\/\\/(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 2 && isString(match[2]) && match[2].length > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match.length > 2) {\r\n var protocol = (match[1] || \"\").toLowerCase();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getPerformance, getExceptionName as coreGetExceptionName, dumpObj, isNullOrUndefined, strTrim, random32, isArray, isError, isDate, newId, generateW3CId, toISOString, arrForEach, getIEVersion, attachEvent, dateNow, uaDisallowsSameSiteNone, disableCookies as coreDisableCookies, canUseCookies as coreCanUseCookies, getCookie as coreGetCookie, setCookie as coreSetCookie, deleteCookie as coreDeleteCookie, isBeaconsSupported } from \"@microsoft/applicationinsights-core-js\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { stringToBoolOrDefault, msToTimeSpan, isCrossOriginError, getExtensionByName } from \"./HelperFuncs\";\r\nimport { strNotSpecified } from \"./Constants\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlGetLocalStorage, utlRemoveSessionStorage, utlRemoveStorage, utlSetSessionStorage, utlSetLocalStorage } from \"./StorageHelperFuncs\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n \"https://dc.services.visualstudio.com/v2/track\",\r\n \"https://breeze.aimon.applicationinsights.io/v2/track\",\r\n \"https://dc-int.services.visualstudio.com/v2/track\"\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return _internalEndpoints.indexOf(endpointUrl.toLowerCase()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config.correlationHeaderExcludePatterns) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns.length; i++) {\r\n if (config.correlationHeaderExcludePatterns[i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host.toLowerCase();\r\n if (requestHost && (requestHost.indexOf(\":443\") !== -1 || requestHost.indexOf(\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\").toLowerCase();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains.length === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains.length; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost.length > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders.requestContextTargetKey);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader.split(\",\");\r\n for (var i = 0; i < keyValues.length; ++i) {\r\n var keyValue = keyValues[i].split(\"=\");\r\n if (keyValue.length === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl.length > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl.pathname != null) {\r\n var pathName = (parsedUrl.pathname.length === 0) ? \"/\" : parsedUrl.pathname;\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl.pathname;\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n//# sourceMappingURL=Util.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { RemoteDependencyData as GeneratedRemoteDependencyData } from \"../Interfaces/Contracts/Generated/RemoteDependencyData\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nvar RemoteDependencyData = /** @class */ (function (_super) {\r\n __extends(RemoteDependencyData, _super);\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n var _this = _super.call(this) || this;\r\n _this.aiDataContract = {\r\n id: 1 /* Required */,\r\n ver: 1 /* Required */,\r\n name: 0 /* Default */,\r\n resultCode: 0 /* Default */,\r\n duration: 0 /* Default */,\r\n success: 0 /* Default */,\r\n data: 0 /* Default */,\r\n target: 0 /* Default */,\r\n type: 0 /* Default */,\r\n properties: 0 /* Default */,\r\n measurements: 0 /* Default */,\r\n kind: 0 /* Default */,\r\n value: 0 /* Default */,\r\n count: 0 /* Default */,\r\n min: 0 /* Default */,\r\n max: 0 /* Default */,\r\n stdDev: 0 /* Default */,\r\n dependencyKind: 0 /* Default */,\r\n dependencySource: 0 /* Default */,\r\n commandName: 0 /* Default */,\r\n dependencyTypeName: 0 /* Default */\r\n };\r\n _this.id = id;\r\n _this.duration = msToTimeSpan(value);\r\n _this.success = success;\r\n _this.resultCode = resultCode + \"\";\r\n _this.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _this.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _this.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _this.target = \"\".concat(_this.target, \" | \").concat(correlationContext);\r\n }\r\n _this.name = dataSanitizeString(logger, dependencyFields.name);\r\n _this.properties = dataSanitizeProperties(logger, properties);\r\n _this.measurements = dataSanitizeMeasurements(logger, measurements);\r\n return _this;\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}(GeneratedRemoteDependencyData));\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * An instance of Remote Dependency represents an interaction of the monitored component with a remote component/service like SQL or an HTTP endpoint.\r\n */\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n function RemoteDependencyData() {\r\n /**\r\n * Schema version\r\n */\r\n this.ver = 2;\r\n /**\r\n * Indication of successful or unsuccessful call.\r\n */\r\n this.success = true;\r\n /**\r\n * Collection of custom properties.\r\n */\r\n this.properties = {};\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n this.measurements = {};\r\n }\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, getDocument, getLocation, arrForEach, isNullOrUndefined, getExceptionName, dumpObj } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels() {\r\n if (core) {\r\n arrForEach(core.getTransmissionControls(), function (queues) {\r\n arrForEach(queues, function (q) { return q.flush(true); });\r\n });\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue.length === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels();\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self.trackPageView = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1.href || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager.isPerformanceTimingSupported()) {\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.NavigationTimingNotSupported, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager.getPerformanceTiming().navigationStart;\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager.shouldCollectDuration(customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties.duration)) {\r\n duration = customProperties.duration;\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[\"duration\"] = customDuration;\r\n }\r\n // case 2\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager.isPerformanceTimingDataReady()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[\"duration\"] = customDuration;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = pageViewPerformance.durationMs;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = maxDurationLimit;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailedCalc, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { hasJSON, getJSON, dateNow, dumpObj, throwError } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n this.prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n this.pageVisitTimeTrackingHandler = pageVisitTimeTrackingHandler;\r\n this._logger = logger;\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = this.restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n this.pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.restartPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n var prevPageVisitData = this.stopPageVisitTimer();\r\n this.startPageVisitTimer(pageName, pageUrl);\r\n return prevPageVisitData;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Call to restart failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n PageVisitTimeManager.prototype.startPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(this._logger, this.prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n this._logger.warnToConsole(\"Call to start failed: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.stopPageVisitTimer = function () {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n var prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n // Return page visit data\r\n return prevPageVisitData;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Stop page visit timer failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this.pageVisitStartTime = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, getNavigator, getPerformance } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n this.MAX_DURATION_ALLOWED = 3600000; // 1h\r\n if (core) {\r\n this._logger = core.logger;\r\n }\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = this.getPerformanceNavigationTiming();\r\n var timing = this.getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming.duration;\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming.connectEnd : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming.connectEnd);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming.responseStart);\r\n response = dateTimeUtilsDuration(navigationTiming.responseStart, navigationTiming.responseEnd);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming.loadEventEnd);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing.navigationStart, timing.loadEventEnd);\r\n network = dateTimeUtilsDuration(timing.navigationStart, timing.connectEnd);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing.responseStart);\r\n response = dateTimeUtilsDuration(timing.responseStart, timing.responseEnd);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing.loadEventEnd);\r\n }\r\n if (total === 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ErrorPVCalc, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!this.shouldCollectDuration(total, network, request, response, dom)) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.InvalidDurationValue, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ClientPerformanceMathError, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance.duration = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n if (this.isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceNavigationTiming = function () {\r\n if (this.isPerformanceNavigationTimingSupported()) {\r\n return getPerformance().getEntriesByType(\"navigation\")[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns true is window PerformanceNavigationTiming API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceNavigationTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\").length > 0;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.timing;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing.navigationStart > 0\r\n && timing.responseStart > 0\r\n && timing.requestStart > 0\r\n && timing.loadEventEnd > 0\r\n && timing.responseEnd > 0\r\n && timing.connectEnd > 0\r\n && timing.domLoading > 0;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames.length; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations.length; i++) {\r\n if (durations[i] < 0 || durations[i] >= this.MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * ApplicationInsights.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { PageViewPerformance, PageView, RemoteDependencyData, Event as EventTelemetry, TelemetryItemCreator, Metric, Exception, SeverityLevel, Trace, dateTimeUtilsDuration, PropertiesPluginIdentifier, AnalyticsPluginIdentifier, stringToBoolOrDefault, createDomEvent, strNotSpecified, isCrossOriginError, utlDisableStorage, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, LoggingSeverity, _InternalMessageId, getWindow, getDocument, getHistory, getLocation, doPerf, objForEachKey, isString, isFunction, isNullOrUndefined, arrForEach, generateW3CId, dumpObj, getExceptionName, safeGetCookieMgr } from \"@microsoft/applicationinsights-core-js\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n\"use strict\";\r\nvar durationProperty = \"duration\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason.toString)) {\r\n return reason.toString();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar ApplicationInsights = /** @class */ (function (_super) {\r\n __extends(ApplicationInsights, _super);\r\n function ApplicationInsights() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _properties;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n dynamicProto(ApplicationInsights, _this, function (_self, _base) {\r\n var location = getLocation(true);\r\n _prevUri = location && location.href || \"\";\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self.core);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n doPerf(_self.core, function () { return _self.identifier + \":processTelemetry\"; }, function () {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _self._telemetryInitializers.length;\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _self._telemetryInitializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.apply(null, [env]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self.processNext(env, itemCtx);\r\n }\r\n }, function () { return ({ item: env }); }, !(env.sync));\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(event, EventTelemetry.dataType, EventTelemetry.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties); // Todo: Fix to pass measurements once type is updated\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(trace, Trace.dataType, Trace.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(metric, Metric.dataType, Metric.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self.trackPageView = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _self._pageViewManager.trackPageView(inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _self._pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = TelemetryItemCreator.create(pageView, PageView.dataType, PageView.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = TelemetryItemCreator.create(pageViewPerformance, PageViewPerformance.dataType, PageViewPerformance.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n try {\r\n _self._pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n _self.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc.href || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _self._pageVisitTimeManager.trackPreviousPageVisit(name, url);\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n var theError = exception.exception || exception.error || new Error(strNotSpecified);\r\n var exceptionPartB = new Exception(_self.diagLog(), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = TelemetryItemCreator.create(exceptionPartB, Exception.dataType, Exception.envelopeType, _self.diagLog(), customProperties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n try {\r\n _self.sendExceptionInternal(exception, customProperties);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self._onerror = function (exception) {\r\n var error = exception && exception.error;\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception.errorSrc || \"window.onerror@\" + url + \":\" + (exception.lineNumber || 0) + \":\" + (exception.columnNumber || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception.lineNumber || 0,\r\n columnNumber: exception.columnNumber || 0,\r\n message: exception.message\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception.error)) {\r\n _sendCORSException(Exception.CreateAutoException(\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception.lineNumber || 0, exception.columnNumber || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception.errorSrc) {\r\n exception.errorSrc = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: SeverityLevel.Error }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error.message) : \"null\";\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n _self._telemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throw Error(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _self.setInitialized(false); // resetting the initialized state, just in case the following fails\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _self.config = ctx.getExtCfg(identifier);\r\n // load default values if specified\r\n var defaults = ApplicationInsights.getDefaultConfig(config);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n _self.config[field] = ctx.getConfig(identifier, field, value);\r\n if (_self.config[field] === undefined) {\r\n _self.config[field] = value;\r\n }\r\n });\r\n }\r\n // Todo: move this out of static state\r\n if (_self.config.isStorageUseDisabled) {\r\n utlDisableStorage();\r\n }\r\n var configGetters = {\r\n instrumentationKey: function () { return config.instrumentationKey; },\r\n accountId: function () { return _self.config.accountId || config.accountId; },\r\n sessionRenewalMs: function () { return _self.config.sessionRenewalMs || config.sessionRenewalMs; },\r\n sessionExpirationMs: function () { return _self.config.sessionExpirationMs || config.sessionExpirationMs; },\r\n sampleRate: function () { return _self.config.samplingPercentage || config.samplingPercentage; },\r\n sdkExtension: function () { return _self.config.sdkExtension || config.sdkExtension; },\r\n isBrowserLinkTrackingEnabled: function () { return _self.config.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled; },\r\n appId: function () { return _self.config.appId || config.appId; }\r\n };\r\n _self._pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);\r\n _self._pageViewManager = new PageViewManager(_this, _self.config.overridePageViewDuration, _self.core, _self._pageViewPerformanceManager);\r\n _self._pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _self._telemetryInitializers = _self._telemetryInitializers || [];\r\n _addDefaultTelemetryInitializers(configGetters);\r\n _eventTracking = new Timing(_self.diagLog(), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n _self.trackEvent({ name: name, properties: properties });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self.diagLog(), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self.sendPageViewInternal(pageViewItem, properties);\r\n };\r\n var _window = getWindow();\r\n var _history = getHistory();\r\n var _location = getLocation(true);\r\n var instance = _this;\r\n if (_self.config.disableExceptionTracking === false &&\r\n !_self.config.autoExceptionInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onerror_1 = \"onerror\";\r\n var originalOnError_1 = _window[onerror_1];\r\n _window.onerror = function (message, url, lineNumber, columnNumber, error) {\r\n var evt = _window[strEvent];\r\n var handled = originalOnError_1 && originalOnError_1(message, url, lineNumber, columnNumber, error);\r\n if (handled !== true) { // handled could be typeof function\r\n instance._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, evt));\r\n }\r\n return handled;\r\n };\r\n _self.config.autoExceptionInstrumented = true;\r\n }\r\n if (_self.config.disableExceptionTracking === false &&\r\n _self.config.enableUnhandledPromiseRejectionTracking === true &&\r\n !_self.config.autoUnhandledPromiseInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onunhandledrejection_1 = \"onunhandledrejection\";\r\n var originalOnUnhandledRejection_1 = _window[onunhandledrejection_1];\r\n _window[onunhandledrejection_1] = function (error) {\r\n var evt = _window[strEvent];\r\n var handled = originalOnUnhandledRejection_1 && originalOnUnhandledRejection_1.call(_window, error);\r\n if (handled !== true) { // handled could be typeof function\r\n instance._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : \"\", 0, 0, error, evt));\r\n }\r\n return handled;\r\n };\r\n _self.config.autoUnhandledPromiseInstrumented = true;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (_self.config.enableAutoRouteTracking === true\r\n && _history && isFunction(_history.pushState) && isFunction(_history.replaceState)\r\n && _window\r\n && typeof Event !== \"undefined\") {\r\n var _self_1 = _this;\r\n // Find the properties plugin\r\n arrForEach(extensions, function (extension) {\r\n if (extension.identifier === PropertiesPluginIdentifier) {\r\n _properties = extension;\r\n }\r\n });\r\n _history.pushState = (function (f) { return function pushState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"pushState\"));\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.pushState);\r\n _history.replaceState = (function (f) { return function replaceState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"replaceState\"));\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.replaceState);\r\n if (_window.addEventListener) {\r\n _window.addEventListener(_self_1.config.namePrefix + \"popstate\", function () {\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n });\r\n _window.addEventListener(_self_1.config.namePrefix + \"locationchange\", function () {\r\n if (_properties && _properties.context && _properties.context.telemetryTrace) {\r\n _properties.context.telemetryTrace.traceID = generateW3CId();\r\n var traceLocationName = \"_unknown_\";\r\n if (_location && _location.pathname) {\r\n traceLocationName = _location.pathname + (_location.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n _properties.context.telemetryTrace.name = dataSanitizeString(_self_1.diagLog(), traceLocationName);\r\n }\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = _location && _location.href || \"\";\r\n }\r\n else {\r\n _currUri = _location && _location.href || \"\";\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self_1.trackPageView({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_this, _prevUri), _self_1.autoRoutePVDelay);\r\n });\r\n }\r\n }\r\n _self.setInitialized(true);\r\n };\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers(configGetters) {\r\n if (!configGetters.isBrowserLinkTrackingEnabled()) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (envelope.baseType === RemoteDependencyData.dataType) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1.length; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _addTelemetryInitializer(dropBrowserLinkRequests);\r\n }\r\n }\r\n function _addTelemetryInitializer(telemetryInitializer) {\r\n _self._telemetryInitializers.push(telemetryInitializer);\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = TelemetryItemCreator.create(exception, Exception.dataType, Exception.envelopeType, _self.diagLog(), properties);\r\n _self.core.track(telemetryItem);\r\n }\r\n });\r\n return _this;\r\n }\r\n ApplicationInsights.getDefaultConfig = function (config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = 30 * 60 * 1000;\r\n config.sessionExpirationMs = 24 * 60 * 60 * 1000;\r\n config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);\r\n config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);\r\n config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);\r\n config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);\r\n if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {\r\n config.samplingPercentage = 100;\r\n }\r\n config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);\r\n config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);\r\n config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);\r\n config.namePrefix = config.namePrefix || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);\r\n return config;\r\n };\r\n// Removed Stub for ApplicationInsights.prototype.getCookieMgr.\r\n// Removed Stub for ApplicationInsights.prototype.processTelemetry.\r\n// Removed Stub for ApplicationInsights.prototype.trackEvent.\r\n// Removed Stub for ApplicationInsights.prototype.startTrackEvent.\r\n// Removed Stub for ApplicationInsights.prototype.stopTrackEvent.\r\n// Removed Stub for ApplicationInsights.prototype.trackTrace.\r\n// Removed Stub for ApplicationInsights.prototype.trackMetric.\r\n// Removed Stub for ApplicationInsights.prototype.trackPageView.\r\n// Removed Stub for ApplicationInsights.prototype.sendPageViewInternal.\r\n// Removed Stub for ApplicationInsights.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for ApplicationInsights.prototype.trackPageViewPerformance.\r\n// Removed Stub for ApplicationInsights.prototype.startTrackPage.\r\n// Removed Stub for ApplicationInsights.prototype.stopTrackPage.\r\n// Removed Stub for ApplicationInsights.prototype.sendExceptionInternal.\r\n// Removed Stub for ApplicationInsights.prototype.trackException.\r\n// Removed Stub for ApplicationInsights.prototype._onerror.\r\n// Removed Stub for ApplicationInsights.prototype.addTelemetryInitializer.\r\n// Removed Stub for ApplicationInsights.prototype.initialize.\r\n ApplicationInsights.Version = \"2.7.4\"; // Not currently used anywhere\r\n return ApplicationInsights;\r\n}(BaseTelemetryPlugin));\r\nexport { ApplicationInsights };\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\n//# sourceMappingURL=ApplicationInsights.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, getJSON, arrForEach, isFunction, arrIndexOf, isString, dumpObj, isArray, getExceptionName } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self.enqueue = function (payload) {\r\n if (_self.count() >= config.eventsLimitInMem()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.InMemoryStorageBufferFull, \"Maximum in-memory buffer size reached: \" + _self.count(), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer.push(payload);\r\n };\r\n _self.count = function () {\r\n return _buffer.length;\r\n };\r\n _self.size = function () {\r\n var size = _buffer.length;\r\n for (var lp = 0; lp < _buffer.length; lp++) {\r\n size += _buffer[lp].length;\r\n }\r\n if (!config.emitLineDelimitedJson()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self.clear = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self.batchPayloads = function (payload) {\r\n if (payload && payload.length > 0) {\r\n var batch = config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self.markAsSent = function (payload) {\r\n _base.clear();\r\n };\r\n _self.clearSent = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer.BUFFER_KEY);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n buffer.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, buffer);\r\n _self.enqueue = function (payload) {\r\n if (_self.count() >= SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionStorageBufferFull, \"Maximum buffer size reached: \" + _self.count(), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base.enqueue(payload);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._get());\r\n };\r\n _self.clear = function () {\r\n _base.clear();\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._get());\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.markAsSent = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SessionStorageBufferFull, \"Sent buffer reached its maximum size: \" + sentElements.length, true);\r\n sentElements.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n }\r\n };\r\n _self.clearSent = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining.push(value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToRestoreStorageBuffer, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON.stringify(buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON.stringify([]));\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedToSetStorageBuffer, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/Generated/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { Envelope as AIEnvelope } from \"../../Interfaces/Contracts/Generated/Envelope\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nvar Envelope = /** @class */ (function (_super) {\r\n __extends(Envelope, _super);\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = _super.call(this) || this;\r\n _this.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _this.data = data;\r\n _this.time = toISOString(new Date());\r\n _this.aiDataContract = {\r\n time: 1 /* Required */,\r\n iKey: 1 /* Required */,\r\n name: 1 /* Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* Hidden */ : 1 /* Required */;\r\n },\r\n tags: 1 /* Required */,\r\n data: 1 /* Required */\r\n };\r\n return _this;\r\n }\r\n return Envelope;\r\n}(AIEnvelope));\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * System variables for a telemetry item.\r\n */\r\nvar Envelope = /** @class */ (function () {\r\n function Envelope() {\r\n /**\r\n * Envelope version. For internal use only. By assigning this the default, it will not be serialized within the payload unless changed to a value other than #1.\r\n */\r\n this.ver = 1;\r\n /**\r\n * Sampling rate used in application. This telemetry item represents 1 / sampleRate actual telemetry items.\r\n */\r\n this.sampleRate = 100.0;\r\n /**\r\n * Key/value collection of context properties. See ContextTagKeys for information on available properties.\r\n */\r\n this.tags = {};\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { Data as AIData } from \"../../Interfaces/Contracts/Generated/Data\";\r\nvar Data = /** @class */ (function (_super) {\r\n __extends(Data, _super);\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n _this.aiDataContract = {\r\n baseType: 1 /* Required */,\r\n baseData: 1 /* Required */\r\n };\r\n _this.baseType = baseType;\r\n _this.baseData = data;\r\n return _this;\r\n }\r\n return Data;\r\n}(AIData));\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Base } from \"./Base\";\r\n/**\r\n * Data struct to contain both B and C sections.\r\n */\r\nvar Data = /** @class */ (function (_super) {\r\n __extends(Data, _super);\r\n function Data() {\r\n return _super.call(this) || this;\r\n }\r\n return Data;\r\n}(Base));\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Data struct to contain only C section with custom fields.\r\n */\r\nvar Base = /** @class */ (function () {\r\n function Base() {\r\n }\r\n return Base;\r\n}());\r\nexport { Base };\r\n//# sourceMappingURL=Base.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { Data, Envelope, RemoteDependencyData, Event, Exception, Metric, PageView, Trace, PageViewPerformance, CtxTagKeys, HttpMethod, SampleRate, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isNullOrUndefined, isNumber, isString, toISOString, setValue, isTruthy, optimizeObject } from \"@microsoft/applicationinsights-core-js\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env.tags = env.tags || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item.tags = item.tags || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceType);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env.data = env.data || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs.name);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace.name));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace.traceID);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags.length - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env.tags = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem.tags = telemetryItem.tags || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: \"2.7.4\"\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n logger.warnToConsole(\"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd.name, bd.duration, bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData.dataType, remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event.dataType) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event.dataType) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData].name;\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event.dataType, eventData);\r\n return _createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception.dataType, exData);\r\n return _createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData.name, baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric.dataType, baseMetricData);\r\n return _createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var strDuration = \"duration\";\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][strDuration])) { // from part B properties\r\n duration = baseData[strProperties][strDuration];\r\n delete baseData[strProperties][strDuration];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem.data) &&\r\n !isNullOrUndefined(telemetryItem.data[strDuration])) { // from custom properties\r\n duration = telemetryItem.data[strDuration];\r\n delete telemetryItem.data[strDuration];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {}).traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd.name;\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView.dataType, pageViewData);\r\n return _createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd.name;\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance.dataType, baseData);\r\n return _createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData].measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace.dataType, baseData);\r\n return _createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { LoggingSeverity, _InternalMessageId, getJSON, objForEachKey, isFunction, isObject, isArray } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON().stringify(output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CircularReferenceDetected, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON().stringify(source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* Required */) : (contract & 1 /* Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* Hidden */) : (contract & 4 /* Hidden */);\r\n var isArray = contract & 2 /* Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.MissingRequiredFieldSpecification, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ItemNotInArray, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources.length; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output.push(item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value.toString) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value.toString();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n logger.throwInternal(LoggingSeverity.CRITICAL, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { SessionStorageSendBuffer, ArraySendBuffer } from \"./SendBuffer\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { Serializer } from \"./Serializer\"; // todo move to channel\r\nimport { DisabledPropertyName, RequestHeaders, PageView, Event, Trace, Exception, Metric, PageViewPerformance, RemoteDependencyData, ProcessLegacy, BreezeChannelIdentifier, SampleRate, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalMessageId, LoggingSeverity, getWindow, getNavigator, getJSON, BaseTelemetryPlugin, objForEachKey, isNullOrUndefined, arrForEach, dateNow, dumpObj, getExceptionName, getIEVersion, throwError, objKeys, isBeaconsSupported, isFetchSupported, useXDomainRequest, isXhrSupported, isArray } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Offline } from \"./Offline\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n // set default values\r\n return {\r\n endpointUrl: function () { return \"https://dc.services.visualstudio.com/v2/track\"; },\r\n emitLineDelimitedJson: function () { return false; },\r\n maxBatchInterval: function () { return 15000; },\r\n maxBatchSizeInBytes: function () { return 102400; },\r\n disableTelemetry: function () { return false; },\r\n enableSessionStorageBuffer: function () { return true; },\r\n isRetryDisabled: function () { return false; },\r\n isBeaconApiDisabled: function () { return true; },\r\n disableXhr: function () { return false; },\r\n onunloadDisableFetch: function () { return false; },\r\n onunloadDisableBeacon: function () { return false; },\r\n instrumentationKey: function () { return undefined; },\r\n namePrefix: function () { return undefined; },\r\n samplingPercentage: function () { return 100; },\r\n customHeaders: function () { return undefined; },\r\n convertUndefined: function () { return undefined; },\r\n eventsLimitInMem: function () { return 10000; }\r\n };\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * How many times in a row a retryable error condition has occurred.\r\n */\r\n var _consecutiveErrors;\r\n /**\r\n * The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n */\r\n var _retryAt;\r\n /**\r\n * The time of the last send operation.\r\n */\r\n var _lastSend;\r\n /**\r\n * Flag indicating that the sending should be paused\r\n */\r\n var _paused = false;\r\n /**\r\n * Handle to the timer for delayed sending of batches of data.\r\n */\r\n var _timeoutHandle;\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers = {};\r\n // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _syncFetchPayload = 0;\r\n /**\r\n * The sender to use if the payload size is too large\r\n */\r\n var _fallbackSender;\r\n /**\r\n * The identified sender to use for the synchronous unload stage\r\n */\r\n var _syncUnloadSender;\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n function _notImplemented() {\r\n throwError(\"Method not implemented.\");\r\n }\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig.maxBatchSizeInBytes()) {\r\n _self.triggerSend(true, null, 10 /* MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function () {\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self.triggerSend(true, null, 1 /* ManualFlush */);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig.onunloadDisableBeacon() === false || _self._senderConfig.isBeaconApiDisabled() === false) && isBeaconsSupported()) {\r\n try {\r\n _self.triggerSend(true, _doUnloadSend, 2 /* Unload */);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.teardown = _notImplemented;\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self._sender = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self.diagLog();\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _self._buffer = (_self._senderConfig.enableSessionStorageBuffer() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);\r\n _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n diagLog.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, \"Invalid Instrumentation key \" + config.instrumentationKey);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {\r\n arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self._senderConfig;\r\n var sendPostFunc = null;\r\n if (!senderConfig.disableXhr() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig.disableXhr() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig.isBeaconApiDisabled() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self._sender = sendPostFunc || _xhrSender;\r\n if (!senderConfig.onunloadDisableFetch() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig.disableXhr() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig.disableXhr() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self._senderConfig.disableTelemetry()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem.baseType) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem.baseType) {\r\n // Default\r\n telemetryItem.baseType = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self._sender) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample.sampleRate });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample.sampleRate;\r\n }\r\n var convertUndefined = _self._senderConfig.convertUndefined() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);\r\n if (!aiEnvelope_1) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem.tags && telemetryItem.tags[ProcessLegacy]) {\r\n arrForEach(telemetryItem.tags[ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n itemCtx.diagLog().warnToConsole(\"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem.tags[ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self._buffer;\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload.length) > _self._senderConfig.maxBatchSizeInBytes()) {\r\n _self.triggerSend(true, null, 10 /* MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n buffer.enqueue(payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self._buffer;\r\n // Send data only if disableTelemetry is false\r\n if (!_self._senderConfig.disableTelemetry()) {\r\n if (buffer.count() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self._sender(payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer.clear();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self._onError = function (payload, message, event) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.OnError, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self._onPartialSuccess = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry.push(extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed.push(extracted);\r\n }\r\n }\r\n if (payload.length > 0) {\r\n _self._onSuccess(payload, results.itemsAccepted);\r\n }\r\n if (failed.length > 0) {\r\n _self._onError(failed, _formatErrorMessageXhr(null, [\"partial success\", results.itemsAccepted, \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry.length > 0) {\r\n _resendPayload(retry);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \"Partial success. \" +\r\n \"Delivered: \" + payload.length + \", Failed: \" + failed.length +\r\n \". Will retry to send \" + retry.length + \" our of \" + results.itemsReceived + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self._onSuccess = function (payload, countOfItemsInPayload) {\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results.itemsAccepted\r\n && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, results);\r\n }\r\n else {\r\n _self._onError(payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self._onError(payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload.length + \" items.\");\r\n }\r\n else {\r\n _self._onError(payload, errorMessage);\r\n }\r\n }\r\n else if (Offline.isOffline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self._senderConfig.isRetryDisabled()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(Offline.isOffline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, response);\r\n }\r\n else {\r\n _self._onError(payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self._senderConfig.endpointUrl()) {\r\n _self._senderConfig.endpointUrl = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self._buffer;\r\n var url = _self._senderConfig.endpointUrl();\r\n var batch = _self._buffer.batchPayloads(payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer.markAsSent(payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload.length);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload.length > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload.length; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload.push(thePayload);\r\n }\r\n }\r\n if (droppedPayload.length > 0) {\r\n _fallbackSender(droppedPayload, true);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self._senderConfig.endpointUrl();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr.setRequestHeader(\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr.setRequestHeader(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr.setRequestHeader(headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload.length); };\r\n xhr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer.batchPayloads(payload);\r\n xhr.send(batch);\r\n _self._buffer.markAsSent(payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload.length;\r\n for (var lp = 0; lp < payload.length; lp++) {\r\n payloadSize += payload[lp].length;\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self._senderConfig.endpointUrl();\r\n var batch = _self._buffer.batchPayloads(payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch.length;\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer.markAsSent(payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self._onError(payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload.length, response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self._onError(payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self._onError(payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload.length);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result.itemsAccepted &&\r\n result.itemsReceived - result.itemsAccepted === result.errors.length) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload.length === 0) {\r\n return;\r\n }\r\n var buffer = _self._buffer;\r\n buffer.clearSent(payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer.enqueue(item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self._senderConfig.maxBatchInterval(), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self.triggerSend(true, null, 1 /* NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 503; // Service unavailable.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self._buffer;\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer.clear();\r\n return;\r\n }\r\n var endpointUrl = _self._senderConfig.endpointUrl().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer.batchPayloads(payload);\r\n xdr.send(batch);\r\n buffer.markAsSent(payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager.eventsSendRequest) {\r\n try {\r\n manager.eventsSendRequest(sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config.disableInstrumentationKeyValidation) ? false : config.disableInstrumentationKeyValidation;\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config.instrumentationKey);\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.teardown.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined, attachEvent } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n/**\r\n * @description Monitors browser for offline events\r\n * @export default - Offline: Static instance of OfflineListener\r\n * @class OfflineListener\r\n */\r\nvar OfflineListener = /** @class */ (function () {\r\n function OfflineListener() {\r\n var _window = getWindow();\r\n var _document = getDocument();\r\n var isListening = false;\r\n var _onlineStatus = true;\r\n dynamicProto(OfflineListener, this, function (_self) {\r\n try {\r\n if (_window) {\r\n if (attachEvent(_window, \"online\", _setOnline)) {\r\n attachEvent(_window, \"offline\", _setOffline);\r\n isListening = true;\r\n }\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n target.ononline = _setOnline;\r\n target.onoffline = _setOffline;\r\n isListening = true;\r\n }\r\n }\r\n if (isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator.onLine;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n isListening = false;\r\n }\r\n _self.isListening = isListening;\r\n _self.isOnline = function () {\r\n var result = true;\r\n var _navigator = getNavigator();\r\n if (isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n result = _navigator.onLine;\r\n }\r\n return result;\r\n };\r\n _self.isOffline = function () {\r\n return !_self.isOnline();\r\n };\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n });\r\n }\r\n// Removed Stub for OfflineListener.prototype.isOnline.\r\n// Removed Stub for OfflineListener.prototype.isOffline.\r\n OfflineListener.Offline = new OfflineListener;\r\n return OfflineListener;\r\n}());\r\nexport { OfflineListener };\r\nexport var Offline = OfflineListener.Offline;\r\n//# sourceMappingURL=Offline.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input.length < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input.length; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self.getSamplingScore = function (item) {\r\n var score = 0;\r\n if (item.tags && item.tags[keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item.tags[keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.user.id);\r\n }\r\n else if (item.tags && item.tags[keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item.tags[keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace.traceID) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace.traceID);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalMessageId, LoggingSeverity, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SampleRateOutOfRange, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this.sampleRate = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this.sampleRate; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric.dataType) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator.getSamplingScore(envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalMessageId, LoggingSeverity, safeGetCookieMgr, isFunction, newId, dumpObj, getExceptionName, dateNow, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config.sessionExpirationMs)) {\r\n config.sessionExpirationMs = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config.sessionRenewalMs)) {\r\n config.sessionRenewalMs = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self.config = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config.sessionCookiePostfix && _self.config.sessionCookiePostfix()) ?\r\n _self.config.sessionCookiePostfix() :\r\n ((_self.config.namePrefix && _self.config.namePrefix()) ? _self.config.namePrefix() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self.automaticSession = new Session();\r\n _self.update = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self.automaticSession;\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config.sessionExpirationMs();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config.sessionRenewalMs();\r\n var timeSinceAcqMs = nowMs - session.acquisitionDate;\r\n var timeSinceRenewalMs = nowMs - session.renewalDate;\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self.automaticSession;\r\n _setStorage(session.id, session.acquisitionDate, session.renewalDate);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens.length >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionRenewalDateIsZero, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionRenewalDateIsZero, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session.acquisitionDate = acqMs;\r\n session.renewalDate = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ErrorParsingAISessionCookie, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self.config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig.idLength ? theConfig.idLength() : 22);\r\n _self.automaticSession.acquisitionDate = nowMs;\r\n _setCookie(_self.automaticSession, nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserDoesNotSupportLocalStorage, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session.acquisitionDate;\r\n session.renewalDate = nowMs;\r\n var config = _self.config;\r\n var renewalPeriodMs = config.sessionRenewalMs();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config.sessionExpirationMs()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config.cookieDomain ? config.cookieDomain() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config.sessionExpirationMs() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal].join(\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Version = \"2.7.4\";\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalMessageId, LoggingSeverity, safeGetCookieMgr, safeGetLogger, newId, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self.config = config;\r\n var userCookiePostfix = (_self.config.userCookiePostfix && _self.config.userCookiePostfix()) ? _self.config.userCookiePostfix() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self.isNewUser = false;\r\n var params = cookie.split(User.cookieSeparator);\r\n if (params.length > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self.isUserCookieSet = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n var id = getNewId(theConfig.idLength ? config.idLength() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self.isNewUser = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self.isUserCookieSet = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie.join(User.cookieSeparator));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self.accountId = config.accountId ? config.accountId() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n var authCookie = _cookieManager.get(User.authUserCookieName);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User.cookieSeparator);\r\n if (authCookieString[0]) {\r\n _self.authenticatedId = authCookieString[0];\r\n }\r\n if (authCookieString.length > 1 && authCookieString[1]) {\r\n _self.accountId = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SetAuthContextFailedAccountName, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self.authenticatedId = authenticatedUserId;\r\n var authCookie = _self.authenticatedId;\r\n if (accountId) {\r\n _self.accountId = accountId;\r\n authCookie = [_self.authenticatedId, _self.accountId].join(User.cookieSeparator);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User.authUserCookieName, encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self.authenticatedId = null;\r\n _self.accountId = null;\r\n _cookieManager.del(User.authUserCookieName);\r\n };\r\n _self.update = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self.isUserCookieSet) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie.join(User.cookieSeparator));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n _self.name = name;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n _self.name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, _self.name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * TelemetryContext.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isString, objKeys, hasWindow, _InternalLogMessage, setValue, getSetValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { Extensions, CtxTagKeys, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { User } from \"./Context/User\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name]).length === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this.getSessionId = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self.sessionManager = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n _self.telemetryTrace = new TelemetryTrace(undefined, undefined, undefined, logger);\r\n _self.session = new Session();\r\n }\r\n _self.getSessionId = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self.sessionManager || {}).automaticSession;\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self.applySessionContext = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self.getSessionId(), isString);\r\n };\r\n _self.applyOperatingSystemContxt = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self.applyApplicationContext = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self.applyDeviceContext = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self.applyInternalContext = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self.applyLocationContext = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self.applyOperationContext = function (evt, itemCtx) {\r\n var telemetryTrace = _self.telemetryTrace;\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self.applyUserContext = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user.accountId, isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user.authenticatedId, isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * PropertiesPlugin.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, isNullOrUndefined, _InternalLogMessage, LoggingSeverity, _InternalMessageId, getNavigator, objForEachKey, getSetValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { PageView, BreezeChannelIdentifier, PropertiesPluginIdentifier, getExtensionByName } from \"@microsoft/applicationinsights-common\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _breezeChannel; // optional. If exists, grab appId from it\r\n var _extensionConfig;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _self.context = new TelemetryContext(core, _extensionConfig);\r\n _breezeChannel = getExtensionByName(extensions, BreezeChannelIdentifier);\r\n _self.context.appId = function () { return _breezeChannel ? _breezeChannel[\"_appId\"] : null; };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext.sessionManager) {\r\n theContext.sessionManager.update();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx.isUserCookieSet) {\r\n userCtx.update(theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx.isNewUser) {\r\n userCtx.isNewUser = false;\r\n var message = new _InternalLogMessage(_InternalMessageId.SendBrowserInfoOnUserInit, ((getNavigator() || {}).userAgent || \"\"));\r\n itemCtx.diagLog().logInternalMessage(LoggingSeverity.CRITICAL, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx.applySessionContext(evt, itemCtx);\r\n ctx.applyApplicationContext(evt, itemCtx);\r\n ctx.applyDeviceContext(evt, itemCtx);\r\n ctx.applyOperationContext(evt, itemCtx);\r\n ctx.applyUserContext(evt, itemCtx);\r\n ctx.applyOperatingSystemContxt(evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx.applyLocationContext(evt, itemCtx); // legacy tags\r\n ctx.applyInternalContext(evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var defaultConfig = {\r\n instrumentationKey: function () { return undefined; },\r\n accountId: function () { return null; },\r\n sessionRenewalMs: function () { return 30 * 60 * 1000; },\r\n samplingPercentage: function () { return 100; },\r\n sessionExpirationMs: function () { return 24 * 60 * 60 * 1000; },\r\n cookieDomain: function () { return null; },\r\n sdkExtension: function () { return null; },\r\n isBrowserLinkTrackingEnabled: function () { return false; },\r\n appId: function () { return null; },\r\n getSessionId: function () { return null; },\r\n namePrefix: function () { return undefined; },\r\n sessionCookiePostfix: function () { return undefined; },\r\n userCookiePostfix: function () { return undefined; },\r\n idLength: function () { return 22; },\r\n getNewId: function () { return null; }\r\n };\r\n return defaultConfig;\r\n };\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { hasOwnProperty, _getObjProto } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr.length; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* Request */ && type <= 2 /* HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb.apply(callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb.apply(callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = {\r\n name: aiHook.n,\r\n inst: funcThis,\r\n ctx: null,\r\n set: _replaceArg\r\n };\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target.push(arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n try {\r\n funcArgs.rslt = theFunc.apply(funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n var aiHook_1 = fn[aiInstrumentHooks];\r\n if (!aiHook_1) {\r\n // Only hook the function once\r\n aiHook_1 = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook_1);\r\n newFunc[aiInstrumentHooks] = aiHook_1; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook_1.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook_1.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook_1.h.splice(idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook_1.i++;\r\n aiHook_1.h.push(theHook);\r\n return theHook;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks.push(hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeUrl, dateTimeUtilsDuration, urlGetAbsoluteUrl, urlGetCompleteUrl, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { objKeys, arrForEach, isNumber, isString, normalizeJsName, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar strProperties = \"properties\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData.perfTiming;\r\n var props = dependency[strProperties] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strDuration = \"duration\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[strDuration];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, strDuration, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData.perfMark) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[strProperties] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self.openDone = false;\r\n self.setRequestHeaderDone = false;\r\n self.sendDone = false;\r\n self.abortDone = false;\r\n // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n self.stateChangeAttached = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceID, spanID, logger) {\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self.perfMark = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self.requestHeaders = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self.ajaxTotalDuration = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self.requestUrl = null;\r\n self.requestSize = 0;\r\n self.method = null;\r\n self.status = null;\r\n self.requestSentTime = null;\r\n self.responseStartedTime = null;\r\n self.responseFinishedTime = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self.traceID = traceID;\r\n self.spanID = spanID;\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self.requestUrl ? urlGetAbsoluteUrl(self.requestUrl) : null;\r\n };\r\n self.getPathName = function () {\r\n return self.requestUrl ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self.method, self.requestUrl)) : null;\r\n };\r\n self.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self.ajaxTotalDuration < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self.traceID + \".\" + self.spanID,\r\n target: self.getAbsoluteUrl(),\r\n name: self.getPathName(),\r\n type: ajaxType,\r\n startTime: null,\r\n duration: self.ajaxTotalDuration,\r\n success: (+(self.status)) >= 200 && (+(self.status)) < 400,\r\n responseCode: (+(self.status)),\r\n method: self.method\r\n },\r\n _a[strProperties] = { HttpMethod: self.method },\r\n _a);\r\n if (self.requestSentTime) {\r\n // Set the correct dependency start time\r\n dependency.startTime = new Date();\r\n dependency.startTime.setTime(self.requestSentTime);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].requestHeaders = self.requestHeaders;\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response.correlationContext;\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response.headerMap) {\r\n if (objKeys(response.headerMap).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].responseHeaders = response.headerMap;\r\n }\r\n }\r\n if (self.errorStatusText && self.status >= 400) {\r\n var responseType = response.type;\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n dependency[strProperties][strResponseText] = response[strResponseText] ? response.statusText + \" - \" + response[strResponseText] : response.statusText;\r\n }\r\n if (responseType === \"json\") {\r\n dependency[strProperties][strResponseText] = response.response ? response.statusText + \" - \" + JSON.stringify(response.response) : response.statusText;\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { generateW3CId } from \"@microsoft/applicationinsights-core-js\";\r\nvar Traceparent = /** @class */ (function () {\r\n function Traceparent(traceId, spanId) {\r\n var self = this;\r\n self.traceFlag = Traceparent.DEFAULT_TRACE_FLAG;\r\n self.version = Traceparent.DEFAULT_VERSION;\r\n if (traceId && Traceparent.isValidTraceId(traceId)) {\r\n self.traceId = traceId;\r\n }\r\n else {\r\n self.traceId = generateW3CId();\r\n }\r\n if (spanId && Traceparent.isValidSpanId(spanId)) {\r\n self.spanId = spanId;\r\n }\r\n else {\r\n self.spanId = generateW3CId().substr(0, 16);\r\n }\r\n }\r\n Traceparent.isValidTraceId = function (id) {\r\n return id.match(/^[0-9a-f]{32}$/) && id !== \"00000000000000000000000000000000\";\r\n };\r\n Traceparent.isValidSpanId = function (id) {\r\n return id.match(/^[0-9a-f]{16}$/) && id !== \"0000000000000000\";\r\n };\r\n Traceparent.prototype.toString = function () {\r\n var self = this;\r\n return \"\".concat(self.version, \"-\").concat(self.traceId, \"-\").concat(self.spanId, \"-\").concat(self.traceFlag);\r\n };\r\n Traceparent.DEFAULT_TRACE_FLAG = \"01\";\r\n Traceparent.DEFAULT_VERSION = \"00\";\r\n return Traceparent;\r\n}());\r\nexport { Traceparent };\r\n//# sourceMappingURL=TraceParent.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { RequestHeaders, CorrelationIdHelper, TelemetryItemCreator, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, DistributedTracingModes, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, LoggingSeverity, _InternalMessageId, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, attachEvent } from \"@microsoft/applicationinsights-core-js\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nimport { Traceparent } from \"./TraceParent\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strThrowInternal = \"throwInternal\";\r\nvar strFetch = \"fetch\";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(xhr) &&\r\n !isNullOrUndefined(xhr[strAjaxData]) &&\r\n !isNullOrUndefined(xhr[strAjaxData].requestUrl)) {\r\n result += \"(url: '\" + xhr[strAjaxData].requestUrl + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.CRITICAL, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.WARNING, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args.inst),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var strTrackDependencyDataInternal = \"trackDependencyDataInternal\"; // Using string to help with minification\r\n var location = getLocation();\r\n var _fetchInitialized = false; // fetch monitoring initialized\r\n var _xhrInitialized = false; // XHR monitoring initialized\r\n var _currentWindowHost = location && location.host && location.host.toLowerCase();\r\n var _config = AjaxMonitor.getEmptyConfig();\r\n var _enableRequestHeaderTracking = false;\r\n var _enableAjaxErrorStatusText = false;\r\n var _trackAjaxAttempts = 0;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking = false;\r\n var _maxAjaxCallsPerView = 0;\r\n var _enableResponseHeaderTracking = false;\r\n var _hooks = [];\r\n var _disabledUrls = {};\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n dynamicProto(AjaxMonitor, _this, function (_self, base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n base.initialize(config, core, extensions, pluginChain);\r\n var ctx_1 = _self._getTelCtx();\r\n var defaultConfig = AjaxMonitor.getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx_1.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config.distributedTracingMode;\r\n _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;\r\n _enableAjaxErrorStatusText = _config.enableAjaxErrorStatusText;\r\n _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;\r\n _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;\r\n _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;\r\n _excludeRequestFromAutoTrackingPatterns = _config.excludeRequestFromAutoTrackingPatterns;\r\n _addRequestContext = _config.addRequestContext;\r\n _isUsingAIHeaders = distributedTracingMode === DistributedTracingModes.AI || distributedTracingMode === DistributedTracingModes.AI_AND_W3C;\r\n _isUsingW3CHeaders = distributedTracingMode === DistributedTracingModes.AI_AND_W3C || distributedTracingMode === DistributedTracingModes.W3C;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey.length > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n if (_config.disableAjaxTracking === false) {\r\n _instrumentXhr();\r\n }\r\n _instrumentFetch();\r\n if (extensions.length > 0 && extensions) {\r\n var propExt = void 0, extIx = 0;\r\n while (!propExt && extIx < extensions.length) {\r\n if (extensions[extIx] && extensions[extIx].identifier === PropertiesPluginIdentifier) {\r\n propExt = extensions[extIx];\r\n }\r\n extIx++;\r\n }\r\n if (propExt) {\r\n _context = propExt.context; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n }\r\n };\r\n _self.teardown = function () {\r\n // Remove all instrumentation hooks\r\n arrForEach(_hooks, function (fn) {\r\n fn.rm();\r\n });\r\n _hooks = [];\r\n _fetchInitialized = false;\r\n _xhrInitialized = false;\r\n _self.setInitialized(false);\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _self[strTrackDependencyDataInternal](dependency, properties);\r\n };\r\n _self.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n if (input) { // Fetch\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n init.headers = new Headers(init.headers || (input instanceof Request ? (input.headers || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n init.headers.set(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n init.headers.set(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n init.headers.set(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n xhr.setRequestHeader(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n xhr.setRequestHeader(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n xhr.setRequestHeader(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[strTrackDependencyDataInternal] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config.distributedTracingMode === DistributedTracingModes.W3C\r\n || _config.distributedTracingMode === DistributedTracingModes.AI_AND_W3C)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id.length - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency.startTime)) {\r\n dependency.startTime = new Date();\r\n }\r\n var item = TelemetryItemCreator.create(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self.core.track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, _InternalMessageId.MaxAjaxPerPVExceeded, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key.toLowerCase() === header.toLowerCase()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (_config.disableFetchTracking === false) {\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (_fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self.includeCorrelationHeaders(fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n var fetchData = callDetails.ctx().data;\r\n if (fetchData) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {}).status, input, response, fetchData, function () {\r\n var ajaxResponse = {\r\n statusText: response.statusText,\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.\")\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _hooks.push(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n req: function (args, method, url, async) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState.openDone) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n req: function (args, context) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState.sendDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSend, \"Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n req: function (args) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState.abortDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxAbort, \"Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument setRequestHeader\r\n if (_enableRequestHeaderTracking) {\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n req: function (args, header, value) {\r\n var xhr = args.inst;\r\n if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n xhr[strAjaxData].requestHeaders[header] = value;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSetRequestHeader, \"Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n }\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\").toLowerCase();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// <summary>Verifies that particalar instance of XMLHttpRequest needs to be monitored</summary>\r\n /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.method = method;\r\n ajaxData.requestUrl = url;\r\n ajaxData.xhrMonitoringState.openDone = true;\r\n ajaxData.requestHeaders = {};\r\n ajaxData.async = async;\r\n ajaxData.errorStatusText = _enableAjaxErrorStatusText;\r\n xhr[strAjaxData] = ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState.stateChangeAttached = attachEvent(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText.toLowerCase(), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxRSC, \"Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n });\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr.responseText;\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = xhr.status;\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxDur, \"Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.\", errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData.CreateTrackItem(\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr.statusText,\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr.response\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr.getAllResponseHeaders();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr.status, xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedAddingCustomDefinedRequestContext, \"Failed to add custom defined request context as configured call back may missing a null check.\");\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency.properties = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr.getAllResponseHeaders();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders.requestContextHeaderLowerCase);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData.requestUrl && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries.length === 1) {\r\n ajaxData.perfMark = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData.perfMark;\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config.ajaxPerfLookupDelay;\r\n var requestUrl = ajaxData.requestUrl;\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries.length - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry.name, requestUrl) !== -1 || _indexOf(requestUrl, entry.name) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry.name === perfMark.name) {\r\n // We hit the start event\r\n ajaxData.perfTiming = perfTiming;\r\n break;\r\n }\r\n if (entry.startTime < perfMark.startTime - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData.perfTiming || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark.name);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n ajaxData.errorStatusText = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData.requestUrl = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData.requestUrl = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init.method) {\r\n method = init.method;\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input.method;\r\n }\r\n ajaxData.method = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init.headers : 0) || (input instanceof Request ? (input.headers || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData.requestHeaders = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, \"Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.\", errorProps);\r\n }\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData.CreateTrackItem(\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedAddingCustomDefinedRequestContext, \"Failed to add custom defined request context as configured call back may missing a null check.\");\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency.properties = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxDur, null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response.headers) {\r\n try {\r\n var responseHeader = response.headers.get(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.getDefaultConfig = function () {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: true,\r\n excludeRequestFromAutoTrackingPatterns: undefined,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: DistributedTracingModes.AI_AND_W3C,\r\n correlationHeaderExcludedDomains: [\r\n \"*.blob.core.windows.net\",\r\n \"*.blob.core.chinacloudapi.cn\",\r\n \"*.blob.core.cloudapi.de\",\r\n \"*.blob.core.usgovcloudapi.net\"\r\n ],\r\n correlationHeaderDomains: undefined,\r\n correlationHeaderExcludePatterns: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25,\r\n ignoreHeaders: [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n addRequestContext: undefined\r\n };\r\n return config;\r\n };\r\n AjaxMonitor.getEmptyConfig = function () {\r\n var emptyConfig = this.getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n// Removed Stub for AjaxMonitor.prototype.teardown.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString.split(_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv.split(_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts.length === 2) { // only save fields with valid formats\r\n var key = kvParts[0].toLowerCase();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result).length > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result.ingestionendpoint = result.ingestionendpoint || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply the default endpoints\r\n result.ingestionendpoint = result.ingestionendpoint || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.7.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { AppInsightsCore, LoggingSeverity, _InternalMessageId, hasWindow, hasDocument, isReactNative, doPerf, objForEachKey, proxyAssign, arrForEach, isString, isFunction, isNullOrUndefined, isArray, throwError, addPageUnloadEventListener, addPageHideEventListener } from \"@microsoft/applicationinsights-core-js\";\r\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { Util, CorrelationIdHelper, UrlHelper, DateTimeUtils, ConnectionStringParser, RequestHeaders, DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, AIData, AIBase, Envelope, Event, Exception, Metric, PageView, PageViewData, RemoteDependencyData, Trace, PageViewPerformance, Data, SeverityLevel, ConfigurationManager, ContextTagKeys, DataSanitizer, TelemetryItemCreator, CtxTagKeys, Extensions, DistributedTracingModes, PropertiesPluginIdentifier, BreezeChannelIdentifier, AnalyticsPluginIdentifier, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\n\"use strict\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n \"snippet\", \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* Default */,\r\n Required: 1 /* Required */,\r\n Array: 2 /* Array */,\r\n Hidden: 4 /* Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n AIData: AIData,\r\n AIBase: AIBase,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n PageViewData: PageViewData,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _self = this;\r\n // initialize the queue and config in case they are undefined\r\n _self._snippetVersion = \"\" + (snippet.sv || snippet.version || \"\");\r\n snippet.queue = snippet.queue || [];\r\n snippet.version = snippet.version || 2.0; // Default to new version\r\n var config = snippet.config || {};\r\n if (config.connectionString) {\r\n var cs = parseConnectionString(config.connectionString);\r\n var ingest = cs.ingestionendpoint;\r\n config.endpointUrl = ingest ? \"\".concat(ingest, \"/v2/track\") : config.endpointUrl; // only add /v2/track when from connectionstring\r\n config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;\r\n }\r\n _self.appInsights = new ApplicationInsights();\r\n _self.properties = new PropertiesPlugin();\r\n _self.dependencies = new DependenciesPlugin();\r\n _self.core = new AppInsightsCore();\r\n _self._sender = new Sender();\r\n _self.snippet = snippet;\r\n _self.config = config;\r\n _self.getSKUDefaults();\r\n }\r\n // Analytics Plugin\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n Initialization.prototype.getCookieMgr = function () {\r\n return this.appInsights.getCookieMgr();\r\n };\r\n /**\r\n * Log a user action or other occurrence.\r\n * @param {IEventTelemetry} event\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackEvent = function (event, customProperties) {\r\n this.appInsights.trackEvent(event, customProperties);\r\n };\r\n /**\r\n * Logs that a page, or similar container was displayed to the user.\r\n * @param {IPageViewTelemetry} pageView\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageView = function (pageView) {\r\n var inPv = pageView || {};\r\n this.appInsights.trackPageView(inPv);\r\n };\r\n /**\r\n * Log a bag of performance information via the customProperties field.\r\n * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n var inPvp = pageViewPerformance || {};\r\n this.appInsights.trackPageViewPerformance(inPvp);\r\n };\r\n /**\r\n * Log an exception that you have caught.\r\n * @param {IExceptionTelemetry} exception\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackException = function (exception, customProperties) {\r\n if (exception && !exception.exception && exception.error) {\r\n exception.exception = exception.error;\r\n }\r\n this.appInsights.trackException(exception, customProperties);\r\n };\r\n /**\r\n * Manually send uncaught exception telemetry. This method is automatically triggered\r\n * on a window.onerror event.\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype._onerror = function (exception) {\r\n this.appInsights._onerror(exception);\r\n };\r\n /**\r\n * Log a diagnostic scenario such entering or leaving a function.\r\n * @param {ITraceTelemetry} trace\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n this.appInsights.trackTrace(trace, customProperties);\r\n };\r\n /**\r\n * Log a numeric value that is not associated with a specific event. Typically used\r\n * to send regular reports of performance indicators.\r\n *\r\n * To send a single measurement, just use the `name` and `average` fields\r\n * of {@link IMetricTelemetry}.\r\n *\r\n * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n * aggregating multiple measurements and sending the resulting average and modifying\r\n * the `sampleCount` field of {@link IMetricTelemetry}.\r\n * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n this.appInsights.trackMetric(metric, customProperties);\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n Initialization.prototype.startTrackPage = function (name) {\r\n this.appInsights.startTrackPage(name);\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n this.appInsights.stopTrackPage(name, url, customProperties, measurements);\r\n };\r\n Initialization.prototype.startTrackEvent = function (name) {\r\n this.appInsights.startTrackEvent(name);\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n this.appInsights.stopTrackEvent(name, properties, measurements); // Todo: Fix to pass measurements once type is updated\r\n };\r\n Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n return this.appInsights.addTelemetryInitializer(telemetryInitializer);\r\n };\r\n // Properties Plugin\r\n /**\r\n * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n *\r\n * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n * @param {string} authenticatedUserId\r\n * @param {string} [accountId]\r\n * @param {boolean} [storeInCookie=false]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n this.properties.context.user.setAuthenticatedUserContext(authenticatedUserId, accountId, storeInCookie);\r\n };\r\n /**\r\n * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n this.properties.context.user.clearAuthenticatedUserContext();\r\n };\r\n // Dependencies Plugin\r\n /**\r\n * Log a dependency call (e.g. ajax)\r\n * @param {IDependencyTelemetry} dependency\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackDependencyData = function (dependency) {\r\n this.dependencies.trackDependencyData(dependency);\r\n };\r\n // Misc\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.flush = function (async) {\r\n var _this = this;\r\n if (async === void 0) { async = true; }\r\n doPerf(this.core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_this.core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel.flush(async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n * Fall back to xhr sender if beacon is not supported.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(this.core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel.onunloadFlush) {\r\n channel.onunloadFlush();\r\n }\r\n else {\r\n channel.flush(async);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initialize this instance of ApplicationInsights\r\n * @returns {IApplicationInsights}\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n var _this = this;\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n var _self = this;\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_self._snippetVersion)) {\r\n snippetVer += _self._snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self.context && _self.context.internal) {\r\n _self.context.internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n _ignoreUpdateSnippetProperties.indexOf(field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self.config.extensions && _self.config.extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions.push(_self._sender);\r\n extensions.push(_self.properties);\r\n extensions.push(_self.dependencies);\r\n extensions.push(_self.appInsights);\r\n // initialize core\r\n _self.core.initialize(_self.config, extensions, logger, notificationManager);\r\n _self.context = _self.properties.context;\r\n if (_internalSdkSrc && _self.context) {\r\n _self.context.internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self.snippet);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self.pollInternalLogs();\r\n _self.addHousekeepingBeforeUnload(_this);\r\n });\r\n return _self;\r\n };\r\n /**\r\n * Overwrite the lazy loaded fields of global window snippet to contain the\r\n * actual initialized API methods\r\n * @param {Snippet} snippet\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, this, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && _ignoreUpdateSnippetProperties.indexOf(name) === -1;\r\n });\r\n };\r\n /**\r\n * Call any functions that were queued before the main script was loaded\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.emptyQueue = function () {\r\n var _self = this;\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet.queue)) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet.queue.length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet.queue[i];\r\n call();\r\n }\r\n _self.snippet.queue = undefined;\r\n delete _self.snippet.queue;\r\n }\r\n }\r\n catch (exception) {\r\n var properties = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // LoggingSeverity.WARNING,\r\n // _InternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n Initialization.prototype.pollInternalLogs = function () {\r\n this.core.pollInternalLogs();\r\n };\r\n Initialization.prototype.stopPollingInternalLogs = function () {\r\n this.core.stopPollingInternalLogs();\r\n };\r\n Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance.onunloadFlush(false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n arrForEach(appInsightsInstance.appInsights.core[\"_extensions\"], function (ext) {\r\n if (ext.identifier === PropertiesPluginIdentifier) {\r\n if (ext && ext.context && ext.context._sessionManager) {\r\n ext.context._sessionManager.backup();\r\n }\r\n return -1;\r\n }\r\n });\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights.config.disablePageUnloadEvents;\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnBeforeUnload) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n added = addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents);\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n added = addPageHideEventListener(performHousekeeping, excludePageUnloadEvents) || added;\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n appInsightsInstance.appInsights.core.logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToAddHandlerForOnBeforeUnload, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config.disableFlushOnUnload) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents);\r\n }\r\n }\r\n };\r\n Initialization.prototype.getSender = function () {\r\n return this._sender;\r\n };\r\n Initialization.prototype.getSKUDefaults = function () {\r\n var _self = this;\r\n _self.config.diagnosticLogInterval =\r\n _self.config.diagnosticLogInterval && _self.config.diagnosticLogInterval > 0 ? _self.config.diagnosticLogInterval : 10000;\r\n };\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url.indexOf(cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url.indexOf(\"/scripts/\") === -1) {\r\n if (url.indexOf(\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url.indexOf(\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/* eslint-disable no-param-reassign */\nimport type { ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\n\nimport { appConfig } from './appConfig';\nimport persistance from './microApps/common/persistance/persistance';\nimport { GdprCookieVendors, triggerWhenGDPRConsentExists } from './utility/gdpr';\n\nconst instrumentationKey = appConfig.coopSettings.applicationInsightsKey || '';\n\nconst ai = new ApplicationInsights({\n config: {\n instrumentationKey,\n maxBatchInterval: 15000, // be careful changing this, each log call will call getStoreCOntext, which is quite slow\n disableFetchTracking: false,\n disableFlushOnBeforeUnload: true,\n loggingLevelConsole: 2,\n loggingLevelTelemetry: 2,\n enableAjaxErrorStatusText: true,\n enableUnhandledPromiseRejectionTracking: true,\n enableCorsCorrelation: true,\n correlationHeaderExcludedDomains: [\n '*.consentmanager.net',\n 'delivery.consentmanager.net',\n 'gtm.coop.se',\n 'www.google-analytics.com',\n appConfig.coopSettings.serviceAccess?.ebiDigitalReceiptsApiUrl?.replace('https://', ''),\n '*.dynamicyield.com',\n '*.dynamicyield.eu',\n 'direct.dy-api.eu',\n 'api.ebilobster.ai',\n '*.zdassets.com',\n '*.zendesk.com',\n '*.northfork.se',\n 'sitegainer.com',\n '*.northfork.se',\n '*.googleapis.com',\n ],\n },\n});\n\nconst excludedDomainsFromLogs = [\n 'google-analytics.com',\n 'hotjar.io',\n 'hotjar.com',\n 'recs.richrelevance.com',\n 'stats.g.doubleclick.net',\n 'consentmanager.mgr.consensu.org',\n 'code.upscope.io',\n 'gtm.coop.se',\n 'facebook.com',\n 'ebilobster.ai',\n 'dynamicyield.com',\n 'zdassets.com',\n 'zendesk.com',\n];\n\nconst sustainabilityFilter = (item: ITelemetryItem) => {\n if (\n item.baseData?.name?.includes('articleservice/search/articles/sustainability') &&\n item?.baseData?.responseCode === 404\n ) {\n return false;\n }\n\n return true;\n};\n\nconst telemetryFilters: Array<(item: ITelemetryItem) => boolean> = [sustainabilityFilter];\n\nconst telemetryInitializer = (item: ITelemetryItem): void | boolean => {\n const target: string = item.baseData?.target;\n if (target) {\n if (excludedDomainsFromLogs.some((excludedDomain) => target.includes(excludedDomain))) {\n return false;\n }\n }\n\n if (item.data) {\n // eslint-disable-next-line no-param-reassign\n const storeContext = persistance.storeContext.getCached();\n if (storeContext) {\n // eslint-disable-next-line no-param-reassign\n item.data.productionUnit = storeContext.productionUnitId;\n if (storeContext.zipCode) {\n // eslint-disable-next-line no-param-reassign\n item.data.zipCode = storeContext.zipCode;\n }\n if (storeContext.pickupPointId) {\n // eslint-disable-next-line no-param-reassign\n item.data.pickupPointId = storeContext.pickupPointId;\n }\n }\n }\n\n // ajax dependencies that are cancelled by browser have a result code 0 and are presented as errors\n // Filter them to keep App Insights cleaner and lower error rate\n if (item?.baseData?.responseCode === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-param-reassign\n (<any>item).baseData.success = true;\n }\n\n const shouldSendTelemetry = telemetryFilters.reduce((filterFlag, filter) => {\n // if any filtering function returned false, short circuit\n if (!filterFlag) {\n return filterFlag;\n }\n\n return filter(item);\n }, true);\n\n return shouldSendTelemetry;\n};\nlet isAiLoaded = false;\nconst loadAi = () => {\n isAiLoaded = true;\n ai.loadAppInsights();\n if (appConfig.coopUserSettings.userId) {\n ai.setAuthenticatedUserContext(appConfig.coopUserSettings.userId);\n }\n ai.addTelemetryInitializer(telemetryInitializer);\n};\n\nconst initAi = () => {\n const userIdCookie = ai.getCookieMgr().get('ai_user');\n const hasEnabledCookies = typeof userIdCookie === 'string' && userIdCookie.length > 0;\n if (hasEnabledCookies) {\n loadAi();\n }\n};\n\nconst enableCookie = () => {\n if (!isAiLoaded) {\n loadAi();\n }\n};\n\nconst disableCookie = () => {\n ai.config.disableTelemetry = true;\n ai.getCookieMgr().setEnabled(true);\n ai.getCookieMgr().del('ai_session');\n ai.getCookieMgr().del('ai_user');\n ai.getCookieMgr().setEnabled(false);\n ai.clearAuthenticatedUserContext();\n};\n\ntriggerWhenGDPRConsentExists({\n cookieVendor: GdprCookieVendors.MicrosoftAzure,\n onConsentExists: enableCookie,\n onActiveDecline: disableCookie,\n});\n\ninitAi();\n\nexport { ai as appInsights };\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-underscore-dangle */\nimport { Cookies } from '../../utility/cookies';\n\nexport class LocalStorageFacade {\n private static SESSION_COOKIE_KEY: string = 'StorageSessionId';\n\n private static _instance: LocalStorageFacade;\n\n public static get instance(): LocalStorageFacade {\n return this._instance || (this._instance = new this());\n }\n\n add(key: string, value: string) {\n localStorage.setItem(key, value);\n }\n\n get(key: string) {\n return localStorage.getItem(key);\n }\n\n public addObject<T>(key: string, value: T): void {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n public getObject<T>(key: string) {\n const storageItem = localStorage.getItem(key);\n if (storageItem === null) return undefined;\n try {\n return <T>JSON.parse(storageItem);\n } catch (ex) {\n return undefined;\n }\n }\n\n public getSessionId(): string {\n const sessionId = Cookies.read(LocalStorageFacade.SESSION_COOKIE_KEY);\n if (sessionId) return sessionId;\n const val = Math.random().toString(36).substring(7);\n Cookies.create(LocalStorageFacade.SESSION_COOKIE_KEY, val);\n return val;\n }\n\n public remove(key: string): void {\n localStorage.removeItem(key);\n }\n}\n","import type { NonInteractionUserEvent } from '../analytics/analyticsHandler';\nimport { appConfig } from '../appConfig';\nimport orderFlow from '../microApps/common/flow/orderFlow';\nimport { Browser } from '../utility/browser';\nimport { Cookies } from '../utility/cookies';\n\nexport const gaNonInteractionUserEventHandler = () => {\n const EXPENSIVE_GA_AJAX_CALL_SENT = 'gaOcs';\n\n // send this event only once per session (session cookie),\n if (!Cookies.read(EXPENSIVE_GA_AJAX_CALL_SENT)) {\n const gaNonInteractionUserEvent = Browser.createNewEvent(\n 'ga:nonInteractionUser',\n ) as NonInteractionUserEvent;\n\n Promise.all([\n fetch('/GoogleAnalytics/NonInteractionUserEventData'),\n appConfig.coopUserSettings.isAuthenticated ? orderFlow.getOrderCount() : undefined,\n ])\n .then(async ([gaResponse, orderCountResponse]) => [\n await gaResponse.json(),\n orderCountResponse,\n ])\n .then((data) => {\n const localApiData = data[0] as {\n pointShopPoints: string;\n selectionSupport: string;\n };\n const orderCount = data[1] as number | undefined;\n\n gaNonInteractionUserEvent.pointShopPoints = localApiData.pointShopPoints;\n gaNonInteractionUserEvent.utbud = localApiData.selectionSupport;\n if (orderCount !== undefined) {\n gaNonInteractionUserEvent.dimension23 = orderCount.toString();\n }\n })\n .finally(() => {\n Cookies.create(EXPENSIVE_GA_AJAX_CALL_SENT, 'yes'); // always add this, we dont want to kill api with ons of requests if get orders throws exception\n window.dispatchEvent(gaNonInteractionUserEvent);\n });\n }\n};\n","import { appInsights } from '../appInsights';\n\nconst trackAppInsightsEvent = (name: string, error: Error, el: Element) => {\n appInsights?.trackEvent({\n name,\n properties: {\n name: error?.name,\n stack: error?.stack,\n element: el,\n },\n });\n};\n\n/**\n * Returns a function that triggers the callback once when the element is in the viewport.\n */\nconst createTriggerCallbackOnceWhenInViewPort = (options: { threshold: number }) => {\n const observedElements: Map<Element, () => void> = new Map();\n\n const observer = new IntersectionObserver((entries, observerOptions) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const el = entry.target;\n const callback = observedElements.get(el);\n\n try {\n callback?.();\n } catch (error) {\n if (error instanceof Error) {\n trackAppInsightsEvent(\n 'createTriggerCallbackOnceWhenInViewPort - Could not get element from Map',\n error,\n el,\n );\n }\n }\n\n observedElements.delete(el);\n observerOptions.unobserve(el);\n }\n });\n }, options);\n\n return (el: Element, callback: () => void) => {\n observedElements.set(el, callback);\n observer.observe(el);\n };\n};\n\n/**\n * Minimum of 50% must be shown before intersection triggers\n */\nexport const triggerCallbackOnceWhenInViewPort = createTriggerCallbackOnceWhenInViewPort({\n threshold: 0.5,\n});\n","const CLASS_UNMUTED = 'is-unmuted';\n\nconst videoMuteHandler = (muteButton: HTMLElement) => {\n if (!muteButton) {\n return null;\n }\n const targetVideo = muteButton.parentNode?.querySelector<HTMLVideoElement>('.js-videoMedia');\n if (!targetVideo) {\n return null;\n }\n\n if (targetVideo.muted) {\n targetVideo.muted = false;\n muteButton.classList.add(CLASS_UNMUTED);\n } else {\n targetVideo.muted = true;\n muteButton.classList.remove(CLASS_UNMUTED);\n }\n};\n\nexport default videoMuteHandler;\n","import { AnalyticsHandler } from './analytics/analyticsHandler';\nimport { bannerResizeHandler } from './globalDomHandlers/bannerResizeHandler';\nimport { gaNonInteractionUserEventHandler } from './globalDomHandlers/gaNonInteractionUserEventHandler';\nimport gaPromoViewHandler from './globalDomHandlers/gaPromoViewHandler';\nimport videoMuteHandler from './globalDomHandlers/videoClickHandler';\nimport { cleanTokenSessionStorageIfNeeded } from './microApps/common/api/auth/getAuthToken';\nimport { ga4MiscTracking } from './microApps/common/tracking/ga4/misc';\nimport initializeDynamicYield from './utility/dynamicYield';\nimport { syncConsentManagerVendors } from './utility/gdpr';\n\nconst globalInvokes = () => {\n initializeDynamicYield();\n AnalyticsHandler.initialize();\n\n syncConsentManagerVendors();\n cleanTokenSessionStorageIfNeeded();\n\n handleGlobalClick();\n handleGlobalEvents();\n\n // it is here to remove old ab test local storage keys. We can remove after some time. The ab tests will now be kept inside single key coop_abtest.\n cleanLocalStorage(['abtest_']);\n};\n\nconst cleanLocalStorage = (keysToRemove: string[]) => {\n if (!keysToRemove.length) return;\n\n const storageKeys = Object.keys(window.localStorage);\n\n const storageKeysToRemove = storageKeys.filter((sk) =>\n keysToRemove.some((ktr) => sk.startsWith(ktr)),\n );\n\n storageKeysToRemove.forEach((sktr) => window.localStorage.removeItem(sktr));\n if (storageKeysToRemove.length) {\n // eslint-disable-next-line no-console\n console.warn(`Removed storage Keys: ${storageKeysToRemove.join(',')}`);\n }\n};\n\nconst handleGlobalClick = () => {\n const onClick = (event: Event) => {\n const element = event.target as HTMLElement;\n\n const partnerPage = Array.from(\n document.getElementsByClassName('js-gaPartnerName'),\n )?.[0] as HTMLElement;\n const isPartnerPage = !!partnerPage;\n\n const additionalData = isPartnerPage ? { partner: partnerPage.dataset.name || null } : {};\n\n if (element instanceof HTMLAnchorElement && element.tagName === 'A' && element.href) {\n ga4MiscTracking.outboundClick(element.href, element.innerText, additionalData);\n return;\n }\n\n const closestAnchor = (element as HTMLElement).closest('a');\n if (closestAnchor) {\n ga4MiscTracking.outboundClick(\n closestAnchor.href,\n closestAnchor.innerText,\n additionalData,\n );\n }\n\n if (element && element.classList.contains('js-videoMute')) {\n videoMuteHandler(element);\n }\n };\n\n document.addEventListener('click', onClick);\n};\n\nconst handleGlobalEvents = () => {\n bannerResizeHandler();\n\n setTimeout(gaNonInteractionUserEventHandler, 1000);\n document.querySelectorAll<HTMLElement>('.js-gaPromo').forEach((element) => {\n gaPromoViewHandler(element);\n });\n};\n\nexport default globalInvokes;\n","import _ from 'underscore';\n\nimport { Browser, BrowserSize } from '../utility/browser';\n\nexport const bannerResizeHandler = () => {\n const BANNERCELL_DEFAULT_MIN_HEIGHT = '350px';\n const BANNERCELL_NO_MIN_HEIGHT = '100%'; // For easter promotion html block\n\n const resizeBannerCells = (\n bannerCells: NodeListOf<HTMLDivElement>,\n desktopMinHeight: string,\n ) => {\n bannerCells.forEach((cell) => {\n if (window.innerWidth < Browser.getBreakpoint(BrowserSize.sm).from) {\n cell.style.setProperty('min-height', `${cell.clientWidth}px`);\n } else {\n cell.style.setProperty('min-height', desktopMinHeight);\n }\n });\n };\n\n const onResize = () => {\n const bannerCellsDefault = document.querySelectorAll<HTMLDivElement>(\n '.Banner:not(.Banner--noMinHeight):not(.Banner--noMinHeightOnDesktop) .Banner-cell',\n );\n const bannerCellsNoMinHeightOnDesktop = document.querySelectorAll<HTMLDivElement>(\n '.Banner.Banner--noMinHeightOnDesktop .Banner-cell',\n ); // For easter promotion html block\n\n resizeBannerCells(bannerCellsDefault, BANNERCELL_DEFAULT_MIN_HEIGHT);\n resizeBannerCells(bannerCellsNoMinHeightOnDesktop, BANNERCELL_NO_MIN_HEIGHT); // For easter promotion html block\n };\n\n window.addEventListener('resize', _.throttle(onResize, 50));\n onResize();\n};\n","import { ga4PromotionTracking } from '../microApps/common/tracking/ga4/promotion';\nimport { triggerCallbackOnceWhenInViewPort } from '../utility/ViewPortObserver';\n\nconst gaPromoViewHandler = (element: HTMLElement) => {\n if (!element) {\n return null;\n }\n\n const dataGaPromoString = element.dataset.gaPromo;\n if (!dataGaPromoString) {\n return null;\n }\n\n const dataGaPromos = dataGaPromoString?.split(';') ?? [];\n const [gaPromoId, gaPromoName, gaPromoCreative, gaPromoPosition] = dataGaPromos;\n\n const analyticsPromoData = { gaPromoId, gaPromoName, gaPromoCreative, gaPromoPosition };\n\n triggerCallbackOnceWhenInViewPort(element, () => {\n ga4PromotionTracking.viewPromotion(analyticsPromoData);\n });\n\n element.addEventListener('click', (e) => {\n const target = e.target as HTMLElement;\n const link = target.closest('a');\n if (!link) return true;\n\n const promoEl = link.closest('.js-gaPromo');\n if (!promoEl || promoEl !== element) {\n return true;\n }\n\n const href = link.getAttribute('href');\n if (!href || href === '' || href.indexOf('#') === 0) return;\n\n ga4PromotionTracking.selectPromotion(analyticsPromoData);\n });\n};\n\nexport default gaPromoViewHandler;\n","import type { FC } from 'react';\n\nimport CommonLayout from './components/CommonLayout';\nimport GlobalHeader from './components/Header/GlobalHeader';\n\ninterface BaseLayoutProps {\n stayAfterLoginLogoutRedirect?: boolean;\n}\n\n/**\n * Layout for every page that is not using a more specific Layout, like i.e. EcommerceLayout\n */\nconst BaseLayout: FC<React.PropsWithChildren<BaseLayoutProps>> = (props) => {\n return (\n <CommonLayout>\n <GlobalHeader\n hideB2BSwitch={false}\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect}\n />\n {props.children}\n </CommonLayout>\n );\n};\n\nexport default BaseLayout;\n","import { useEffect } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { appConfig } from '../../../../appConfig';\nimport { useAppDispatch, useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { cartThunks } from '../../../common/thunks/cartThunks';\nimport { personalizationTracking } from '../../../common/tracking/contextAware/personalizationEvents';\nimport { ga4UserTracking } from '../../../common/tracking/ga4/user';\n\nexport const useInitialCartFetch = () => {\n const dispatch = useAppDispatch();\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n useEffect(() => {\n if (\n hasActiveStoreSelection ||\n (appConfig.coopUserSettings.isOrdererMunicipal &&\n !appConfig.coopUserSettings.isShoppingForMunicipal)\n ) {\n dispatch(cartThunks.getCart());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n};\n\nconst REDIRECT_REASON_QUERY_KEY = 'redirectReason';\nexport const useRedirectReasonHandler = () => {\n const { search, pathname } = useLocation();\n const navigate = useNavigate();\n\n useEffect(() => {\n const queryString = new URLSearchParams(search);\n const redirectReason = queryString.get(REDIRECT_REASON_QUERY_KEY);\n let removeRedirectReasonQuery = true;\n if (!redirectReason) return;\n\n switch (redirectReason) {\n case 'accountRemoved': {\n ga4UserTracking.accountRemoved();\n break;\n }\n case 'loginSuccess': {\n ga4UserTracking.login(\n appConfig.coopUserSettings.isAuthenticatedWithBankId ? 'bankid' : 'email',\n 'done',\n );\n personalizationTracking.trackUserLogin();\n break;\n }\n case 'signup': {\n removeRedirectReasonQuery = false;\n ga4UserTracking.signup(\n appConfig.coopUserSettings.isMedmeraCustomer ? 'membership' : 'account',\n appConfig.coopUserSettings.isCompany ? 'business' : 'private',\n appConfig.coopUserSettings.isAuthenticatedWithBankId ? 'bankid' : 'email',\n );\n break;\n }\n case 'loginAndConnectMembership': {\n ga4UserTracking.connectMembership('success', 'login');\n break;\n }\n\n default: {\n // eslint-disable-next-line no-console\n console.error('Unknown redirect reason: ', redirectReason);\n return;\n }\n }\n\n if (removeRedirectReasonQuery) {\n queryString.delete(REDIRECT_REASON_QUERY_KEY);\n }\n\n navigate(\n {\n pathname,\n search: queryString.toString(),\n },\n { replace: true },\n );\n }, [navigate, search, pathname]);\n};\n","import { OverlayLoader } from '@coop/components';\nimport { lazy, Suspense } from 'react';\n\nimport { useCncFlyInState } from '../../hooks/useCncFlyInState';\nimport { FlyIn } from '../atoms/Modal';\n\nconst CncStepSwitcher = lazy(() => import('../../../cnc/components/CncStepSwitcher'));\n\nconst CncFlyIn = () => {\n const { isOpen, close, afterClose } = useCncFlyInState();\n\n return (\n <FlyIn isOpen={isOpen} close={close} afterClose={afterClose} additionalClasses=\"u-textLeft\">\n <Suspense fallback={<OverlayLoader isLoading />}>\n <CncStepSwitcher />\n </Suspense>\n </FlyIn>\n );\n};\n\nexport default CncFlyIn;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n/* eslint-disable no-console */\nimport { appInsights } from '../../../appInsights';\nimport { ensureLeadingSlash } from '../utils/urlUtils';\n\nconst sendPageViewToApplicationInisghts = (pathname: string) => {\n appInsights.trackPageView({ uri: pathname });\n console.logNotProd('PageView sent to AI:', ensureLeadingSlash(pathname));\n};\n\nconst pathnamesAlreadySent: string[] = [];\n\nexport const usePageConsumptionTracking = (when: boolean = true) => {\n const location = useLocation();\n\n useEffect(() => {\n if (when && !pathnamesAlreadySent.includes(location.pathname)) {\n sendPageViewToApplicationInisghts(location.pathname);\n pathnamesAlreadySent.push(location.pathname);\n }\n }, [when, location.pathname]);\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"OuterContainer\":\"oC4dcuv8\",\"CloseButtoDiv\":\"nXVjTT4W\",\"Container\":\"TFNsuUh4\",\"Headline\":\"y317uNCx\",\"InnerContent\":\"D4PEUbcq\",\"CheckboxDiv\":\"J3M5QW9b\",\"Checkbox\":\"cMfsEvhD\",\"ConditionText\":\"CyZHE2gc\",\"ButtonContainer\":\"lb_h_hoy\",\"ReadMore\":\"Z6z372OE\",\"OuterContainerIsMobile\":\"fYt4JvtI\",\"ScrollableContent\":\"IHwR4ADe\"};","import { Button, Checkbox, ChipIconButton, Modal, ModalHeader } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport {\n IDS_REDIRECTREASON_QUERY,\n IDS_REDIRECTREASON_QUERYVALUE_SIGNUP,\n} from '../../../../utility/consts';\nimport { Helpers } from '../../../../utility/helpers';\nimport Image from '../../../common/components/atoms/Image';\nimport { useIsMobile } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport useModal from '../../../common/hooks/useModal';\nimport {\n useHasUserAKimCustomerId,\n useIsUserAuthenticated,\n} from '../../../common/hooks/useUserProfile';\nimport persistance from '../../../common/persistance/persistance';\nimport { FullOverlayType } from '../../../common/store/structureDefinitions/modalState';\nimport { ga4EmailSubscriptionEvents } from '../../../common/tracking/ga4/emailSubscription';\nimport { useSubscribeConsent } from '../../../consent/components/hooks/useSubscribeConsent';\nimport useConsentQuery from '../../../myCoop/consentSubscriptions/hooks/useConsentQuery';\nimport { useMyCoopSettingsPageQuery } from '../../../myCoop/hooks/useMyCoopSettingsPageQuery';\nimport {\n MEMBER_CONSENT_NEWSLETTERS_EMAIL,\n MEMBER_CONSENT_NEWSLETTERS_SMS,\n MEMBER_CONSENT_QUERY,\n} from '../../consts';\nimport { useKimCustomerDataQuery } from '../../hooks/useKimCustomerDataQuery';\nimport memberUtils from '../../member.utils';\nimport styles from './Consent.module.less';\n\nconst Consent: React.FC = () => {\n const [isDisbled, setIsDisbled] = React.useState(true);\n\n const { isOpen, close, open } = useModal(FullOverlayType.ConsentBox);\n\n const isLoggedIn = useIsUserAuthenticated();\n const hasKimCustomerId = useHasUserAKimCustomerId();\n const isMobile = useIsMobile();\n\n const { enableConsentSms } = appConfig.coopSettings.featureFlags;\n const { consentPhonePageUrl } = appConfig.coopSettings;\n\n const hasRedirectQuery = Helpers.getParameterByName(IDS_REDIRECTREASON_QUERY);\n const hasMemberConsentQuery = Helpers.getParameterByName(MEMBER_CONSENT_QUERY);\n const shouldShowConsent =\n (hasRedirectQuery === IDS_REDIRECTREASON_QUERYVALUE_SIGNUP || !!hasMemberConsentQuery) &&\n isLoggedIn;\n\n const hasQuery = Helpers.getParameterByName(IDS_REDIRECTREASON_QUERY);\n\n const { data: kimCustomerData } = useKimCustomerDataQuery(hasKimCustomerId);\n const { data: consentSubscriptions, isLoading: isLoadingSubscriptions } = useConsentQuery(\n hasQuery === 'signup' && isLoggedIn,\n );\n\n const kimPhoneNumberVerified = memberUtils.kimPhoneNumberVerified(kimCustomerData);\n\n const subscribeNowMutation = useSubscribeConsent();\n\n React.useEffect(() => {\n if (subscribeNowMutation.isSuccess) {\n // if phonenumber is not verified (or missing), go to phone consent\n if (enableConsentSms && kimCustomerData && !kimPhoneNumberVerified) {\n window.location.href = consentPhonePageUrl;\n return;\n }\n\n close();\n }\n }, [\n close,\n consentPhonePageUrl,\n enableConsentSms,\n kimCustomerData,\n kimPhoneNumberVerified,\n subscribeNowMutation.isSuccess,\n ]);\n\n const { data: settingsTexts } = useMyCoopSettingsPageQuery();\n\n useEffect(() => {\n if (shouldShowConsent && !isLoadingSubscriptions) {\n const allNewsletters = MEMBER_CONSENT_NEWSLETTERS_EMAIL;\n\n // Check if user has ANY consent, then dont show this modal.\n const hasConsent = consentSubscriptions?.some(\n (item) => allNewsletters.includes(item.id) && item.accepted,\n );\n\n if (!hasConsent) {\n persistance.consentShownSession.add();\n open();\n }\n }\n }, [consentSubscriptions, isLoadingSubscriptions, open, shouldShowConsent]);\n\n const handleCheckedChanged = (checked: boolean) => {\n setIsDisbled(!checked);\n };\n const approveClicked = () => {\n const allConsentsToTurnOn = MEMBER_CONSENT_NEWSLETTERS_EMAIL;\n\n // if phonenumber is verified, add sms consent too\n if (enableConsentSms && kimPhoneNumberVerified) {\n allConsentsToTurnOn.push(MEMBER_CONSENT_NEWSLETTERS_SMS);\n }\n\n subscribeNowMutation.mutate(allConsentsToTurnOn);\n };\n\n const skippedClicked = () => {\n ga4EmailSubscriptionEvents.skip.sendEmailSubscriptionInteraction();\n close();\n };\n const onClose = () => {\n ga4EmailSubscriptionEvents.close.sendEmailSubscriptionInteraction();\n close();\n };\n\n return (\n <Modal\n isOpen={isOpen}\n close={onClose}\n additionalClasses={classNames(\n styles.OuterContainer,\n isMobile ? styles.OuterContainerIsMobile : '',\n )}\n >\n <div className={styles.CloseButtoDiv}>\n <ChipIconButton\n theme=\"whiteGreen\"\n onClick={onClose}\n size={32}\n icon={CloseIcon}\n label=\"Stäng\"\n className={styles.CloseButton}\n />\n </div>\n <div className={styles.Container}>\n <ModalHeader className={styles.Headline}>\n Missa inget av det alldeles särskilt extra\n </ModalHeader>\n <div className={styles.InnerContent}>\n <Image src=\"/Assets/Icons/paperplane.svg\" height=\"114\" width=\"136\" alt=\"\" />\n <div className={styles.CheckboxDiv}>\n <Checkbox\n indicatorVerticalPosition=\"top\"\n className={styles.Checkbox}\n aria-label={settingsTexts?.consentCheckboxText}\n id=\"jatack\"\n onCheckedChange={handleCheckedChanged}\n label={\n settingsTexts?.consentCheckboxText ??\n 'Ja tack! Jag vill ha goda kampanjer och personliga erbjudanden frÃ¥n Coop, X:-tra och samarbetspartners.'\n }\n />\n {settingsTexts && (\n <div className={styles.ConditionText}>\n <p>\n Och du! Självklart kan du när som helst Ã¥terkalla ditt samtycke\n eller ändra inställningar för utskick.\n </p>\n <p>\n {settingsTexts.personalDataLink.url && (\n <>\n Läs gärna{' '}\n <a\n href={settingsTexts.personalDataLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n integritetspolicyn\n </a>{' '}\n för att se hur Coop hanterar personuppgifter.\n </>\n )}\n </p>\n </div>\n )}\n </div>\n <div className={styles.ButtonContainer}>\n <Button\n theme=\"primary\"\n onClick={approveClicked}\n fullWidth\n disabled={isDisbled}\n >\n Godkänn\n </Button>\n <Button theme=\"primaryOutline\" onClick={skippedClicked} fullWidth>\n Nej tack\n </Button>\n </div>\n {settingsTexts?.aboutCoopLink?.url &&\n settingsTexts?.aboutCoopAssociationsLink?.url && (\n <div className={styles.ReadMore}>\n <p>\n Vilka är{' '}\n <a\n href={settingsTexts.aboutCoopLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"Vilka är Coop\"\n >\n Coop\n </a>{' '}\n och{' '}\n <a\n href={settingsTexts.aboutCoopAssociationsLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"Vilka är Konsumentföreningarna\"\n >\n Konsumentföreningarna\n </a>\n ?\n </p>\n </div>\n )}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default Consent;\n","import { Button, Checkbox, ChipIconButton, Modal, ModalHeader } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport { useMutation } from '@tanstack/react-query';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport {\n IDS_REDIRECTREASON_QUERY,\n IDS_REDIRECTREASON_QUERYVALUE_SIGNUP,\n} from '../../../../utility/consts';\nimport { Helpers } from '../../../../utility/helpers';\nimport Image from '../../../common/components/atoms/Image';\nimport { useIsMobile } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { consentAdobeSubscriptionFlow } from '../../../common/flow/consentAdobeSubscriptionFlow';\nimport useModal from '../../../common/hooks/useModal';\nimport { useIsUserAuthenticated } from '../../../common/hooks/useUserProfile';\nimport persistance from '../../../common/persistance/persistance';\nimport { FullOverlayType } from '../../../common/store/structureDefinitions/modalState';\nimport { ga4EmailSubscriptionEvents } from '../../../common/tracking/ga4/emailSubscription';\nimport useEmailSubscriptionQuery from '../../../myCoop/emailSubscriptions/hooks/useEmailSubscriptionQuery';\nimport { useMyCoopSettingsPageQuery } from '../../../myCoop/hooks/useMyCoopSettingsPageQuery';\nimport { ADOBE_MEMBER_CONSENT_NEWSLETTERS_EMAIL, MEMBER_CONSENT_QUERY } from '../../consts';\nimport styles from './Consent.module.less';\n\nconst ConsentAdobe: React.FC = () => {\n const [isDisbled, setIsDisbled] = React.useState(true);\n\n const { isOpen, close, open } = useModal(FullOverlayType.ConsentBox);\n\n const isLoggedIn = useIsUserAuthenticated();\n const isMobile = useIsMobile();\n\n const hasRedirectQuery = Helpers.getParameterByName(IDS_REDIRECTREASON_QUERY);\n const hasMemberConsentQuery = Helpers.getParameterByName(MEMBER_CONSENT_QUERY);\n const shouldShowConsent =\n (hasRedirectQuery === IDS_REDIRECTREASON_QUERYVALUE_SIGNUP || !!hasMemberConsentQuery) &&\n isLoggedIn;\n\n const hasQuery = Helpers.getParameterByName(IDS_REDIRECTREASON_QUERY);\n\n const { data: emailSubscriptions, isLoading: isLoadingSubscriptions } =\n useEmailSubscriptionQuery(false, hasQuery === 'signup' && isLoggedIn);\n\n const subscribeNowMutation = useMutation({\n mutationFn: (service: string | Array<string>) => {\n return consentAdobeSubscriptionFlow.subscribe(\n Array.isArray(service) ? service : [service],\n false,\n );\n },\n onSuccess: () => {\n ga4EmailSubscriptionEvents.confirm.sendEmailSubscriptionInteraction();\n close();\n },\n });\n\n const { data: settingsTexts } = useMyCoopSettingsPageQuery();\n\n // Only run once (or if query changes)\n useEffect(() => {\n if (shouldShowConsent && !isLoadingSubscriptions) {\n const allNewsletters = ADOBE_MEMBER_CONSENT_NEWSLETTERS_EMAIL;\n\n // here check for consent in Adobe. If user has ANY consent, then dont show this modal\n const hasConsent = emailSubscriptions?.services?.some((item) =>\n allNewsletters.includes(item.name),\n );\n\n if (!hasConsent) {\n persistance.consentShownSession.add();\n open();\n }\n }\n }, [emailSubscriptions, isLoadingSubscriptions, open, shouldShowConsent]);\n\n const handleCheckedChanged = (checked: boolean) => {\n setIsDisbled(!checked);\n };\n const approveClicked = () => {\n const allNewsletters = ADOBE_MEMBER_CONSENT_NEWSLETTERS_EMAIL;\n\n // add all emails on the consent list\n subscribeNowMutation.mutate(allNewsletters);\n };\n\n const skippedClicked = () => {\n ga4EmailSubscriptionEvents.skip.sendEmailSubscriptionInteraction();\n close();\n };\n const onClose = () => {\n ga4EmailSubscriptionEvents.close.sendEmailSubscriptionInteraction();\n close();\n };\n\n return (\n <Modal\n isOpen={isOpen}\n close={onClose}\n additionalClasses={classNames(\n styles.OuterContainer,\n isMobile ? styles.OuterContainerIsMobile : '',\n )}\n >\n <div className={styles.CloseButtoDiv}>\n <ChipIconButton\n theme=\"whiteGreen\"\n onClick={onClose}\n size={32}\n icon={CloseIcon}\n label=\"Stäng\"\n className={styles.CloseButton}\n />\n </div>\n <div className={styles.Container}>\n <ModalHeader className={styles.Headline}>\n Missa inget av det alldeles särskilt extra\n </ModalHeader>\n <div className={styles.InnerContent}>\n <Image src=\"/Assets/Icons/paperplane.svg\" height=\"114\" width=\"136\" alt=\"\" />\n <div className={styles.CheckboxDiv}>\n <Checkbox\n indicatorVerticalPosition=\"top\"\n className={styles.Checkbox}\n aria-label={settingsTexts?.consentCheckboxText}\n id=\"jatack\"\n onCheckedChange={handleCheckedChanged}\n label={\n settingsTexts?.consentCheckboxText ??\n 'Ja tack! Jag vill ha goda kampanjer och personliga erbjudanden frÃ¥n Coop, X:-tra och samarbetspartners.'\n }\n />\n {settingsTexts && (\n <div className={styles.ConditionText}>\n <p>\n Och du! Självklart kan du när som helst Ã¥terkalla ditt samtycke\n eller ändra inställningar för utskick.\n </p>\n <p>\n {settingsTexts.personalDataLink.url && (\n <>\n Läs gärna{' '}\n <a\n href={settingsTexts.personalDataLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n integritetspolicyn\n </a>{' '}\n för att se hur Coop hanterar personuppgifter.\n </>\n )}\n </p>\n </div>\n )}\n </div>\n <div className={styles.ButtonContainer}>\n <Button\n theme=\"primary\"\n onClick={approveClicked}\n fullWidth\n disabled={isDisbled}\n >\n Godkänn\n </Button>\n <Button theme=\"primaryOutline\" onClick={skippedClicked} fullWidth>\n Nej tack\n </Button>\n </div>\n {settingsTexts?.aboutCoopLink?.url &&\n settingsTexts?.aboutCoopAssociationsLink?.url && (\n <div className={styles.ReadMore}>\n <p>\n Vilka är{' '}\n <a\n href={settingsTexts.aboutCoopLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"Vilka är Coop\"\n >\n Coop\n </a>{' '}\n och{' '}\n <a\n href={settingsTexts.aboutCoopAssociationsLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"Vilka är Konsumentföreningarna\"\n >\n Konsumentföreningarna\n </a>\n ?\n </p>\n </div>\n )}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default ConsentAdobe;\n","import { appConfig } from '../../../../appConfig';\nimport Consent from './Consent';\nimport ConsentAdobe from './ConsentAdobe';\n\nconst ConsentSwitch: React.FC = () => {\n const { enableConsentKimApi, enableConsentPage } = appConfig.coopSettings.featureFlags;\n\n if (enableConsentPage) {\n return null;\n }\n\n if (enableConsentKimApi) {\n return <Consent />;\n }\n\n return <ConsentAdobe />;\n};\n\nexport default ConsentSwitch;\n","/* eslint-disable no-param-reassign */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable prefer-rest-params */\n/* eslint-disable no-var */\n\n// docs: https://github.com/upscopeio/js-api\n\nimport { GdprCookiePurposes, hasAcceptedGdprPurpose } from './gdpr';\n\n/**\n * Download, initialize Upscope and create session to keep downloading the script on further pages when user navigates on coop.se during the session\n */\nexport const initUpscope = () => {\n if (hasAcceptedGdprPurpose(GdprCookiePurposes.Functional)) {\n // @ts-ignore\n (function (w, u, d) {\n var i = function () {\n // @ts-ignore\n i.c(arguments);\n };\n // @ts-ignore\n i.q = [];\n // @ts-ignore\n i.c = function (args: any) {\n // @ts-ignore\n i.q.push(args);\n };\n const l = function () {\n const s = d.createElement('script');\n s.type = 'text/javascript';\n s.async = true;\n s.src = 'https://code.upscope.io/qPrDRknSJ5.js';\n const x = d.getElementsByTagName('script')[0];\n x.parentNode?.insertBefore(s, x);\n };\n if (typeof u !== 'function') {\n w.Upscope = i;\n l();\n }\n })(window, window.Upscope, document);\n window.Upscope('init');\n window.sessionStorage.setItem('coop_allowupscope', 'true');\n }\n};\n\nconst getLookupCode = (cb: (lookupCode: string) => void) => {\n if (!window.Upscope) {\n initUpscope();\n }\n window.Upscope('getLookupCode', function (code: string) {\n cb(code);\n });\n};\n\nexport default {\n getLookupCode,\n};\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgShield = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.6401 2.067C11.8717 1.97767 12.1283 1.97767 12.3599 2.067L19.3599 4.767C19.7456 4.91578 20 5.28658 20 5.7V12C20 15.1348 17.982 17.6365 16.169 19.2683C15.2435 20.1012 14.3224 20.7521 13.6345 21.1943C13.2895 21.4161 13.0006 21.587 12.7956 21.7038C12.693 21.7622 12.6112 21.8071 12.5538 21.8382C12.525 21.8537 12.5023 21.8657 12.4861 21.8743L12.4667 21.8844L12.4608 21.8875L12.4587 21.8886C12.4587 21.8886 12.4573 21.8893 12 21C11.5427 21.8893 11.542 21.889 11.542 21.889L11.5392 21.8875L11.5333 21.8844L11.5139 21.8743C11.4977 21.8657 11.475 21.8537 11.4462 21.8382C11.3888 21.8071 11.307 21.7622 11.2044 21.7038C10.9994 21.587 10.7105 21.4161 10.3655 21.1943C9.67757 20.7521 8.75654 20.1012 7.83104 19.2683C6.01795 17.6365 4 15.1348 4 12V5.7C4 5.28658 4.2544 4.91578 4.64013 4.767L11.6401 2.067ZM12 21L11.542 21.889C11.8291 22.0366 12.1703 22.0369 12.4573 21.8893L12 21ZM12 19.8532C12.154 19.7623 12.3411 19.6481 12.553 19.5119C13.1776 19.1104 14.0065 18.5238 14.831 17.7817C16.518 16.2635 18 14.2652 18 12V6.3861L12 4.07181L6 6.3861V12C6 14.2652 7.48205 16.2635 9.16896 17.7817C9.99346 18.5238 10.8224 19.1104 11.447 19.5119C11.6589 19.6481 11.846 19.7623 12 19.8532Z\"\n })));\n};\nexport default SvgShield;","import { Button, ConfirmInfo } from '@coop/components';\nimport { useState } from 'react';\n\nimport upscopeUtils from '../../../utility/upscopeUtils';\n\nconst UpscopeTriggerButton = () => {\n const [show, setShow] = useState(false);\n const [upscopeCode, setUpscopeCode] = useState('');\n\n const onClick = () => {\n upscopeUtils.getLookupCode((code) => {\n setUpscopeCode(code);\n setShow(true);\n });\n };\n return (\n <>\n <Button type=\"button\" onClick={onClick} theme=\"light\">\n Skärmdelning via Upscope\n </Button>\n\n <ConfirmInfo\n show={show}\n heading=\"Skärmdelning med kundtjänst\"\n message={`Vänligen ange kod : ${upscopeCode}`}\n close={() => {\n setShow(false);\n }}\n />\n </>\n );\n};\n\nexport default UpscopeTriggerButton;\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgInstagrammono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Brand=instagram, monochrome=True\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M11.9956 1.99829C9.27971 1.99829 8.93887 2.01016 7.87219 2.05871C6.8076 2.10746 6.08092 2.276 5.44508 2.5233C4.78737 2.77871 4.22944 3.12038 3.67361 3.67641C3.11736 4.23226 2.77568 4.79017 2.51943 5.44767C2.2715 6.08371 2.10275 6.81058 2.05484 7.87475C2.00713 8.94141 1.99463 9.28246 1.99463 11.9983C1.99463 14.7141 2.00672 15.0539 2.05504 16.1206C2.10401 17.1852 2.27255 17.9118 2.51963 18.5477C2.77526 19.2054 3.11693 19.7633 3.67298 20.3191C4.22862 20.8754 4.78653 21.2179 5.44383 21.4733C6.08008 21.7206 6.80698 21.8891 7.87135 21.9379C8.93804 21.9864 9.27866 21.9983 11.9943 21.9983C14.7104 21.9983 15.0502 21.9864 16.1169 21.9379C17.1815 21.8891 17.909 21.7206 18.5452 21.4733C19.2027 21.2179 19.7598 20.8754 20.3154 20.3191C20.8717 19.7633 21.2134 19.2054 21.4696 18.5479C21.7155 17.9118 21.8842 17.185 21.9342 16.1208C21.9821 15.0541 21.9946 14.7141 21.9946 11.9983C21.9946 9.28245 21.9821 8.94163 21.9342 7.87496C21.8842 6.81037 21.7155 6.08371 21.4696 5.44788C21.2134 4.79016 20.8717 4.23225 20.3154 3.67641C19.7592 3.12016 19.2029 2.7785 18.5446 2.52329C17.9071 2.276 17.18 2.10746 16.1154 2.05871C15.0487 2.01016 14.7091 1.99829 11.9924 1.99829H11.9956ZM11.0985 3.80038C11.3647 3.79996 11.6618 3.80038 11.9956 3.80038C14.6656 3.80038 14.9821 3.80996 16.0364 3.85788C17.0115 3.90246 17.5406 4.06537 17.8931 4.20225C18.3598 4.3835 18.6925 4.60017 19.0423 4.95016C19.3923 5.30017 19.609 5.6335 19.7907 6.10016C19.9275 6.45224 20.0907 6.98141 20.135 7.95642C20.1829 9.01058 20.1934 9.32725 20.1934 11.996C20.1934 14.6647 20.1829 14.9814 20.135 16.0356C20.0904 17.0106 19.9275 17.5398 19.7907 17.8918C19.6094 18.3585 19.3923 18.6908 19.0423 19.0406C18.6923 19.3906 18.36 19.6072 17.8931 19.7885C17.541 19.926 17.0115 20.0885 16.0364 20.1331C14.9823 20.181 14.6656 20.1914 11.9956 20.1914C9.32533 20.1914 9.00887 20.181 7.95469 20.1331C6.97969 20.0881 6.45052 19.9252 6.0978 19.7883C5.63112 19.607 5.29778 19.3904 4.94779 19.0404C4.59778 18.6904 4.38112 18.3579 4.19944 17.891C4.06256 17.5389 3.89944 17.0097 3.85507 16.0348C3.80715 14.9806 3.79756 14.6639 3.79756 11.9935C3.79756 9.32309 3.80715 9.00808 3.85507 7.95392C3.89965 6.97891 4.06256 6.44975 4.19944 6.09725C4.38069 5.63058 4.59778 5.29725 4.94779 4.94725C5.29778 4.59725 5.63112 4.38059 6.0978 4.19892C6.4503 4.06141 6.97969 3.89892 7.95469 3.85412C8.8772 3.81245 9.2347 3.79996 11.0985 3.79787L11.0985 3.80038ZM17.3335 5.46079C16.671 5.46079 16.1335 5.99767 16.1335 6.66037C16.1335 7.32288 16.671 7.86038 17.3335 7.86038C17.996 7.86038 18.5336 7.32288 18.5336 6.66037C18.5336 5.99787 17.996 5.46038 17.3335 5.46038L17.3335 5.46079ZM11.9956 6.86287C9.15949 6.86287 6.8601 9.16225 6.8601 11.9983C6.8601 14.8343 9.15949 17.1327 11.9956 17.1327C14.8316 17.1327 17.1302 14.8343 17.1302 11.9983C17.1302 9.16225 14.8314 6.86287 11.9954 6.86287H11.9956ZM11.9956 8.66496C13.8364 8.66496 15.3289 10.1573 15.3289 11.9983C15.3289 13.8391 13.8364 15.3316 11.9956 15.3316C10.1545 15.3316 8.6622 13.8391 8.6622 11.9983C8.6622 10.1573 10.1545 8.66496 11.9956 8.66496Z\"\n }))));\n};\nexport default SvgInstagrammono;","/* eslint-disable no-underscore-dangle */\nimport { Button, Icon } from '@coop/components';\nimport { ShieldIcon } from '@coop/icons';\n\nconst ConsentButton = () => {\n const showPopup = () => {\n if (window && window.__cmp) {\n window.__cmp('showScreen');\n }\n };\n\n return (\n <Button onClick={showPopup} rightSlot={<Icon icon={ShieldIcon} />} theme=\"light\">\n Inställningar för cookies\n </Button>\n );\n};\n\nexport default ConsentButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"Footer\":\"yHaPZPPc\",\"h2\":\"SnJF1goK\",\"FooterPrimaryContainer\":\"Xvldcimo\",\"FooterColumn\":\"hIGrQQxI\",\"FooterHeading\":\"prOM14vt\",\"FooterItem\":\"PT9oOHuf\",\"FooterLogo\":\"N2SV1uVF\",\"FooterLogoImage\":\"oCV6OCDX\",\"FooterContact\":\"vtsiK_Yy\",\"FooterContactLink\":\"H19vt5Tv\",\"FooterShopOnline\":\"gNojaNHA\",\"FooterShopOnlineItem\":\"do8RW5pw\",\"FooterDownloadApp\":\"LXyRKfSH\",\"QRCode\":\"Mxni5C0c\",\"ScanQR\":\"IPbAioTp\",\"DownloadLinks\":\"MRWcxUzo\",\"FooterSocial\":\"JrKmCAXD\",\"FooterSocialItem\":\"lFJETf7_\",\"FooterSocialIcon\":\"VCGBFncs\",\"FooterList\":\"gkielae3\",\"FooterAccordion\":\"hAnCTaUW\",\"FooterAccordionItem\":\"QeuBeGC7\",\"Divider\":\"BqNnredc\",\"FooterAccordionTrigger\":\"wXdBvkSD\",\"FooterAccordionContent\":\"yUI5Qi0p\"};","import styles from './Footer.module.less';\n\nconst FooterColumn = ({ column }: { column: FooterColumn }) => {\n return (\n <div className={styles.FooterColumn}>\n <ul className={styles.FooterList}>\n <li className={styles.FooterHeading}>\n <h2>\n <a href={column.headerLink?.url}>{column.header}</a>\n </h2>\n </li>\n {column.links\n .filter((_link, index) => index > 0)\n .map((link) => (\n <li className={styles.FooterItem} key={link.contentId}>\n <a href={link.url}>{link.name}</a>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default FooterColumn;\n","import { CoopSwiperBreakpoints } from '../../../../utility/coopSwiperBreakpoints';\nimport ItemGrid from '../../../ecommerce/components/ItemGrid/ItemGrid';\nimport { useBreakpointsSidebar } from '../../../ecommerce/hooks/useBreakpoints';\nimport FooterColumn from './FooterColumn';\n\nconst FooterColumns = (props: Pick<FrontendFooter, 'columns'>) => {\n const { cellsInRow } = useBreakpointsSidebar(CoopSwiperBreakpoints.AREA_FOOTER_GRID);\n\n return (\n <ItemGrid\n gridClasses=\"Grid--gutterH Grid--gutterVsm u-lg-flexJustifyCenter\"\n cellsInRow={cellsInRow}\n items={props.columns}\n renderItem={(column) => <FooterColumn column={column} />}\n itemUniqueKey={(column, index) => `${column.headerLink?.contentId}_${index}`}\n />\n );\n};\n\nexport default FooterColumns;\n","import { Icon } from '@coop/components';\nimport { CoopLogoIcon } from '@coop/icons';\n\nimport styles from './Footer.module.less';\n\nconst FooterContact = (props: Pick<FrontendFooter, 'bottomLinks'>) => {\n return (\n <>\n <div className={styles.FooterLogo}>\n <a href=\"/\" aria-label=\"Till startsidan\">\n <Icon\n icon={CoopLogoIcon}\n height={26}\n className={styles.FooterLogoImage}\n aria-hidden\n />\n </a>\n </div>\n\n <p className={styles.FooterContact}>\n <span>\n Coop Sverige{' '}\n <a\n className={styles.FooterContactLink}\n href=\"https://www.google.se/maps/place/Coop+Huvudkontor/59.3598297,17.9783251,15z/data=!4m5!3m4!1s0x0:0x824f828e19b3770c!8m2!3d59.3598297!4d17.9783251\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 171 88 Solna\n </a>\n , Telefon: 010-742 00 00, \n {/* dont break word on the organisation number */}\n <span style={{ display: 'inline-block' }}>Org.nr: 556710-5480</span>\n </span>\n {props.bottomLinks.map((bottomLink) => (\n <span>\n <a className={styles.FooterContactLink} href={bottomLink.url}>\n {bottomLink.name}\n </a>\n </span>\n ))}\n </p>\n </>\n );\n};\n\nexport default FooterContact;\n","import classNames from 'classnames';\nimport { useEffect, useState } from 'react';\n\nimport {\n gdprAddEventListener,\n GdprCookiePurposes,\n gdprRemoveEventListener,\n hasAcceptedGdprPurpose,\n} from '../../../../utility/gdpr';\nimport useHtmlScriptParser from '../../../common/hooks/useHtmlScriptParser';\nimport styles from './Footer.module.less';\n\nconst FooterLogos = (props: Pick<FrontendFooter, 'logos'>) => {\n const [consentPurposeAccepted, setConsentPurposeAccepted] = useState(false);\n\n const scriptsContainerRef = useHtmlScriptParser(\n '<script type=\"text/plain\" src=\"https://cert.tryggehandel.net/js/script.js?id=a45e1529-7d52-45a5-8e2f-c79cddb2f92b\" />',\n consentPurposeAccepted,\n );\n\n useEffect(() => {\n const checkPurpose = () => {\n setConsentPurposeAccepted(hasAcceptedGdprPurpose(GdprCookiePurposes.Marketing));\n };\n\n gdprAddEventListener('consent', checkPurpose);\n\n return () => gdprRemoveEventListener('consent', checkPurpose);\n }, []);\n\n return (\n <div className=\"u-textCenter\">\n <h2 className={styles.h2}>Handla pÃ¥ coop.se</h2>\n <div className={styles.FooterShopOnline}>\n {props.logos.map((logo) => (\n // eslint-disable-next-line react/no-array-index-key\n <div\n className={styles.FooterShopOnlineItem}\n key={`${logo.url}_${logo.imageAltText}_${logo.imageHeight}_${logo.imageSrc}`}\n >\n {logo.url ? (\n <a href={logo.url} target=\"_blank\" rel=\"noreferrer\">\n <img\n height={logo.imageHeight}\n alt={logo.imageAltText}\n src={logo.imageSrc}\n loading=\"lazy\"\n />\n </a>\n ) : (\n <img\n height={logo.imageHeight}\n alt={logo.imageAltText}\n src={logo.imageSrc}\n loading=\"lazy\"\n />\n )}\n </div>\n ))}\n\n <div\n className={classNames(\n styles.FooterShopOnlineItem,\n 'teh-certificate', // this class is important since Trygghandel script is looking for it\n )}\n />\n <div style={{ display: 'none' }} ref={scriptsContainerRef} />\n </div>\n </div>\n );\n};\n\nexport default FooterLogos;\n","import { Accordion } from '@coop/components';\nimport classNames from 'classnames';\n\nimport styles from './Footer.module.less';\nimport FooterColumns from './FooterColumns';\n\nconst FooterMobile = (props: Pick<FrontendFooter, 'columns'>) => {\n if (window.isPrerenderCrawler) {\n <FooterColumns columns={props.columns} />;\n }\n\n return (\n <Accordion.Root type=\"single\" collapsible className={styles.FooterAccordion}>\n {props.columns.map((column, index) => (\n <Accordion.Item\n key={column.headerLink?.contentId}\n className={classNames(styles.FooterAccordionItem, styles.Divider)}\n value={column.headerLink?.contentId.toString() || index.toString()}\n >\n <Accordion.Header asChild>\n <h2 className={styles.FooterAccordionTrigger}>\n <Accordion.Trigger className={styles.FooterAccordionTrigger}>\n {column.header}\n </Accordion.Trigger>\n </h2>\n </Accordion.Header>\n <Accordion.Content className={styles.FooterAccordionContent}>\n <ul className={styles.FooterList}>\n {column.links.map((link) => (\n <li className={styles.FooterItem} key={link.contentId}>\n <a href={link.url}>{link.name}</a>\n </li>\n ))}\n </ul>\n </Accordion.Content>\n </Accordion.Item>\n ))}\n </Accordion.Root>\n );\n};\n\nexport default FooterMobile;\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgYoutubemono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Brand=youtube, monochrome=True\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"layer\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.385 3.184C7.984 2.939 16.011 2.938 19.615 3.184C23.516 3.451 23.971 5.815 24 12C23.971 18.196 23.512 20.55 19.615 20.816C16.011 21.062 7.985 21.061 4.385 20.816C0.484 20.549 0.029 18.185 0 12C0.029 5.804 0.488 3.45 4.385 3.184ZM9 16V8L17 11.993L9 16Z\"\n }))));\n};\nexport default SvgYoutubemono;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgLinkedinmono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Brand=linkedin, monochrome=True\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"layer\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.06032 20.5H7.28898V8.66156H4.06032V20.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.79126 5.39846C3.79126 6.4467 4.63502 7.29691 5.67465 7.29691C6.71535 7.29691 7.55804 6.4467 7.55804 5.39846C7.55804 4.35022 6.71428 3.5 5.67465 3.5C4.63502 3.5 3.79126 4.35022 3.79126 5.39846Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.975 20.5H20.2036V13.2258C20.2036 7.57242 14.1725 7.77798 12.6701 10.5611V8.66156H9.44142V20.5H12.6701V14.4689C12.6701 11.1186 16.975 10.8441 16.975 14.4689V20.5Z\"\n })))));\n};\nexport default SvgLinkedinmono;","import { Icon } from '@coop/components';\nimport {\n FacebookLogoMonoIcon,\n InstagramLogoMonoIcon,\n LinkedinLogoMonoIcon,\n XLogoMonoIcon,\n YoutubeLogoMonoIcon,\n} from '@coop/icons';\n\nimport styles from './Footer.module.less';\n\nconst FooterSocial = () => {\n const socialLinks = [\n {\n url: 'https://www.facebook.com/CoopSverige/',\n icon: FacebookLogoMonoIcon,\n label: 'Coop Sverige Facebook',\n },\n {\n url: 'https://x.com/coopsverige',\n icon: XLogoMonoIcon,\n label: 'Coop Sverige X',\n width: 16,\n height: 16,\n },\n {\n url: 'https://www.instagram.com/coopsverige/',\n icon: InstagramLogoMonoIcon,\n label: 'Coop Sverige Instagram',\n },\n {\n url: 'https://www.youtube.com/user/CoopSverige',\n icon: YoutubeLogoMonoIcon,\n label: 'Coop Sverige YouTube',\n },\n {\n url: 'https://www.linkedin.com/company/coopsverige',\n icon: LinkedinLogoMonoIcon,\n label: 'Coop Sverige LinkedIn',\n },\n ];\n\n return (\n <div className={styles.FooterSocial}>\n {socialLinks.map((link) => (\n <div key={link.label} className={styles.FooterSocialItem}>\n <a\n href={link.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={link.label}\n >\n <Icon\n icon={link.icon}\n width={link.width || 20}\n height={link.height || 20}\n className={styles.FooterSocialIcon}\n aria-hidden\n />\n </a>\n </div>\n ))}\n </div>\n );\n};\n\nexport default FooterSocial;\n","/* eslint-disable no-param-reassign */\nimport classNames from 'classnames';\n\nimport {\n useIsFromMedium,\n useIsMobile,\n} from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport UpscopeTriggerButton from '../UpscopeTriggerButton';\nimport ConsentButton from './ConsentButton';\nimport styles from './Footer.module.less';\nimport FooterColumns from './FooterColumns';\nimport FooterContact from './FooterContact';\nimport FooterLogos from './FooterLogos';\nimport FooterMobile from './FooterMobile';\nimport FooterSocial from './FooterSocial';\n\nconst BaseFooter = (props: React.PropsWithChildren<{ footer: FrontendFooter }>) => {\n const { footer } = props;\n\n const isMobile = useIsMobile();\n\n const isFromMedium = useIsFromMedium();\n const hideFooterMobile = useAppSelector((state) => state.ui.shared.hideFooterMobile);\n\n // moved from backend and styles, but strange logic to hide it only on last order/ saved carts etc and only on mobile but not in desktop? Since its on bottom dunno why user would care\n if (!isFromMedium && hideFooterMobile) {\n return null;\n }\n\n const validColumns = footer.columns.filter(\n (column) => !!column.header && !!column.headerLink?.url && column.links.length > 0,\n );\n\n return (\n <footer className={classNames(styles.Footer, 'u-noPrint')}>\n <div className={classNames('Main-container', !isMobile && 'Main-container--padding')}>\n <div className={styles.FooterPrimaryContainer}>\n {isMobile ? (\n <FooterMobile columns={validColumns} />\n ) : (\n <FooterColumns columns={validColumns} />\n )}\n <div className=\"u-flex u-flexJustifyCenter u-marginTlg u-marginBlg\">\n <ConsentButton />\n </div>\n <div className=\"u-lg-hidden u-marginBlg\">\n <div className=\"u-flex u-flexJustifyCenter\">\n <UpscopeTriggerButton />\n </div>\n </div>\n </div>\n\n <div className={styles.FooterPrimaryContainer}>\n <div className=\"u-flex u-flexDirectionColumn u-flexJustifySpaceAround u-flexGap16 u-md-flexDirectionRow\">\n <FooterLogos logos={footer.logos} />\n {props.children}\n </div>\n </div>\n <div className=\"Grid Grid--gutterV\">\n <div className=\"Grid-cell u-md-size2of3\">\n <FooterContact bottomLinks={footer.bottomLinks} />\n </div>\n <div className=\"Grid-cell u-md-size1of3\">\n <FooterSocial />\n </div>\n </div>\n </div>\n </footer>\n );\n};\n\nexport default BaseFooter;\n","import classNames from 'classnames';\n\nimport styles from './Footer.module.less';\n\nconst FooterMobileApps = (\n props: Pick<\n FrontendFooter,\n | 'downloadAppAndroidUrl'\n | 'downloadAppIOSUrl'\n | 'downloadAppQRImage'\n | 'downloadAppQRImageAltText'\n >,\n) => {\n return (\n <div className=\"u-textCenter u-flexShrinkNone\">\n <div className=\"u-textCenter\">\n <h2 className={styles.h2}>Ladda ner Coop-appen</h2>\n </div>\n <div className={styles.FooterDownloadApp}>\n <div className={classNames(styles.QRCode, 'u-textSmall')}>\n <div className={styles.ScanQR}>\n <img\n src={props.downloadAppQRImage?.url}\n alt={props.downloadAppQRImageAltText}\n width=\"75\"\n height=\"75\"\n />\n <br />\n <b>Scanna QR-koden för att ladda ner appen</b>\n </div>\n </div>\n <div className={styles.DownloadLinks}>\n <div>\n <a href={props.downloadAppIOSUrl}>\n <img\n src=\"/Assets/Images/DownloadApp/appstore.png\"\n height=\"35\"\n width=\"102\"\n alt=\"Hämta i App Store\"\n />\n </a>\n </div>\n <div>\n <a href={props.downloadAppAndroidUrl}>\n <img\n src=\"/Assets/Images/DownloadApp/googleplay.png\"\n height=\"35\"\n width=\"117\"\n alt=\"Ladda ned pÃ¥ Google Play\"\n />\n </a>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default FooterMobileApps;\n","/* eslint-disable no-param-reassign */\n\nimport { appConfig } from '../../../../appConfig';\nimport BaseFooter from './BaseFooter';\nimport FooterMobileApps from './FooterMobileApps';\n\nconst Footer = (props: { footer: FrontendFooter }) => {\n const { footer } = props;\n\n const IsShoppingForMunicipal = appConfig.coopUserSettings.isShoppingForMunicipal;\n\n if (IsShoppingForMunicipal) {\n return null;\n }\n\n return (\n <BaseFooter footer={props.footer}>\n {footer.footerShowDownloadApp && (\n <FooterMobileApps\n downloadAppAndroidUrl={footer.downloadAppAndroidUrl}\n downloadAppIOSUrl={footer.downloadAppIOSUrl}\n downloadAppQRImage={footer.downloadAppQRImage}\n downloadAppQRImageAltText={footer.downloadAppQRImageAltText}\n />\n )}\n </BaseFooter>\n );\n};\n\nexport default Footer;\n","import { Button, ChipButton, ConfirmInfo, Snackbar, TextInput } from '@coop/components';\nimport { useMutation } from '@tanstack/react-query';\nimport { addSeconds, intervalToDuration } from 'date-fns';\nimport { useEffect, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\n\nimport { appConfig } from '../../../../appConfig';\nimport { Helpers } from '../../../../utility/helpers';\nimport {\n cancelImpersonation,\n getCachedAuthToken,\n impersonateUser,\n} from '../../../common/api/auth/getAuthToken';\n\nconst ImpersonationNotice = () => {\n const [isOpen, setIsOpen] = useState(false);\n const signout = async () => {\n await cancelImpersonation();\n window.location.reload();\n };\n if (appConfig.coopUserSettings.allowImpersonate) {\n return <StartImpersonationBar />;\n }\n if (!appConfig.coopUserSettings.isImpersonating) {\n return null;\n }\n const identity = getCachedAuthToken();\n if (!identity?.impersonating) {\n return null;\n }\n // lets expire sooner to be safe\n const expireTime = addSeconds(new Date(identity.expires), -60);\n return (\n <>\n <Snackbar\n size={48}\n actionSlot={\n <ChipButton\n theme=\"greenCta\"\n size={32}\n onClick={() => setIsOpen((prev) => !prev)}\n >\n Info\n </ChipButton>\n }\n style={{\n marginBottom: 24,\n }}\n >\n {appConfig.coopUserSettings.profile?.email}\n </Snackbar>\n <ConfirmInfo\n show={isOpen}\n heading=\"Du imiterar en annan person.\"\n message={\n <div className=\"u-textCenter\">\n Du imiterar en person med id:\n <br /> {appConfig.coopUserSettings.userId}\n <div className=\"u-flex u-flexJustifySpaceBetween u-flexAlignCenter u-marginT \">\n <Button onClick={signout}>Avsluta</Button>\n <CountDown end={expireTime} />\n </div>\n </div>\n }\n close={() => setIsOpen(false)}\n />\n <ImpersonationExpiration expires={expireTime} signout={signout} />\n </>\n );\n};\n\nconst StartImpersonationBar = () => {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Snackbar\n size={48}\n actionSlot={\n <ChipButton\n theme=\"greenCta\"\n size={32}\n onClick={() => setIsOpen((prev) => !prev)}\n >\n Öppna\n </ChipButton>\n }\n style={{\n marginBottom: 24,\n }}\n >\n Logga in som kund\n </Snackbar>\n <ConfirmInfo\n show={isOpen}\n heading=\"Logga in som en användare\"\n message={<Impersonate />}\n close={() => setIsOpen(false)}\n />\n </>\n );\n};\n\nconst Impersonate = () => {\n const { handleSubmit, control, getValues } = useForm({\n mode: 'onSubmit',\n reValidateMode: 'onChange',\n defaultValues: {\n identifier: '',\n },\n });\n const onSubmit = () => {\n const formValues = getValues();\n const { identifier } = formValues;\n const isEmail = Helpers.validateEmail(identifier);\n impersonateMutation.mutate({\n userToImpersonate: identifier,\n userIdentifierType: isEmail ? 'Email' : 'Id',\n });\n };\n const impersonateMutation = useMutation({\n mutationFn: async (params: { userToImpersonate: string; userIdentifierType: string }) =>\n impersonateUser(params),\n onSuccess: () => {\n window.location.reload();\n },\n });\n\n return (\n <div>\n <p>Skriv in e-postadressen eller användarens id för att logga in som den personen.</p>\n <p>\n <strong>Obs! Allt som görs loggas!</strong>\n </p>\n <form\n className=\"u-flex u-flexDirectionColumn u-heightAll\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <Controller\n render={({ field, fieldState }) => (\n <TextInput\n label=\"Id / E-postadress\"\n isRequired\n necessityIndicator=\"none\"\n value={field.value}\n name={field.name}\n onChange={field.onChange}\n onBlur={field.onBlur}\n ref={field.ref}\n validationText={fieldState.error?.message}\n isInvalid={!!fieldState.error}\n />\n )}\n name=\"identifier\"\n rules={{\n required: true,\n }}\n control={control}\n />\n {impersonateMutation.isSuccess && (\n <div>Du imiterar nu {impersonateMutation.data.email}</div>\n )}\n\n {impersonateMutation.isError && <div>Ã…h, misslyckades imitera användaren.</div>}\n <Button\n type=\"submit\"\n disabled={impersonateMutation.isSuccess || impersonateMutation.isPending}\n >\n Logga in\n </Button>\n </form>\n </div>\n );\n};\n\nconst CountDown = (props: { end: Date }) => {\n const [time, setTime] = useState(new Date());\n const { hours, minutes, seconds } = intervalToDuration({\n start: time,\n end: props.end,\n });\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date());\n }, 1000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n const zeroPad = (num: number, places: number) => String(num).padStart(places, '0');\n return (\n <span>{`${zeroPad(hours || 0, 2)}:${zeroPad(minutes || 0, 2)}:${zeroPad(\n seconds || 0,\n 2,\n )}`}</span>\n );\n};\n\nconst ImpersonationExpiration = (props: { expires: Date; signout: () => void }) => {\n useEffect(() => {\n const timeout = setTimeout(props.signout, Number(props.expires) - Date.now());\n return () => {\n clearTimeout(timeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.expires]);\n\n return null;\n};\n\nexport default ImpersonationNotice;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport type { FC } from 'react';\nimport * as React from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport Portal from '../../../common/components/atoms/Portal';\nimport StickyBottom from '../../../common/components/atoms/StickyBottom';\nimport CncFlyIn from '../../../common/components/molecules/CncFlyIn';\nimport ComponentPortals from '../../../common/components/molecules/ComponentPortals';\nimport useCurrentStoreSync from '../../../common/hooks/useCurrentStoreSync';\nimport { usePageConsumptionTracking } from '../../../common/hooks/usePageConsumptionTracking';\nimport ConsentSwitch from '../../../member/components/Consent/ConsentSwitch';\nimport Footer from '../Footer/Footer';\nimport { HeaderAlertsPortal } from '../HeaderAlerts';\nimport ImpersonationNotice from '../ImpersonationNotice';\nimport { SkipLink, SkipLinkTarget } from '../SkipLink';\nimport { useInitialCartFetch, useRedirectReasonHandler } from './CommonLayout.hooks';\n\ninterface CommonLayoutProps {}\n\n/**\n * Contains common components and hooks that are common for all other layouts like EcommerceLayout, BaseLayout\n */\nconst CommonLayout: FC<React.PropsWithChildren<CommonLayoutProps>> = (props) => {\n useCurrentStoreSync();\n useInitialCartFetch();\n useRedirectReasonHandler();\n usePageConsumptionTracking();\n\n const footer = React.useMemo(\n () =>\n structuredClone(\n appConfig.coopSettings.footer,\n ) as RecursiveRemoveReadonly<FrontendFooter>,\n [],\n );\n\n return (\n <>\n <Portal domNodeSelector=\"#skipLinkToContentTarget\">\n <SkipLinkTarget id=\"mainContent\" />\n </Portal>\n <Portal domNodeSelector=\"#skipLinkToContent\">\n <SkipLink href=\"#mainContent\">Hoppa över meny</SkipLink>\n </Portal>\n\n <HeaderAlertsPortal />\n {props.children}\n <ConsentSwitch />\n <StickyBottom>\n <ImpersonationNotice />\n </StickyBottom>\n <CncFlyIn />\n\n <ComponentPortals cmpName=\"Footer\" render={() => <Footer footer={footer} />} />\n </>\n );\n};\n\nexport default CommonLayout;\n","import { useEpiEditButtonRepositioning } from './EpiQuickNavigatorButton.hooks';\n\nconst EpiQuickNavigatorButton = () => {\n const ref = useEpiEditButtonRepositioning();\n\n return <div ref={ref} style={{ position: 'absolute', bottom: 0, right: 0 }} />;\n};\n\nexport default EpiQuickNavigatorButton;\n","import { useLayoutEffect, useRef } from 'react';\n\nimport { useAppSelector } from '../../../../common/hooks/useThunkDispatch';\nimport { userProfileSelectors } from '../../../../common/selectors/userProfileSelectors';\n\nexport const useEpiEditButtonRepositioning = () => {\n const hasBeenRepositioned = useRef<boolean>(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const isEpiUser = useAppSelector(userProfileSelectors.isEpiUser);\n\n useLayoutEffect(() => {\n if (!isEpiUser || hasBeenRepositioned.current) return;\n\n const observer = new MutationObserver(() => {\n const element = document.querySelector('#epi-quickNavigator');\n if (element) {\n handleElementFound(element);\n observer.disconnect();\n }\n });\n\n const handleElementFound = (element: Element) => {\n const targetNode = containerRef.current;\n\n if (element && targetNode) {\n const clonedNode = element.cloneNode(true) as HTMLUListElement;\n\n clonedNode.style.position = 'static';\n targetNode.style.top = `var(--headerStickyBannerHeight)`;\n\n targetNode.appendChild(clonedNode);\n element.remove();\n hasBeenRepositioned.current = true;\n }\n };\n\n observer.observe(document, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n };\n }, [isEpiUser]);\n\n return containerRef;\n};\n","import { Search } from '@coop/components';\nimport type { FC } from 'react';\nimport { useEffect } from 'react';\n\nimport { useSearchOverlayGA4ActionTracking } from '../../../common/tracking/hooks/useSearchOverlayGA4Tracking';\nimport { useSearchStateContext } from '../../../search/contexts/searchStateContext';\nimport type { GlobalSearchResults } from '../../../search/models/models';\nimport { getFullSearchResultUrlWithOrder } from '../../../search/utils/searchResultUtils';\n\ninterface GlobalSearchBarProps {\n performFullSearch?: (newQuery: string, originalQuery?: string) => void;\n size: React.ComponentProps<typeof Search>['size'];\n}\n\nconst GlobalSearchBar: FC<React.PropsWithChildren<GlobalSearchBarProps>> = (props) => {\n const {\n result,\n query,\n isOpen,\n close,\n show,\n isLoading,\n clear,\n open,\n setQuery,\n expectedSearchResultType,\n searchFromPage,\n } = useSearchStateContext<GlobalSearchResults>();\n\n const { trackEnterAction } = useSearchOverlayGA4ActionTracking(\n query,\n result?.queryUsed,\n searchFromPage,\n isLoading,\n );\n\n const navigateToGlobalSearchResultsPage = () => {\n trackEnterAction();\n\n let realQuery = isLoading ? query : result?.queryUsed;\n if (!realQuery) {\n realQuery = '';\n }\n if (props.performFullSearch) {\n close();\n props.performFullSearch(realQuery, query);\n return;\n }\n\n const viewAllResultsUrl = getFullSearchResultUrlWithOrder(\n realQuery,\n query,\n expectedSearchResultType,\n ).path;\n\n window.location.href = viewAllResultsUrl;\n };\n\n useEffect(() => {\n if (show) {\n open();\n }\n }, [show, open]);\n\n return (\n <Search\n submitLabel=\"Sök pÃ¥ Coop\"\n inputText={query}\n setInputText={setQuery}\n size={props.size}\n hide={isOpen}\n inputPlaceholder=\"Sök recept, varor, butiker och artiklar\"\n description=\"Sökresultaten kommer att visas medan du skriver\"\n onEnterPress={navigateToGlobalSearchResultsPage}\n onEscapePress={clear}\n onReset={clear}\n aria-haspopup=\"dialog\"\n />\n );\n};\n\nexport default GlobalSearchBar;\n","import type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { SearchStateProvider } from '../../../search/contexts/searchStateContext';\nimport { globalSearchAbortable } from '../../../search/hooks/useGlobalSearchState';\nimport { SearchFromPageType } from '../../models/SearchFromPageType';\n\ninterface GlobalSearchStateProviderProps {\n initialQuery: string;\n searchFromPage: SearchFromPageType;\n}\n\nconst GlobalSearchContext: FC<React.PropsWithChildren<GlobalSearchStateProviderProps>> = ({\n searchFromPage,\n initialQuery,\n children,\n}) => {\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const globalSearchFunction = useCallback(\n async (_abortSignal: AbortSignal, _query: string) =>\n globalSearchAbortable(\n _query,\n currentProductionUnit,\n {\n articles: 4,\n products: 4,\n stores: 4,\n recipes: searchFromPage === SearchFromPageType.Recipes ? 10 : 5,\n pointshop: 6,\n },\n true,\n _abortSignal,\n ),\n [currentProductionUnit, searchFromPage],\n );\n\n return (\n <SearchStateProvider\n initialQuery={initialQuery}\n searchFunction={globalSearchFunction}\n searchFromPage={searchFromPage}\n minimumQueryLength={2}\n >\n {children}\n </SearchStateProvider>\n );\n};\n\nexport default GlobalSearchContext;\n","import type { FC } from 'react';\nimport * as React from 'react';\nimport { useRef } from 'react';\n\nimport DelayedA11yAnnouncer from '../../../common/components/A11yAnnouncer/DelayedA11yAnnouncer';\nimport { useSearchOverlayGA4ActionTracking } from '../../../common/tracking/hooks/useSearchOverlayGA4Tracking';\nimport { useSearchStateContext } from '../../../search/contexts/searchStateContext';\nimport type { GlobalSearchResults } from '../../../search/models/models';\nimport { getFullSearchResultUrlWithOrder } from '../../../search/utils/searchResultUtils';\nimport SearchOverlay from '../SearchOverlay';\n\nexport const GlobalSearchOverlayContent = React.lazy(\n () =>\n import('../../../search/components/GlobalSearchOverlayContent/GlobalSearchOverlayContent'),\n);\n\ninterface GlobalSearchOverlayProps {\n performFullSearch?: (newQuery: string, originalQuery?: string) => void;\n}\n\nconst GlobalSearchOverlay: FC<React.PropsWithChildren<GlobalSearchOverlayProps>> = (props) => {\n const {\n query,\n close,\n isLoading,\n result,\n searchFromPage,\n expectedSearchResultType,\n a11yResultAnnounceMessage,\n } = useSearchStateContext<GlobalSearchResults>();\n const searchRef = useRef<HTMLInputElement>(null);\n\n const {\n trackAbortAction,\n trackCloseClickAction,\n trackListObjectClick,\n trackEnterAction,\n trackSeeAllResultsClickAction,\n trackLabelClick,\n trackAddToCartClickAction,\n trackRemoveFromCartClickAction,\n } = useSearchOverlayGA4ActionTracking(query, result?.queryUsed, searchFromPage, isLoading);\n\n const handleOutsideClick = () => {\n trackAbortAction();\n };\n\n const handleClearClick = () => {\n trackCloseClickAction();\n };\n\n const handleAllResultsClick = () => {\n trackSeeAllResultsClickAction();\n };\n\n const handleItemClick = () => {\n trackListObjectClick(undefined, undefined, undefined); // in global search event we dont care about positioning or names of the items, its relevant only for ecommerce page\n };\n\n const handleOtherResultTypeClick = () => {\n trackLabelClick();\n };\n\n const handleLabelClick = () => {\n trackLabelClick();\n };\n\n const navigateToGlobalSearchResultsPage = () => {\n trackEnterAction();\n\n let realQuery = isLoading ? query : result?.queryUsed;\n if (!realQuery) {\n realQuery = '';\n }\n if (props.performFullSearch) {\n close();\n props.performFullSearch(realQuery, query);\n return;\n }\n\n const viewAllResultsUrl = getFullSearchResultUrlWithOrder(\n realQuery,\n query,\n expectedSearchResultType,\n ).path;\n\n window.location.href = viewAllResultsUrl;\n };\n\n const onResultScroll = React.useCallback(() => searchRef.current?.blur(), [searchRef]);\n\n return (\n <SearchOverlay\n submitLabel=\"Sök pÃ¥ Coop\"\n onEnterPress={navigateToGlobalSearchResultsPage}\n onOutsideClick={handleOutsideClick}\n onClearClick={handleClearClick}\n ref={searchRef}\n inputPlaceholder=\"Sök recept, varor, butiker och artiklar\"\n inputDescription=\"Förslag visas nedan\"\n announcerSlot={\n <DelayedA11yAnnouncer\n a11yMessage={a11yResultAnnounceMessage}\n name=\"GlobalSearchResultsAnnouncer\"\n delayFirstMessage\n />\n }\n >\n <GlobalSearchOverlayContent\n onAllResultsClick={handleAllResultsClick}\n onAllResultsForTypeClick={handleAllResultsClick}\n onOtherResultTypeClick={handleOtherResultTypeClick}\n onProductAddToCartClick={trackAddToCartClickAction}\n onProductRemoveFromCartClick={trackRemoveFromCartClickAction}\n onItemClick={handleItemClick}\n onLabelClick={handleLabelClick}\n onScroll={onResultScroll}\n useMaxHeightCalculation\n />\n </SearchOverlay>\n );\n};\n\nexport default GlobalSearchOverlay;\n","/* eslint-disable react/jsx-props-no-spreading */\n\nimport type { FC } from 'react';\n\nimport { HeaderSearch } from '../Header';\nimport type { GlobalHeaderDOMProps } from './GlobalSearch.types';\nimport { getTypedCurrentPage } from './GlobalSearch.utils';\nimport GlobalSearchBar from './GlobalSearchBar';\nimport GlobalSearchContext from './GlobalSearchContext';\nimport GlobalSearchOverlay from './GlobalSearchOverlay';\n\ninterface GlobalHeaderProps\n extends Pick<GlobalHeaderDOMProps, 'currentPage' | 'searchDisabled' | 'headerTheme'> {\n query?: string;\n performFullSearch?: (query: string, originalQuery?: string) => void;\n}\n\nconst GlobalSearch: FC<React.PropsWithChildren<GlobalHeaderProps>> = (props) => {\n const initialQuery = props.query || '';\n const typedCurrentPage = getTypedCurrentPage(props.currentPage);\n\n return (\n <GlobalSearchContext initialQuery={initialQuery} searchFromPage={typedCurrentPage}>\n <GlobalSearchInner {...props} />\n </GlobalSearchContext>\n );\n};\n\nconst GlobalSearchInner: FC<React.PropsWithChildren<GlobalHeaderProps>> = (props) => {\n const shouldShowGlobalSearchBar = !props.searchDisabled;\n\n return (\n <>\n {shouldShowGlobalSearchBar && (\n <HeaderSearch\n searchSlot={\n <GlobalSearchBar performFullSearch={props.performFullSearch} size=\"small\" />\n }\n />\n )}\n <GlobalSearchOverlay performFullSearch={props.performFullSearch} />\n {props.children}\n </>\n );\n};\n\nexport default GlobalSearch;\n","import { SearchFromPageType } from '../../models/SearchFromPageType';\n\nexport const getTypedCurrentPage = (currentPageString?: string) => {\n const isEnum: boolean =\n !!currentPageString &&\n Object.values(SearchFromPageType)\n .map((item) => item.toLocaleLowerCase())\n .includes(currentPageString.toLowerCase() as SearchFromPageType);\n\n const searchFromPage = isEnum\n ? (currentPageString as SearchFromPageType)\n : SearchFromPageType.Other;\n\n return searchFromPage;\n};\n","import CartSummaryAccessibilityLogger from '../../../cart/components/atoms/CartSummaryAccessibilityLogger';\nimport ComponentPortals from '../../../common/components/molecules/ComponentPortals';\nimport { useIsB2BRoute } from '../../../common/utils/b2bUtils';\nimport EcommerceSearch from '../../../ecommerce/components/EcommerceLayout/EcommerceSearch';\nimport type { GlobalHeaderDOMProps } from '../GlobalSearch';\nimport GlobalSearch from '../GlobalSearch';\nimport type { HeaderPortalDOMProps } from './Header.types';\nimport HeaderFluidBanner from './HeaderFluidBanner';\nimport HeaderStickyBanner from './HeaderStickyBanner';\n\nconst GlobalHeader = (props: {\n stayAfterLoginLogoutRedirect?: boolean;\n performFullSearch?: (query: string, originalQuery?: string) => void;\n hideB2BSwitch: boolean;\n}) => {\n const isB2B = useIsB2BRoute();\n\n return (\n <>\n <CartSummaryAccessibilityLogger />\n <ComponentPortals\n cmpName=\"HeaderFluidBanner\"\n render={(domProps: HeaderPortalDOMProps) => (\n <HeaderFluidBanner\n featuredNavigation={{\n items: domProps.featuredNavigation?.items,\n }}\n headerTheme={domProps.headerTheme}\n hideB2BSwitch={props.hideB2BSwitch}\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect || false}\n />\n )}\n />\n <ComponentPortals\n cmpName=\"HeaderStickyBanner\"\n render={(domProps: GlobalHeaderDOMProps) => (\n <HeaderStickyBanner\n featuredNavigation={{\n items: domProps.featuredNavigation?.items,\n }}\n headerTheme={domProps.headerTheme}\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect || false}\n searchSlot={\n // b2b customers should always see EcommerceSearch on all pages\n isB2B ? (\n <EcommerceSearch />\n ) : (\n <GlobalSearch\n currentPage={domProps.currentPage}\n searchDisabled={domProps.searchDisabled}\n query={domProps.query}\n headerTheme={domProps.headerTheme}\n performFullSearch={props.performFullSearch}\n />\n )\n }\n />\n )}\n />\n </>\n );\n};\n\nexport default GlobalHeader;\n","import { Icon } from '@coop/components';\nimport { CoopLogoIcon } from '@coop/icons';\nimport classnames from 'classnames';\n\nimport { appConfig } from '../../../../appConfig';\nimport { useUserTypeQuery } from '../../../common/hooks/useUserType';\nimport { UserType } from '../../../common/store/structureDefinitions/userState';\n\ninterface BannerProps {\n headerTheme: 'black' | 'darkGreen';\n bordered?: boolean;\n wideSlots?: boolean;\n}\n\nconst Logo = () => {\n const { data: userType } = useUserTypeQuery();\n const isPunchout = userType === UserType.punchout;\n\n return (\n <a\n className={classnames('Header-logo')}\n href={\n appConfig.coopUserSettings.isShoppingForAnother || isPunchout\n ? appConfig.coopSettings.ecommerce.page.url\n : appConfig.coopSettings.startPage.url\n }\n aria-label=\"Till startsidan\"\n >\n <Icon icon={CoopLogoIcon} aria-hidden />\n </a>\n );\n};\n\nconst Banner = (props: React.PropsWithChildren<BannerProps>) => {\n return (\n <div\n className={classnames(\n 'HeaderBanner',\n 'u-noPrint',\n props.wideSlots && 'HeaderBanner--wideSlots',\n props.bordered && 'HeaderBanner--bordered',\n props.headerTheme === 'darkGreen' && 'HeaderBanner--darkGreen',\n props.headerTheme === 'black' && 'HeaderBanner--black',\n )}\n style={{ zIndex: 2 }}\n >\n {props.children}\n </div>\n );\n};\n\nconst LeftSlot = (props: React.PropsWithChildren<{}>) => {\n return <div className=\"HeaderBanner-Left\">{props.children}</div>;\n};\n\nconst LeftNav = (props: React.PropsWithChildren<{}>) => {\n return <div className=\"HeaderBanner-LeftNav\">{props.children}</div>;\n};\n\nconst RightNav = (props: React.PropsWithChildren<{}>) => {\n return <div className=\"HeaderBanner-RightNav\">{props.children}</div>;\n};\n\nconst CenterSlot = (props: React.PropsWithChildren<{}>) => {\n return <div className=\"HeaderBanner-Center\">{props.children}</div>;\n};\n\nconst RightSlot = (props: React.PropsWithChildren<{}>) => {\n return <div className=\"HeaderBanner-Right\">{props.children}</div>;\n};\n\nconst HeaderBanner = {\n Logo,\n Banner,\n LeftSlot,\n LeftNav,\n RightNav,\n CenterSlot,\n RightSlot,\n};\n\nexport default HeaderBanner;\n","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { ga4NavigationTracking } from '../../../common/tracking/ga4/navigation';\nimport { isAriaCurrentPage } from '../../../common/utils/accessibilityUtils';\n\nexport interface SiteNavigationItem {\n isActive: boolean;\n name: string;\n url: string;\n contentLinkId: number;\n}\n\ninterface FeaturedNavigationProps {\n items: SiteNavigationItem[];\n indicatorPosition: 'top' | 'bottom';\n}\n\nconst FeaturedNavigation: FC<React.PropsWithChildren<FeaturedNavigationProps>> = (props) => {\n const { pathname } = useLocation();\n\n return (\n <nav aria-label=\"Genvägar\" className=\"Navigation\">\n <ul className=\"Navigation-List\">\n {props.items.map((item) => {\n const ariaCurrentPage = item.isActive && isAriaCurrentPage(item.url, pathname);\n return (\n <li\n key={item.name}\n className={classnames(\n props.indicatorPosition === 'top' && 'Indicator--Top',\n props.indicatorPosition === 'bottom' && 'Indicator--Bottom',\n 'Navigation-ListItem',\n item.isActive && 'is-active',\n )}\n >\n <a\n aria-current={ariaCurrentPage}\n href={item.url}\n key={item.name}\n className={classnames('Navigation-Link')}\n data-test={`mainnav-${item.name.toLowerCase().replace(' & ', '-')}`}\n onClick={(e) => {\n ga4NavigationTracking.headerNavigationClick(\n item.name,\n e.currentTarget.href,\n );\n }}\n >\n <span className=\"Navigation-LinkText\">{item.name}</span>\n </a>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n};\n\nexport default FeaturedNavigation;\n","import { appConfig } from '../../../../appConfig';\nimport { BrowserSize } from '../../../../utility/browser';\nimport { useFromBrowserMediaQuery } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { useUserTypeQuery } from '../../../common/hooks/useUserType';\nimport { UserType } from '../../../common/store/structureDefinitions/userState';\nimport UserTypeModeSwitch from '../UserTypeModeSwitch';\nimport FeaturedNavigation from './FeaturedNavigation';\nimport HeaderBanner from './HeaderBanner';\nimport HeaderLeftNav from './HeaderLeftNav';\nimport HeaderRightNav from './HeaderRightNav';\n\nconst HeaderFluidBanner = (props: {\n featuredNavigation: {\n items: React.ComponentProps<typeof FeaturedNavigation>['items'];\n };\n headerTheme: 'darkGreen' | 'black';\n stayAfterLoginLogoutRedirect: boolean;\n hideB2BSwitch: boolean;\n}) => {\n const isFromLarge = useFromBrowserMediaQuery(BrowserSize.lg);\n const isFromXsm = useFromBrowserMediaQuery(BrowserSize.xsm);\n const { data: userType } = useUserTypeQuery();\n const isPunchout = userType === UserType.punchout;\n\n const disableMyFavoritesMenu = isPunchout || appConfig.coopUserSettings.isShoppingForMunicipal;\n\n return (\n <HeaderBanner.Banner headerTheme={props.headerTheme} bordered>\n {/* This is actually absolutely positioned to the right side but put here in order to be first in focus order */}\n {isFromLarge && (\n <div className=\"HeaderBanner-ModeSwitch\">\n {!props.hideB2BSwitch && <UserTypeModeSwitch theme=\"white\" />}\n </div>\n )}\n <HeaderBanner.LeftSlot>\n <HeaderBanner.LeftNav>\n {isFromLarge ? (\n <HeaderBanner.Logo />\n ) : (\n <>\n <HeaderLeftNav\n disableSiteNavigation={false}\n navigationItems={props.featuredNavigation?.items}\n />\n {isFromXsm && <HeaderBanner.Logo />}\n </>\n )}\n </HeaderBanner.LeftNav>\n </HeaderBanner.LeftSlot>\n {!!props.featuredNavigation?.items.length && (\n <HeaderBanner.CenterSlot>\n <FeaturedNavigation\n indicatorPosition=\"top\"\n items={props.featuredNavigation?.items}\n />\n </HeaderBanner.CenterSlot>\n )}\n <HeaderBanner.RightSlot>\n <HeaderBanner.RightNav>\n {!isFromLarge && (\n <HeaderRightNav\n disableMyFavoritesMenu={disableMyFavoritesMenu}\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect}\n headerTheme={props.headerTheme}\n />\n )}\n </HeaderBanner.RightNav>\n </HeaderBanner.RightSlot>\n </HeaderBanner.Banner>\n );\n};\n\nexport default HeaderFluidBanner;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMenu1 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 5.99951C2 5.44723 2.44772 4.99951 3 4.99951H21C21.5523 4.99951 22 5.44723 22 5.99951C22 6.5518 21.5523 6.99951 21 6.99951H3C2.44772 6.99951 2 6.5518 2 5.99951ZM2 11.9995C2 11.4472 2.44772 10.9995 3 10.9995H21C21.5523 10.9995 22 11.4472 22 11.9995C22 12.5518 21.5523 12.9995 21 12.9995H3C2.44772 12.9995 2 12.5518 2 11.9995ZM2 17.9995C2 17.4472 2.44772 16.9995 3 16.9995H21C21.5523 16.9995 22 17.4472 22 17.9995C22 18.5518 21.5523 18.9995 21 18.9995H3C2.44772 18.9995 2 18.5518 2 17.9995Z\"\n })));\n};\nexport default SvgMenu1;","import { OverlayLoader } from '@coop/components';\nimport { Menu1Icon } from '@coop/icons';\nimport * as React from 'react';\n\nimport { FlyIn } from '../../../common/components/atoms/Modal';\nimport useModal from '../../../common/hooks/useModal';\nimport { FlyInType } from '../../../common/store/structureDefinitions/modalState';\nimport HeaderIconButton from '../HeaderIconButton/HeaderIconButton';\nimport type { SiteNavigationItem } from './FeaturedNavigation';\n\nconst SiteNavigation = React.lazy(() => import('../SiteNavigation'));\n\ninterface HeaderLeftNavProps {\n disableSiteNavigation: boolean;\n navigationItems: SiteNavigationItem[];\n}\n\nconst HeaderLeftNav = (props: React.PropsWithChildren<HeaderLeftNavProps>) => {\n const { isOpen, close, open } = useModal(FlyInType.SiteNavigation);\n\n return (\n !props.disableSiteNavigation && (\n <nav aria-label=\"Huvudmeny\">\n <FlyIn\n isOpen={isOpen}\n close={close}\n sizePx={375}\n alignment=\"left\"\n initialFocusOnDialog={false}\n renderTrigger={(ref) => (\n <HeaderIconButton\n ref={ref}\n icon={Menu1Icon}\n label=\"Meny\"\n onClick={open}\n theme=\"bordered\"\n />\n )}\n >\n <React.Suspense fallback={<OverlayLoader isLoading />}>\n <SiteNavigation onClose={close} />\n </React.Suspense>\n </FlyIn>\n </nav>\n )\n );\n};\n\nexport default HeaderLeftNav;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgDottedCircle = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 1.41176C11.9003 1.41176 11.8009 1.41314 11.7019 1.41588C11.3122 1.42664 10.9875 1.11945 10.9768 0.729746C10.966 0.340046 11.2732 0.0154094 11.6629 0.00464883C11.7749 0.00155602 11.8873 0 12 0C12.1127 0 12.2251 0.00155606 12.3371 0.00464887C12.7268 0.0154094 13.034 0.340046 13.0232 0.729746C13.0125 1.11945 12.6878 1.42664 12.2981 1.41588C12.1991 1.41314 12.0997 1.41176 12 1.41176ZM8.63042 1.19383C8.76953 1.55801 8.58706 1.96601 8.22288 2.10512C8.03751 2.17592 7.85463 2.25179 7.67442 2.33256C7.31866 2.492 6.90102 2.33285 6.74158 1.9771C6.58214 1.62135 6.74128 1.2037 7.09704 1.04426C7.30143 0.952662 7.50885 0.866605 7.71913 0.786287C8.08332 0.647181 8.49131 0.829644 8.63042 1.19383ZM15.3696 1.19383C15.5087 0.829644 15.9167 0.647182 16.2809 0.786288C16.4911 0.866606 16.6986 0.952662 16.903 1.04426C17.2587 1.2037 17.4179 1.62135 17.2584 1.9771C17.099 2.33285 16.6813 2.492 16.3256 2.33256C16.1454 2.25179 15.9625 2.17592 15.7771 2.10512C15.4129 1.96601 15.2305 1.55801 15.3696 1.19383ZM4.75383 3.30795C5.0217 3.59119 5.00925 4.03795 4.72601 4.30583C4.58207 4.44195 4.44195 4.58207 4.30583 4.726C4.03795 5.00924 3.59119 5.0217 3.30795 4.75383C3.02471 4.48596 3.01225 4.03919 3.28012 3.75595C3.43428 3.59295 3.59295 3.43427 3.75595 3.28012C4.03919 3.01225 4.48596 3.0247 4.75383 3.30795ZM19.2462 3.30795C19.514 3.02471 19.9608 3.01225 20.2441 3.28012C20.407 3.43428 20.5657 3.59295 20.7199 3.75595C20.9878 4.03919 20.9753 4.48596 20.6921 4.75383C20.4088 5.0217 19.962 5.00925 19.6942 4.72601C19.558 4.58207 19.4179 4.44195 19.274 4.30583C18.9908 4.03795 18.9783 3.59119 19.2462 3.30795ZM1.9771 6.74158C2.33285 6.90101 2.492 7.31866 2.33256 7.67441C2.25179 7.85463 2.17592 8.03751 2.10512 8.22288C1.96601 8.58706 1.55801 8.76953 1.19383 8.63042C0.829644 8.49131 0.647182 8.08331 0.786288 7.71913C0.866606 7.50885 0.952662 7.30143 1.04426 7.09704C1.2037 6.74128 1.62135 6.58214 1.9771 6.74158ZM22.0229 6.74158C22.3787 6.58214 22.7963 6.74128 22.9557 7.09704C23.0473 7.30143 23.1334 7.50885 23.2137 7.71913C23.3528 8.08332 23.1704 8.49131 22.8062 8.63042C22.442 8.76953 22.034 8.58706 21.8949 8.22288C21.8241 8.03751 21.7482 7.85463 21.6674 7.67442C21.508 7.31866 21.6671 6.90102 22.0229 6.74158ZM0.729746 10.9768C1.11945 10.9875 1.42664 11.3122 1.41588 11.7019C1.41314 11.8009 1.41176 11.9003 1.41176 12C1.41176 12.0997 1.41314 12.1991 1.41588 12.2981C1.42664 12.6878 1.11945 13.0125 0.729746 13.0232C0.340046 13.034 0.0154094 12.7268 0.00464883 12.3371C0.00155602 12.2251 0 12.1127 0 12C0 11.8873 0.00155606 11.7749 0.00464887 11.6629C0.0154094 11.2732 0.340046 10.966 0.729746 10.9768ZM23.2703 10.9768C23.66 10.966 23.9846 11.2732 23.9954 11.6629C23.9984 11.7749 24 11.8873 24 12C24 12.1127 23.9984 12.2251 23.9954 12.3371C23.9846 12.7268 23.66 13.034 23.2703 13.0232C22.8806 13.0125 22.5734 12.6878 22.5841 12.2981C22.5869 12.1991 22.5882 12.0997 22.5882 12C22.5882 11.9003 22.5869 11.8009 22.5841 11.7019C22.5734 11.3122 22.8806 10.9875 23.2703 10.9768ZM1.19383 15.3696C1.55801 15.2305 1.96601 15.4129 2.10512 15.7771C2.17592 15.9625 2.25179 16.1454 2.33256 16.3256C2.492 16.6813 2.33285 17.099 1.9771 17.2584C1.62135 17.4179 1.2037 17.2587 1.04426 16.903C0.952662 16.6986 0.866605 16.4911 0.786287 16.2809C0.647181 15.9167 0.829644 15.5087 1.19383 15.3696ZM22.8062 15.3696C23.1704 15.5087 23.3528 15.9167 23.2137 16.2809C23.1334 16.4911 23.0473 16.6986 22.9557 16.903C22.7963 17.2587 22.3787 17.4179 22.0229 17.2584C21.6671 17.099 21.508 16.6813 21.6674 16.3256C21.7482 16.1454 21.8241 15.9625 21.8949 15.7771C22.034 15.4129 22.442 15.2305 22.8062 15.3696ZM3.30795 19.2462C3.59119 18.9783 4.03795 18.9908 4.30583 19.274C4.44195 19.4179 4.58207 19.558 4.726 19.6942C5.00924 19.962 5.0217 20.4088 4.75383 20.6921C4.48596 20.9753 4.03919 20.9878 3.75595 20.7199C3.59295 20.5657 3.43427 20.407 3.28012 20.244C3.01225 19.9608 3.0247 19.514 3.30795 19.2462ZM20.6921 19.2462C20.9753 19.514 20.9878 19.9608 20.7199 20.2441C20.5657 20.407 20.407 20.5657 20.244 20.7199C19.9608 20.9878 19.514 20.9753 19.2462 20.6921C18.9783 20.4088 18.9908 19.962 19.274 19.6942C19.4179 19.558 19.558 19.4179 19.6942 19.274C19.962 18.9908 20.4088 18.9783 20.6921 19.2462ZM6.74158 22.0229C6.90101 21.6671 7.31866 21.508 7.67441 21.6674C7.85463 21.7482 8.03751 21.8241 8.22288 21.8949C8.58706 22.034 8.76953 22.442 8.63042 22.8062C8.49131 23.1704 8.08331 23.3528 7.71913 23.2137C7.50885 23.1334 7.30143 23.0473 7.09704 22.9557C6.74128 22.7963 6.58214 22.3787 6.74158 22.0229ZM17.2584 22.0229C17.4179 22.3787 17.2587 22.7963 16.903 22.9557C16.6986 23.0473 16.4911 23.1334 16.2809 23.2137C15.9167 23.3528 15.5087 23.1704 15.3696 22.8062C15.2305 22.442 15.4129 22.034 15.7771 21.8949C15.9625 21.8241 16.1454 21.7482 16.3256 21.6674C16.6813 21.508 17.099 21.6671 17.2584 22.0229ZM10.9768 23.2703C10.9875 22.8806 11.3122 22.5734 11.7019 22.5841C11.8009 22.5869 11.9003 22.5882 12 22.5882C12.0997 22.5882 12.1991 22.5869 12.2981 22.5841C12.6878 22.5734 13.0125 22.8806 13.0232 23.2703C13.034 23.66 12.7268 23.9846 12.3371 23.9954C12.2251 23.9984 12.1127 24 12 24C11.8873 24 11.7749 23.9984 11.6629 23.9954C11.2732 23.9846 10.966 23.66 10.9768 23.2703Z\"\n })));\n};\nexport default SvgDottedCircle;","// extracted by mini-css-extract-plugin\nexport default {\"HeaderBroken\":\"lCKHgMs5\",\"Circle\":\"umZlg46a\",\"Headline\":\"mf7bgyxB\",\"NotMember\":\"kF0xgnsG\",\"IconChecked\":\"G2vPXW2P\",\"IconNotChecked\":\"OSDOP8QR\",\"IconCircleX\":\"FQx7RXp7\",\"IconX\":\"rMOf2gQi\",\"CloseIcon\":\"QaQ4HO1e\",\"NotAMemberButton\":\"tBaMmRDL\",\"NotConnectedTextLink\":\"ti3Y2mNc\",\"Header\":\"DzwuKXZW\",\"PointLoader\":\"qk2lxceg\",\"PrePoints\":\"kHY6kz7Q\",\"Points\":\"Wl7FUVSH\",\"Points-value\":\"mJjaD8q6\",\"PostPoints\":\"fHIV_Q1R\",\"InformationButton\":\"GhrzUxJz\",\"HeaderCompany\":\"h1UXyi3Z\",\"HeadlineCompany\":\"wvei73rN\"};","import { Button, Icon, Loader, ModalHeader } from '@coop/components';\nimport { CheckmarkIcon, CloseIcon, DottedCircleIcon, Warning1Icon } from '@coop/icons';\nimport { useQuery } from '@tanstack/react-query';\nimport classnames from 'classnames';\nimport type { FC } from 'react';\n\nimport { appConfig } from '../../../../../appConfig';\nimport { Helpers } from '../../../../../utility/helpers';\nimport loyaltyFlow from '../../../../common/flow/loyaltyFlow';\nimport {\n useHasUserAKimCustomerId,\n useIsUserAMember,\n useIsUserCompany,\n} from '../../../../common/hooks/useUserProfile';\nimport { ga4BonusEvents } from '../../../../common/tracking/ga4/bonus';\nimport { useHouseholdPointBalance } from '../../../../member/pointshop/hooks/useHouseholdPointBalance';\nimport BonusInfoConfirm from '../../../../myCoop/components/BonusInfoConfirm';\nimport { useMyCoopSettingsPageQuery } from '../../../../myCoop/hooks/useMyCoopSettingsPageQuery';\nimport { associationNamesQueryKey } from '../../../../myCoop/myCoopQueries';\nimport styles from './MenuHeaderBonusSystem.module.less';\n\ninterface MenuChildrenProps {\n isEligibleForBonus: boolean | undefined;\n myBonusOverviewPageUrl: string;\n handleLinkClick: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst MenuHeaderBonusSystem: FC<MenuChildrenProps> = ({\n isEligibleForBonus,\n myBonusOverviewPageUrl,\n handleLinkClick,\n}) => {\n const isMember = useIsUserAMember();\n const isCompany = useIsUserCompany();\n\n const hasKimCustomerId = useHasUserAKimCustomerId();\n const { isShoppingForAnother } = appConfig.coopUserSettings;\n\n const {\n isSuccess: pointsIsSuccess,\n data: result,\n isLoading: pointsIsLoading,\n } = useHouseholdPointBalance(!!isMember);\n\n const { data: associationNames, isLoading: associationIsLoading } = useQuery({\n queryKey: associationNamesQueryKey,\n queryFn: loyaltyFlow.getMembershipNames,\n enabled: !!isMember,\n });\n\n // A member needs to have at least one association\n\n const memberMissingAssociations =\n isMember &&\n ((!associationIsLoading && !associationNames) ||\n (associationNames && associationNames.length < 1));\n\n const { data: settingsTexts } = useMyCoopSettingsPageQuery([\n 'brokenMemberHeadline',\n 'brokenMemberText',\n 'brokenMemberButtonContentReference',\n 'brokenMemberButtonText',\n 'notMemberHeadline',\n 'notMemberPoint1',\n 'notMemberPoint2',\n 'notMemberPoint3',\n 'notMemberPoint1Checked',\n 'notMemberPoint2Checked',\n 'notMemberPoint3Checked',\n 'notMemberPoint1CheckedText',\n 'notMemberPoint1UnCheckedText',\n 'notMemberPoint2CheckedText',\n 'notMemberPoint2UnCheckedText',\n 'notMemberPoint3CheckedText',\n 'notMemberPoint3UnCheckedText',\n 'notMemberButtonText',\n 'notMemberButtonContentReference',\n 'notConnectedButtonText',\n 'notConnectedButtonContentReference',\n ]);\n if (!settingsTexts) return null;\n\n if (memberMissingAssociations) {\n return (\n <div className={styles.HeaderBroken}>\n <div className={styles.Circle}>\n <Icon\n icon={Warning1Icon}\n className=\"u-colorRed\"\n width={32}\n height={32}\n title=\"Varning\"\n />\n </div>\n <ModalHeader className={styles.Headline}>\n {settingsTexts.brokenMemberHeadline\n ? settingsTexts.brokenMemberHeadline\n : 'NÃ¥got gick fel. Poäng kunde inte hämtas.'}\n </ModalHeader>\n {settingsTexts.brokenMemberText && <p>{settingsTexts.brokenMemberText}</p>}\n {settingsTexts.brokenMemberButtonContentReference?.url &&\n settingsTexts.brokenMemberButtonText && (\n <Button asChild theme=\"primary\" className=\"u-sizeFull\">\n <a\n href={settingsTexts.brokenMemberButtonContentReference?.url}\n className={styles.NotAMemberButton}\n >\n {settingsTexts.brokenMemberButtonText}\n </a>\n </Button>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={classnames(\n styles.Header,\n isCompany || isShoppingForAnother ? styles.HeaderCompany : '',\n )}\n >\n {!isMember && (\n <div className={styles.NotMember}>\n {isCompany || isShoppingForAnother ? (\n <ModalHeader className={styles.HeadlineCompany}>\n {isCompany ? 'Företagskonto' : ''}\n </ModalHeader>\n ) : (\n <>\n <ModalHeader className={styles.Headline}>\n {settingsTexts.notMemberHeadline\n ? settingsTexts.notMemberHeadline\n : 'Inloggad (ej medlem)'}\n </ModalHeader>\n {(settingsTexts.notMemberPoint1 ||\n settingsTexts.notMemberPoint2 ||\n settingsTexts.notMemberPoint3) && (\n <ul>\n {settingsTexts.notMemberPoint1 && (\n <li>\n <ListIcon\n isChecked={!!settingsTexts.notMemberPoint1Checked}\n aria-hidden\n />\n <div aria-hidden>{settingsTexts.notMemberPoint1}</div>\n <span className=\"u-hiddenVisually\">\n {settingsTexts.notMemberPoint1Checked\n ? settingsTexts.notMemberPoint1CheckedText\n : settingsTexts.notMemberPoint1UnCheckedText}\n </span>\n </li>\n )}\n\n {settingsTexts.notMemberPoint2 && (\n <li>\n <ListIcon\n isChecked={!!settingsTexts.notMemberPoint2Checked}\n aria-hidden\n />\n <div aria-hidden>{settingsTexts.notMemberPoint2}</div>\n <span className=\"u-hiddenVisually\">\n {settingsTexts.notMemberPoint2Checked\n ? settingsTexts.notMemberPoint2CheckedText\n : settingsTexts.notMemberPoint2UnCheckedText}\n </span>\n </li>\n )}\n\n {settingsTexts.notMemberPoint3 && (\n <li>\n <ListIcon\n isChecked={!!settingsTexts.notMemberPoint3Checked}\n aria-hidden\n />\n <div aria-hidden>{settingsTexts.notMemberPoint3}</div>\n <span className=\"u-hiddenVisually\">\n {settingsTexts.notMemberPoint3Checked\n ? settingsTexts.notMemberPoint3CheckedText\n : settingsTexts.notMemberPoint3UnCheckedText}\n </span>\n </li>\n )}\n </ul>\n )}\n\n {settingsTexts.notMemberButtonText &&\n settingsTexts.notMemberButtonContentReference?.url && (\n <Button asChild theme=\"primary\" fullWidth>\n <a\n href={settingsTexts.notMemberButtonContentReference.url}\n onClick={handleLinkClick}\n className={styles.NotAMemberButton}\n >\n {settingsTexts.notMemberButtonText}\n </a>\n </Button>\n )}\n {!hasKimCustomerId &&\n settingsTexts.notConnectedButtonText &&\n settingsTexts.notConnectedButtonContentReference?.url && (\n <div className={styles.NotConnectedTextLink}>\n Redan medlem?{' '}\n <a\n href={\n settingsTexts.notConnectedButtonContentReference.url\n }\n onClick={handleLinkClick}\n >\n {settingsTexts.notConnectedButtonText}\n </a>\n </div>\n )}\n </>\n )}\n </div>\n )}\n {isMember && (\n <div className={styles.Header}>\n <ModalHeader className={styles.PrePoints}>Bonus att använda</ModalHeader>\n\n {pointsIsSuccess && (\n <>\n <div className={classnames(styles['Points-value'], 'u-textCenter')}>\n {isEligibleForBonus && result ? (\n <>\n <span>\n {Helpers.formatMemberPointsAndAmount(result.points)}\n </span>\n <span aria-hidden> p</span>\n <span className=\"u-hiddenVisually\">poäng</span>\n </>\n ) : (\n '-'\n )}\n </div>\n\n {isEligibleForBonus && result && (\n <div className={styles.PostPoints}>\n <BonusInfoConfirm\n monetaryWorth={result.monetaryWorth}\n cssClasses={styles.InformationButton}\n onClickOpen={() => {\n ga4BonusEvents.navigation.infoSymbolInteraction(\n 'profile menu',\n );\n }}\n points={result.points}\n />\n </div>\n )}\n </>\n )}\n {pointsIsLoading && (\n <Loader theme=\"green\" additionalClassNames={styles.PointLoader} />\n )}\n\n {myBonusOverviewPageUrl && (\n <Button asChild theme=\"primary\" fullWidth>\n <a href={myBonusOverviewPageUrl} onClick={handleLinkClick}>\n Till översikten\n </a>\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ListIcon: FC<{ isChecked: boolean }> = ({ isChecked }) => {\n if (isChecked) {\n return (\n <Icon\n icon={CheckmarkIcon}\n className={styles.IconChecked}\n width={32}\n height={32}\n aria-hidden\n />\n );\n }\n\n return (\n <div className={styles.IconCircleX}>\n <Icon icon={DottedCircleIcon} className={styles.IconNotChecked} aria-hidden />\n <Icon icon={CloseIcon} width={16} height={16} className={styles.IconX} aria-hidden />\n </div>\n );\n};\n\nexport default MenuHeaderBonusSystem;\n","import { Button, FullOverlayLoader } from '@coop/components';\nimport type { FC } from 'react';\nimport { useEffect } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport { ga4NavigationTracking } from '../../../common/tracking/ga4/navigation';\nimport { ga4UserTracking } from '../../../common/tracking/ga4/user';\nimport type { MyCoopProfileMenuItem } from '../../../episerver/api/localContentApi';\nimport { useCurrentEpiPage } from '../../../episerver/components/hooks/useCurrentEpiPage';\nimport { useEligibleForBonus } from '../../../member/pointshop/hooks/useEligibleForBonus';\nimport ProfileMenuList from '../../../myCoop/profileMenu/ProfileMenuList';\nimport MenuHeaderBonusSystem from './MenuHeaderBonusSystem';\nimport { useMyCoopProfileMenu } from './MyCoopProfileFlyIn.hooks';\nimport styles from './MyCoopProfileFlyIn.module.less';\n\ninterface MyCoopProfileMenuProps {\n handleListItemClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\nconst getParentName = (menuItems: MyCoopProfileMenuItem[] | undefined, selectedPageId: number) => {\n if (menuItems === undefined) return null;\n\n const parentMenu = menuItems.find((menu) =>\n menu?.menuItemChildren?.some((child) => child.id === selectedPageId),\n );\n\n return parentMenu ? parentMenu.name : null;\n};\n\nconst MyCoopProfileMenu: FC<MyCoopProfileMenuProps> = (props) => {\n const {\n data: pages,\n isSuccess: menuIsSuccess,\n isLoading: menuIsLoading,\n } = useMyCoopProfileMenu();\n\n const currentPage = useCurrentEpiPage();\n\n const menuPages = pages;\n\n const { data: isEligibleForBonus } = useEligibleForBonus(\n !!appConfig.coopUserSettings.isMedmeraCustomer,\n );\n\n const handleLinkClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n ga4NavigationTracking.profileMenu.click(e.currentTarget.innerText, e.currentTarget.href);\n };\n\n const handleLogoutLinkClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n ga4UserTracking.logout();\n handleLinkClick(e);\n };\n\n const handleListItemClick = (\n e: React.MouseEvent<HTMLAnchorElement>,\n item: MyCoopProfileMenuItem,\n ) => {\n props.handleListItemClick?.(e);\n ga4NavigationTracking.profileMenuWalletInteractionTrigger.click(\n getParentName(pages, item.id) ?? e.currentTarget.innerText,\n getParentName(pages, item.id) === null ? undefined : e.currentTarget.innerText,\n 'profile menu',\n e.currentTarget.innerText,\n e.currentTarget.href,\n );\n };\n\n const handleItemOpenClick = (item: MyCoopProfileMenuItem) => {\n ga4NavigationTracking.profileMenuWalletInteractionTrigger.open.level1Open(\n item.name,\n 'profile menu',\n );\n };\n\n const handleItemCloseClick = (item: MyCoopProfileMenuItem) => {\n ga4NavigationTracking.profileMenuWalletInteractionTrigger.close.level1Close(\n item.name,\n 'profile menu',\n );\n };\n\n useEffect(() => {\n ga4NavigationTracking.profileMenu.open();\n return () => {\n ga4NavigationTracking.profileMenu.close();\n };\n }, []);\n\n return (\n <>\n <MenuHeaderBonusSystem\n isEligibleForBonus={isEligibleForBonus}\n myBonusOverviewPageUrl={appConfig.coopSettings.myCoop.myBonusOverviewPageUrl}\n handleLinkClick={handleLinkClick}\n />\n <div className={styles.Content}>\n <FullOverlayLoader isLoading={menuIsLoading}>\n {menuIsSuccess && (\n <>\n {menuPages !== undefined && (\n <ProfileMenuList\n pages={menuPages}\n activePageId={currentPage?.data?.contentLink?.id}\n onItemClick={handleListItemClick}\n onItemOpen={handleItemOpenClick}\n onItemClose={handleItemCloseClick}\n />\n )}\n <div className={styles.Footer}>\n <Button theme=\"light\" asChild>\n <a\n href={appConfig.coopSettings.logoutUrl}\n onClick={handleLogoutLinkClick}\n >\n Logga ut\n </a>\n </Button>\n </div>\n </>\n )}\n </FullOverlayLoader>\n </div>\n </>\n );\n};\n\nexport default MyCoopProfileMenu;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgBag2 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.79338 2.79289C4.18391 2.40237 4.81707 2.40237 5.2076 2.79289L9.4147 6.99997H20.7197C22.0208 6.99997 22.9756 8.22275 22.66 9.48505L20.16 19.485C19.9374 20.3754 19.1374 21 18.2197 21H5.78126C4.86352 21 4.06356 20.3754 3.84097 19.485L1.34097 9.48504C1.0254 8.22275 1.98012 6.99997 3.28126 6.99997H6.58626L3.79339 4.20711C3.40286 3.81658 3.40286 3.18342 3.79338 2.79289ZM8.58627 8.99997H3.28126L5.78126 19H18.2197L20.7197 8.99997H11.4147L12.7076 10.2929C13.0981 10.6834 13.0981 11.3166 12.7076 11.7071C12.3171 12.0976 11.6839 12.0976 11.2934 11.7071L8.58627 8.99997ZM8.00048 14C8.55277 14 9.00048 14.4477 9.00048 15V17C9.00048 17.5523 8.55277 18 8.00048 18C7.4482 18 7.00048 17.5523 7.00048 17V15C7.00048 14.4477 7.4482 14 8.00048 14ZM12.0005 14C12.5528 14 13.0005 14.4477 13.0005 15V17C13.0005 17.5523 12.5528 18 12.0005 18C11.4482 18 11.0005 17.5523 11.0005 17V15C11.0005 14.4477 11.4482 14 12.0005 14ZM16.0005 14C16.5528 14 17.0005 14.4477 17.0005 15V17C17.0005 17.5523 16.5528 18 16.0005 18C15.4482 18 15.0005 17.5523 15.0005 17V15C15.0005 14.4477 15.4482 14 16.0005 14Z\"\n })));\n};\nexport default SvgBag2;","// extracted by mini-css-extract-plugin\nexport default {\"EmptyHeader\":\"CDJKXKme\",\"Footer\":\"PA50agCi\",\"Content\":\"JKO_uO6T\"};","import { OverlayLoader } from '@coop/components';\nimport { UserIcon } from '@coop/icons';\nimport * as React from 'react';\n\nimport { FlyinNavigation } from '../../../common/components/atoms/FlyInNavigation';\nimport { FlyIn } from '../../../common/components/atoms/Modal';\nimport useModal from '../../../common/hooks/useModal';\nimport { FlyInType } from '../../../common/store/structureDefinitions/modalState';\nimport HeaderIconButton from '../HeaderIconButton/HeaderIconButton';\nimport MyCoopProfileMenu from './MyCoopProfileMenu';\n\nconst MyCoopProfileFlyIn = () => {\n const { open, isOpen, close } = useModal(FlyInType.MyProfileMenu);\n\n return (\n <FlyIn\n isOpen={isOpen}\n close={close}\n sizePx={375}\n renderTrigger={(ref) => (\n <HeaderIconButton\n ref={ref}\n icon={UserIcon}\n label=\"Mitt coop\"\n testSelector=\"user\"\n onClick={open}\n theme=\"bordered\"\n />\n )}\n >\n <FlyinNavigation onClose={close}>\n <React.Suspense fallback={<OverlayLoader isLoading />}>\n <MyCoopProfileMenu />\n </React.Suspense>\n </FlyinNavigation>\n </FlyIn>\n );\n};\n\nexport default MyCoopProfileFlyIn;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgOverview = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 4.99951C2 3.34266 3.34315 1.99951 5 1.99951H8C9.65685 1.99951 11 3.34266 11 4.99951V9.99951C11 11.6564 9.65685 12.9995 8 12.9995H5C3.34315 12.9995 2 11.6564 2 9.99951V4.99951ZM5 3.99951C4.44772 3.99951 4 4.44723 4 4.99951V9.99951C4 10.5518 4.44772 10.9995 5 10.9995H8C8.55228 10.9995 9 10.5518 9 9.99951V4.99951C9 4.44723 8.55228 3.99951 8 3.99951H5ZM13 4.99951C13 3.34266 14.3431 1.99951 16 1.99951H19C20.6569 1.99951 22 3.34266 22 4.99951V5.99951C22 7.65637 20.6569 8.99951 19 8.99951H16C14.3431 8.99951 13 7.65637 13 5.99951V4.99951ZM16 3.99951C15.4477 3.99951 15 4.44723 15 4.99951V5.99951C15 6.5518 15.4477 6.99951 16 6.99951H19C19.5523 6.99951 20 6.5518 20 5.99951V4.99951C20 4.44723 19.5523 3.99951 19 3.99951H16ZM13 13.9995C13 12.3427 14.3431 10.9995 16 10.9995H19C20.6569 10.9995 22 12.3427 22 13.9995V18.9995C22 20.6564 20.6569 21.9995 19 21.9995H16C14.3431 21.9995 13 20.6564 13 18.9995V13.9995ZM16 12.9995C15.4477 12.9995 15 13.4472 15 13.9995V18.9995C15 19.5518 15.4477 19.9995 16 19.9995H19C19.5523 19.9995 20 19.5518 20 18.9995V13.9995C20 13.4472 19.5523 12.9995 19 12.9995H16ZM2 17.9995C2 16.3427 3.34315 14.9995 5 14.9995H8C9.65685 14.9995 11 16.3427 11 17.9995V18.9995C11 20.6564 9.65685 21.9995 8 21.9995H5C3.34315 21.9995 2 20.6564 2 18.9995V17.9995ZM5 16.9995C4.44772 16.9995 4 17.4472 4 17.9995V18.9995C4 19.5518 4.44772 19.9995 5 19.9995H8C8.55228 19.9995 9 19.5518 9 18.9995V17.9995C9 17.4472 8.55228 16.9995 8 16.9995H5Z\"\n })));\n};\nexport default SvgOverview;","import type { Badge } from '@coop/components';\nimport { AnimatedBadge, BadgePositioning } from '@coop/components';\nimport { Bag2Icon } from '@coop/icons';\nimport { useEffect } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport { LocalStorageFacade } from '../../../../facades/storage/localStorageFacade';\nimport cartItemsSelectors from '../../../cart/selectors/cartItemsSelectors';\nimport { useCncFlyInState } from '../../../common/hooks/useCncFlyInState';\nimport { useAppDispatch, useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport tracking from '../../../common/tracking/tracking';\nimport HeaderIconButton from '../HeaderIconButton';\n\nconst CartTrigger = ({\n badgeColor,\n}: {\n badgeColor: React.ComponentProps<typeof Badge>['color'];\n}) => {\n const dispatch = useAppDispatch();\n const { initCnc } = useCncFlyInState();\n const postalCode = useAppSelector(storeSelectors.currentPostalCode);\n\n const openCnc = () => {\n tracking.cnc.openFrom.cartIcon(!!postalCode);\n initCnc();\n };\n\n const cartItemCount = useAppSelector(cartItemsSelectors.selectCartQuantity);\n\n useEffect(() => {\n const action = LocalStorageFacade.instance.get('Ecommerce:action');\n if (\n action === 'cnc' &&\n window.location.pathname.indexOf(appConfig.coopSettings.ecommerce.url) > -1\n ) {\n initCnc();\n LocalStorageFacade.instance.remove('Ecommerce:action');\n }\n }, [dispatch, initCnc]);\n\n return (\n <BadgePositioning>\n <HeaderIconButton\n icon={Bag2Icon}\n label={(() => {\n if (cartItemCount > 1) return `Varukorg med ${cartItemCount} varor`;\n if (cartItemCount === 1) return 'Varukorg med en vara';\n return 'Varukorg';\n })()}\n onClick={openCnc}\n data-test=\"showMiniCart\"\n aria-haspopup=\"dialog\"\n theme={!cartItemCount ? 'bordered' : 'solid'}\n >\n <div aria-hidden=\"true\">\n <AnimatedBadge\n color={badgeColor}\n size=\"small\"\n wide={cartItemCount > 99}\n top={-6}\n right={-6}\n animationProps={{\n key: cartItemCount,\n in: !!cartItemCount,\n timeout: 500,\n appear: true,\n enter: true,\n }}\n >\n {cartItemCount}\n </AnimatedBadge>\n </div>\n </HeaderIconButton>\n </BadgePositioning>\n );\n};\n\nexport default CartTrigger;\n","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMenu5 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\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: \"M12 16.5C12.9665 16.5 13.75 17.2835 13.75 18.25C13.75 19.2165 12.9665 20 12 20C11.0335 20 10.25 19.2165 10.25 18.25C10.25 17.2835 11.0335 16.5 12 16.5Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 4C12.9665 4 13.75 4.7835 13.75 5.75C13.75 6.7165 12.9665 7.5 12 7.5C11.0335 7.5 10.25 6.7165 10.25 5.75C10.25 4.7835 11.0335 4 12 4Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 10.25C12.9665 10.25 13.75 11.0335 13.75 12C13.75 12.9665 12.9665 13.75 12 13.75C11.0335 13.75 10.25 12.9665 10.25 12C10.25 11.0335 11.0335 10.25 12 10.25Z\"\n })));\n};\nexport default SvgMenu5;","'use client';\n\n/* eslint-disable react/jsx-props-no-spreading */\nimport type * as React from 'react';\nimport {\n type Popover as AriaPopover,\n Button,\n Dialog as AriaDialog,\n DialogTrigger,\n Popover,\n} from 'react-aria-components';\n\nimport styles from './PopoverDialog.module.scss';\n\nconst Dialog = (\n props: React.PropsWithChildren<{\n triggerSlot: React.ReactNode;\n popoverProps?: React.ComponentProps<typeof AriaPopover>;\n onOpenChange?: (isOpen: boolean) => void;\n }>,\n) => {\n return (\n <DialogTrigger onOpenChange={props.onOpenChange}>\n {props.triggerSlot}\n <Popover {...props.popoverProps} className={styles.Popover}>\n <AriaDialog>{props.children}</AriaDialog>\n </Popover>\n </DialogTrigger>\n );\n};\n\nconst Trigger = (props: React.ComponentProps<typeof Button>) => {\n return <Button {...props}>{props.children}</Button>;\n};\n\nconst PopoverDialog = {\n Dialog,\n Trigger,\n};\n\nexport default PopoverDialog;\n","// extracted by mini-css-extract-plugin\nexport default {\"Popover\":\"KeGmhcI_\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport classnames from 'classnames';\nimport { Link as AriaLink } from 'react-aria-components';\n\nimport actionListStyles from '../ActionList/ActionList.module.scss';\nimport { Icon } from '../Icon';\nimport popoverLinkListStyles from './PopoverLinkList.module.scss';\n\nconst List = (props: React.ComponentProps<'ul'>) => {\n return (\n <ul\n {...props}\n className={classnames(\n actionListStyles.ActionList,\n popoverLinkListStyles.PopoverLinkList,\n props.className,\n )}\n >\n {props.children}\n </ul>\n );\n};\n\nconst Item = (props: React.ComponentProps<'li'>) => {\n return (\n <li\n {...props}\n className={classnames(\n actionListStyles.Item,\n popoverLinkListStyles.Item,\n props.className,\n )}\n >\n {props.children}\n </li>\n );\n};\n\nconst Link = (props: React.ComponentProps<typeof AriaLink>) => {\n return (\n <AriaLink {...props} className={classnames(popoverLinkListStyles.Link, props.className)}>\n {props.children}\n </AriaLink>\n );\n};\n\nexport const LinkIcon = (props: {\n icon?: React.ComponentProps<typeof Icon>['icon'];\n className?: string;\n}) => {\n return props.icon ? (\n <Icon\n icon={props.icon}\n className={classnames(popoverLinkListStyles.LinkIcon, props.className)}\n aria-hidden\n />\n ) : null;\n};\n\nconst PopoverLinkList = {\n List,\n Item,\n Link,\n LinkIcon,\n};\n\nexport default PopoverLinkList;\n","// extracted by mini-css-extract-plugin\nexport default {\"PopoverLinkList\":\"lbTEfFSg\",\"Item\":\"zCNohEah\",\"Link\":\"mC4tFWoT\",\"LinkIcon\":\"CNL_aw_Y\"};","import { AccessibleIcon, Button, PopoverDialog, PopoverLinkList } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport { useState } from 'react';\n\nimport { ga4NavigationTracking } from '../../../../common/tracking/ga4/navigation';\nimport styles from './HeaderProfilePopover.module.less';\nimport type { ProfilePopoverLinkItem } from './HeaderProfilePopover.types';\n\nconst HeaderProfilePopover = (props: {\n items: ProfilePopoverLinkItem[];\n label: string;\n icon: React.FunctionComponent<React.SVGProps<SVGSVGElement>>;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleTriggerClick = (_isOpen: boolean) => {\n if (_isOpen) {\n setIsOpen(true);\n ga4NavigationTracking.savedItems.open();\n } else {\n setIsOpen(false);\n ga4NavigationTracking.savedItems.close();\n }\n };\n\n const handleListItemClick = (href: string, item: ProfilePopoverLinkItem) => {\n ga4NavigationTracking.savedItems.click(item.name, href);\n };\n\n return (\n <PopoverDialog.Dialog\n onOpenChange={handleTriggerClick}\n triggerSlot={\n <Button asChild asIcon theme=\"whiteOutline\" className={styles.Button}>\n <PopoverDialog.Trigger>\n <AccessibleIcon\n label={props.label}\n icon={isOpen ? CloseIcon : props.icon}\n />\n </PopoverDialog.Trigger>\n </Button>\n }\n >\n <PopoverLinkList.List>\n {props.items.map((item) => (\n <PopoverLinkList.Item key={item.name}>\n <PopoverLinkList.Link\n href={item.url}\n onPress={(e) => {\n handleListItemClick((e.target as HTMLAnchorElement).href, item);\n }}\n >\n <PopoverLinkList.LinkIcon className={styles.Icon} icon={item.icon} />\n {item.name}\n </PopoverLinkList.Link>\n </PopoverLinkList.Item>\n ))}\n </PopoverLinkList.List>\n </PopoverDialog.Dialog>\n );\n};\n\nexport default HeaderProfilePopover;\n","// extracted by mini-css-extract-plugin\nexport default {\"Button\":\"HtPD3RSm\",\"Icon\":\"VxeuNkeD\"};","import { Bag1Icon, HeartIcon, HomeIcon, PaperIcon } from '@coop/icons';\n\nimport { appConfig } from '../../../../../appConfig';\nimport type { ProfilePopoverLinkItem } from './HeaderProfilePopover.types';\n\nexport const links: ProfilePopoverLinkItem[] = [\n {\n name: 'Sparade varukorgar',\n url: appConfig.coopSettings.myCoop.savedCartListUrl,\n icon: Bag1Icon,\n },\n {\n name: 'Sparade inköpslistor',\n url: appConfig.coopSettings.myCoop.shoppingListPageUrl,\n icon: PaperIcon,\n },\n {\n name: 'Sparade recept',\n url: appConfig.coopSettings.myCoop.savedRecipesPageUrl,\n icon: HeartIcon,\n },\n {\n name: 'Favoritbutiker',\n url: appConfig.coopSettings.stores.mapStorePageUrl,\n icon: HomeIcon,\n },\n] as const;\n\nexport const b2bLinks: ProfilePopoverLinkItem[] = [\n {\n name: 'Sparade varukorgar',\n url: appConfig.coopSettings.myCoop.savedCartListUrl,\n icon: Bag1Icon,\n },\n {\n name: 'Sparade inköpslistor',\n url: appConfig.coopSettings.myCoop.shoppingListPageUrl,\n icon: PaperIcon,\n },\n] as const;\n","import { HeartIcon, Menu5Icon, OverviewIcon } from '@coop/icons';\nimport { useMemo } from 'react';\n\nimport { appConfig } from '../../../../../appConfig';\nimport { useIsB2BRoute } from '../../../../common/utils/b2bUtils';\nimport HeaderProfilePopover from './HeaderProfilePopover';\nimport { b2bLinks, links } from './HeaderProfilePopover.utils';\n\nexport const HeaderMyFavoritesDropdown = () => {\n const isB2BRoute = useIsB2BRoute();\n\n const items = useMemo(() => (isB2BRoute ? [...b2bLinks] : [...links]), [isB2BRoute]);\n\n return <HeaderProfilePopover items={items} label=\"Mina favoriter\" icon={HeartIcon} />;\n};\n\nexport const HeaderProfileDotDropdown = () => {\n const isB2BRoute = useIsB2BRoute();\n\n const items = useMemo(() => {\n const filteredLinks = isB2BRoute ? [...b2bLinks] : [...links];\n\n const overviewPageUrl = isB2BRoute\n ? appConfig.coopSettings.b2b.myCoopOverviewPage?.url\n : appConfig.coopSettings.myCoop.myBonusOverviewPageUrl;\n\n if (overviewPageUrl) {\n filteredLinks.unshift({\n name: 'Mitt Coop & Bonusöversikt',\n url: overviewPageUrl,\n icon: OverviewIcon,\n });\n }\n\n return filteredLinks;\n }, [isB2BRoute]);\n\n return <HeaderProfilePopover items={items} label=\"Min profil\" icon={Menu5Icon} />;\n};\n","import { Button } from '@coop/components';\n\nimport { useIsUserAuthenticated, useIsUserCompany } from '../../../common/hooks/useUserProfile';\nimport { ga4UserTracking } from '../../../common/tracking/ga4/user';\nimport { isInB2BCrossContext, useIsB2BRoute } from '../../../common/utils/b2bUtils';\nimport { getLoginUrl, getLoginUrlWithReturnUrl } from '../../../common/utils/urlUtils';\nimport MyCoopProfileFlyIn from '../MyCoopProfileFlyIn';\nimport CncTrigger from './CncTrigger';\nimport { HeaderMyFavoritesDropdown, HeaderProfileDotDropdown } from './HeaderProfileDropdown';\n\nconst ProfileNav = (props: { disableMyFavoritesMenu: boolean }) => {\n return (\n <>\n <div className=\"HeaderBanner-ProfileNav\">\n {!props.disableMyFavoritesMenu && <HeaderMyFavoritesDropdown />}\n <MyCoopProfileFlyIn />\n </div>\n <div className=\"HeaderBanner-ProfileDotNav\">\n {!props.disableMyFavoritesMenu ? (\n <HeaderProfileDotDropdown />\n ) : (\n <MyCoopProfileFlyIn />\n )}\n </div>\n </>\n );\n};\n\nconst HeaderRightNav = (props: {\n disableMyFavoritesMenu: boolean;\n stayAfterLoginLogoutRedirect: boolean;\n headerTheme: 'black' | 'darkGreen';\n}) => {\n const isAuthenticated = useIsUserAuthenticated();\n const isB2BRoute = useIsB2BRoute();\n const { companyUserOnPrivateSite, privateUserOnCompanySite } = isInB2BCrossContext({\n isB2BRoute,\n isUserCompany: useIsUserCompany(),\n isAuthenticated,\n });\n\n const onLoginClickTracking = () => {\n ga4UserTracking.login(null, 'start');\n };\n\n if (privateUserOnCompanySite) {\n return (\n <Button theme=\"primary\" asChild className=\"LoginButton\">\n <a\n rel=\"nofollow\"\n href={getLoginUrl('company', 'login')}\n onClick={onLoginClickTracking}\n >\n Logga in företag\n </a>\n </Button>\n );\n }\n\n if (companyUserOnPrivateSite) {\n return (\n <Button theme=\"primary\" asChild className=\"LoginButton\">\n <a\n rel=\"nofollow\"\n href={getLoginUrl('private', 'login')}\n onClick={onLoginClickTracking}\n >\n Logga in privat\n </a>\n </Button>\n );\n }\n\n return (\n <>\n {!isAuthenticated ? (\n <Button\n theme=\"primary\"\n asChild\n onClick={onLoginClickTracking}\n className=\"LoginButton\"\n >\n <a\n rel=\"nofollow\"\n href={getLoginUrlWithReturnUrl(\n isB2BRoute ? 'company' : 'private',\n 'none',\n props.stayAfterLoginLogoutRedirect,\n )}\n >\n Logga in\n </a>\n </Button>\n ) : (\n <ProfileNav disableMyFavoritesMenu={props.disableMyFavoritesMenu} />\n )}\n <CncTrigger badgeColor={props.headerTheme === 'darkGreen' ? 'white' : 'ctaGreen'} />\n </>\n );\n};\n\nexport default HeaderRightNav;\n","// extracted by mini-css-extract-plugin\nexport default {\"PositionTopRight\":\"WLHIcOiI\",\"is-animated\":\"BsyjQGCP\",\"Wrapper\":\"WaA3X7EF\",\"is-visible\":\"s6k7BeWp\",\"Tooltip\":\"bDxLqf80\",\"Heading\":\"at62Osnh\",\"Content\":\"AKn5li8_\",\"Footer\":\"MegBALFy\",\"Close\":\"vU8hKe7u\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport { Button, ChipIconButton } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type * as React from 'react';\nimport { useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport styles from './TooltipNotification.module.scss';\n\ntype RestrictedButtonProps = Omit<React.ComponentProps<typeof Button>, 'theme' | 'fullWidth'>;\n\ninterface TooltipNotificationProps {\n isOpen: boolean;\n close: () => void;\n header: string;\n content?: string;\n animated?: boolean;\n primaryButtonProps: RestrictedButtonProps;\n secondaryButtonProps: RestrictedButtonProps;\n}\n\nconst TooltipNotification = ({ animated = true, ...props }: TooltipNotificationProps) => {\n const transitionRef = useRef(null);\n\n return (\n <CSSTransition\n nodeRef={transitionRef}\n in={props.isOpen}\n timeout={animated ? 200 : 0}\n classNames={{\n enterActive: classNames(styles['is-visible']),\n enterDone: classNames(styles['is-visible']),\n }}\n appear\n unmountOnExit\n >\n <div\n ref={transitionRef}\n role=\"tooltip\"\n className={classNames(styles.Wrapper, animated && styles['is-animated'])}\n >\n <div className={styles.Tooltip}>\n <div className={styles.Heading}>{props.header}</div>\n <div className={styles.Content}>{props.content}</div>\n <div className={styles.Close}>\n <ChipIconButton\n theme=\"whiteGreen\"\n onClick={props.close}\n size={32}\n icon={CloseIcon}\n label=\"Stäng\"\n />\n </div>\n <div className={styles.Footer}>\n <Button {...props.primaryButtonProps} theme=\"primary\" fullWidth />\n <Button {...props.secondaryButtonProps} theme=\"primaryOutline\" fullWidth />\n </div>\n </div>\n </div>\n </CSSTransition>\n );\n};\n\nexport default TooltipNotification;\n","import { TooltipNotification } from '@coop/components';\nimport type { FC } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport { Cookies } from '../../../../utility/cookies';\nimport { COOKIE_LOGIN_REMINDER } from '../../../common/persistance/cookie/cookieKeys';\nimport { ga4UserTracking } from '../../../common/tracking/ga4/user';\nimport Tracking from '../../../common/tracking/tracking';\nimport { useIsB2BRoute } from '../../../common/utils/b2bUtils';\nimport { getCreateAccountUrl, getLoginUrlWithReturnUrl } from '../../../common/utils/urlUtils';\n\ninterface LoginReminderTooltipProps {\n stayAfterLoginLogoutRedirect: boolean;\n heading: string;\n content: string;\n}\n\nconst LoginReminderTooltip: FC<React.PropsWithChildren<LoginReminderTooltipProps>> = (props) => {\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n const isUserLoggedIn = appConfig.coopUserSettings.isAuthenticated;\n const hasSeenTooltipThisSession = () =>\n !!Cookies.read(COOKIE_LOGIN_REMINDER) ||\n window.abtest.loginReminderPopupShown === false;\n\n let handle: NodeJS.Timeout;\n if (!isUserLoggedIn && !hasSeenTooltipThisSession()) {\n handle = setTimeout(() => {\n if (!hasSeenTooltipThisSession()) {\n setShow(true);\n }\n }, 40000);\n }\n return () => {\n clearTimeout(handle);\n };\n }, []);\n\n const close = () => {\n Cookies.create(COOKIE_LOGIN_REMINDER, 'true');\n Tracking.header.loginReminder.close();\n\n setShow(false);\n };\n\n const isB2BRoute = useIsB2BRoute();\n\n const loginUrl = getLoginUrlWithReturnUrl(\n isB2BRoute ? 'company' : 'private',\n 'none',\n props.stayAfterLoginLogoutRedirect,\n );\n\n const createAccountUrl = getCreateAccountUrl(isB2BRoute ? 'company' : 'private');\n\n return (\n <TooltipNotification\n animated\n isOpen={show}\n close={close}\n header={props.heading}\n content={props.content}\n primaryButtonProps={{\n asChild: true,\n children: (\n <a\n rel=\"nofollow\"\n href={loginUrl}\n onClick={(e) => {\n e.preventDefault();\n Cookies.create(COOKIE_LOGIN_REMINDER, 'true');\n Tracking.header.loginReminder.goToLogin();\n ga4UserTracking.login(null, 'start');\n window.location.href = e.currentTarget.href;\n }}\n >\n Logga in\n </a>\n ),\n }}\n secondaryButtonProps={{\n asChild: true,\n children: (\n <a\n rel=\"nofollow\"\n href={createAccountUrl}\n onClick={() => {\n Cookies.create(COOKIE_LOGIN_REMINDER, 'true');\n Tracking.header.loginReminder.goToCreateAccount();\n }}\n >\n Skapa konto\n </a>\n ),\n }}\n />\n );\n};\n\nexport default LoginReminderTooltip;\n","import { appConfig } from '../../../../appConfig';\nimport { BrowserSize } from '../../../../utility/browser';\nimport { HeaderCartErrorNotice } from '../../../cart/components/molecules/CartErrorNotice';\nimport { useFromBrowserMediaQuery } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { useUserTypeQuery } from '../../../common/hooks/useUserType';\nimport { UserType } from '../../../common/store/structureDefinitions/userState';\nimport LoginReminderTooltip from '../LoginReminderTooltip';\nimport EpiQuickNavigatorButton from './EpiQuickNavigatorButton';\nimport type FeaturedNavigation from './FeaturedNavigation';\nimport HeaderBanner from './HeaderBanner';\nimport HeaderLeftNav from './HeaderLeftNav';\nimport HeaderRightNav from './HeaderRightNav';\n\nconst HeaderStickyBanner = (props: {\n featuredNavigation: {\n items: React.ComponentProps<typeof FeaturedNavigation>['items'];\n };\n headerTheme: 'darkGreen' | 'black';\n stayAfterLoginLogoutRedirect: boolean;\n searchSlot?: React.ReactNode;\n}) => {\n const isFromLarge = useFromBrowserMediaQuery(BrowserSize.lg);\n const hideLoginReminder = useAppSelector((state) => state.ui.shared.hideLoginReminder);\n\n const { data: userType } = useUserTypeQuery();\n const isPunchout = userType === UserType.punchout;\n\n const disableMyFavoritesMenu = isPunchout || appConfig.coopUserSettings.isShoppingForMunicipal;\n\n return (\n <>\n <HeaderBanner.Banner headerTheme={props.headerTheme}>\n <HeaderBanner.LeftSlot>\n {isFromLarge && (\n <HeaderBanner.LeftNav>\n <HeaderLeftNav\n disableSiteNavigation={false}\n navigationItems={props.featuredNavigation?.items}\n />\n </HeaderBanner.LeftNav>\n )}\n </HeaderBanner.LeftSlot>\n {props.searchSlot && (\n <HeaderBanner.CenterSlot>{props.searchSlot}</HeaderBanner.CenterSlot>\n )}\n <HeaderBanner.RightSlot>\n {isFromLarge && (\n <HeaderBanner.RightNav>\n <HeaderRightNav\n disableMyFavoritesMenu={disableMyFavoritesMenu}\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect}\n headerTheme={props.headerTheme}\n />\n </HeaderBanner.RightNav>\n )}\n </HeaderBanner.RightSlot>\n <EpiQuickNavigatorButton />\n </HeaderBanner.Banner>\n <div\n className=\"u-posAbsolute u-flex u-flexDirectionColumn u-flexGap12 u-paddingAsm\"\n style={{ right: 0 }}\n >\n {!hideLoginReminder && (\n <LoginReminderTooltip\n stayAfterLoginLogoutRedirect={props.stayAfterLoginLogoutRedirect}\n heading=\"Hej!\"\n content=\"Glöm inte att logga in för att se erbjudanden i ditt omrÃ¥de.\"\n />\n )}\n </div>\n <HeaderCartErrorNotice />\n </>\n );\n};\n\nexport default HeaderStickyBanner;\n","import { useElementEvent } from '@coop/hooks';\nimport { useCallback, useRef, useState } from 'react';\n\nimport { BrowserSize } from '../../../../utility/browser';\nimport { useFromBrowserMediaQuery } from '../../../common/components/atoms/ResponsiveBreakpoints';\n\ntype ScrollDirection = 'up' | 'down' | null;\n\nexport const useScrolDirection = () => {\n const [direction, setDirection] = useState<ScrollDirection>(null);\n\n const lastKnownPos = useRef(0);\n const checkDirection = useCallback(() => {\n const currentScroll = window.scrollY;\n const isScrolledToEnd =\n Math.abs(document.documentElement.scrollHeight - window.innerHeight - window.scrollY) <=\n 1;\n // scroll-bouncing in Safari has a nevative scrollY when it happens, dont trigger the state if scroll bouncing is detected\n if (currentScroll >= 0 && !isScrolledToEnd) {\n if (currentScroll > lastKnownPos.current) {\n setDirection('down');\n } else {\n setDirection('up');\n }\n lastKnownPos.current = currentScroll;\n }\n }, []);\n\n useElementEvent(window, 'scroll', checkDirection, true);\n\n return direction;\n};\n\nexport const useIsMobileHeader = () => {\n const isFromLarge = useFromBrowserMediaQuery(BrowserSize.lg);\n\n return !isFromLarge;\n};\n","import classNames from 'classnames';\nimport { type ReactNode, useRef } from 'react';\n\nimport { useDocumentPropertyHeightSetter } from '../../../common/hooks/useDocumentPropertyHeightSetter';\n\ninterface SearchInContentProps {\n searchSlot: ReactNode;\n}\n\nconst HeaderSearch = (props: SearchInContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n useDocumentPropertyHeightSetter('--headerSearchHeight', ref);\n\n return (\n <div ref={ref} className={classNames('HeaderSearch')} data-test=\"searchHeader\">\n {props.searchSlot && (\n <div role=\"search\" className=\"HeaderSearchBar\">\n {props.searchSlot}\n </div>\n )}\n </div>\n );\n};\n\nexport default HeaderSearch;\n","export interface HeaderAlert {\n heading: string;\n details: string;\n level: number;\n id: string;\n}\n\nexport const AlertLevels = [1, 2, 3, 4] as const;\n\nexport type AlertLevel = (typeof AlertLevels)[number];\n\n/**\n * Same as HeaderAlertsReactProps on backend\n */\nexport interface HeaderAlertsPortalDOMProps {\n alerts: HeaderAlert[];\n}\n","import { NoticeRibbonType } from '../../../common/components/atoms/NoticeRibbon';\nimport type { AlertLevel } from './HeaderAlerts.types';\nimport { AlertLevels } from './HeaderAlerts.types';\n\nexport const isAlertLevelSupported = (num: number): num is AlertLevel => {\n return AlertLevels.includes(num as AlertLevel);\n};\n\nexport const getNoticeTypeForAlertLevel = (level?: AlertLevel) => {\n switch (level) {\n case 4:\n return NoticeRibbonType.alertLevel4;\n case 3:\n return NoticeRibbonType.alertLevel3;\n case 2:\n return NoticeRibbonType.alertLevel2;\n case 1:\n return NoticeRibbonType.alertLevel1;\n default: {\n // eslint-disable-next-line no-console\n console.error('Unsupported alert level. Using Level1 as fallback');\n return NoticeRibbonType.alertLevel1;\n }\n }\n};\n","import type { FC, ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport NoticeRibbon from '../../../common/components/atoms/NoticeRibbon';\nimport persistance from '../../../common/persistance/persistance';\nimport type { AlertLevel } from './HeaderAlerts.types';\nimport { getNoticeTypeForAlertLevel } from './HeaderAlerts.utils';\n\ninterface AlertProps {\n id: string;\n level?: AlertLevel;\n details: ReactNode | string;\n children: ReactNode;\n}\n\nconst Alert: FC<React.PropsWithChildren<AlertProps>> = (props) => {\n const isDismissed = persistance.alertsDismissed.isDismissed(props.id);\n const [show, setShow] = useState(!isDismissed);\n\n const handleCloseClick = () => {\n persistance.alertsDismissed.dismiss(props.id);\n setShow(false);\n };\n\n return (\n <NoticeRibbon\n show={show}\n animated={false}\n handleCloseClick={handleCloseClick}\n blockClose={props.level === 1} // the VERY important messages can't be closed\n type={getNoticeTypeForAlertLevel(props.level)}\n expandableContent={props.details}\n >\n {props.children}\n </NoticeRibbon>\n );\n};\n\nexport default Alert;\n","import { type FC, useRef } from 'react';\n\nimport RawHtml from '../../../common/components/atoms/RawHtml';\nimport { useDocumentPropertyHeightSetter } from '../../../common/hooks/useDocumentPropertyHeightSetter';\nimport Alert from './Alert';\nimport type { HeaderAlert } from './HeaderAlerts.types';\nimport { isAlertLevelSupported } from './HeaderAlerts.utils';\n\ninterface HeaderAlertsProps {\n alerts: HeaderAlert[];\n}\n\nconst HeaderAlerts: FC<React.PropsWithChildren<HeaderAlertsProps>> = (props) => {\n const ref = useRef<HTMLDivElement>(null);\n useDocumentPropertyHeightSetter('--headerAlertsContainerHeight', ref);\n\n if (!props.alerts?.length) return null;\n return (\n <div ref={ref} className=\"HeaderAlerts\">\n {props.alerts.map((alert) => (\n <Alert\n key={alert.id}\n id={alert.id}\n level={isAlertLevelSupported(alert.level) ? alert.level : undefined}\n details={alert.details && <RawHtml html={alert.details} />}\n >\n <span className=\"u-textWeightBold\">\n <RawHtml html={alert.heading} />\n </span>\n </Alert>\n ))}\n </div>\n );\n};\n\nexport default HeaderAlerts;\n","import ComponentPortals from '../../../common/components/molecules/ComponentPortals';\nimport HeaderAlerts from './HeaderAlerts';\nimport type { HeaderAlertsPortalDOMProps } from './HeaderAlerts.types';\n\nconst HeaderAlertsPortal = () => {\n return (\n <ComponentPortals\n cmpName=\"HeaderAlerts\"\n render={(domProps: HeaderAlertsPortalDOMProps) => (\n <HeaderAlerts alerts={domProps.alerts} />\n )}\n />\n );\n};\n\nexport default HeaderAlertsPortal;\n","// extracted by mini-css-extract-plugin\nexport default {\"Button--bordered\":\"PDaCI9O9\",\"Button--solid\":\"Ly3sGWeB\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport { IconButton } from '@coop/components';\nimport * as React from 'react';\n\nimport styles from './HeaderIconButton.module.less';\n\nconst HeaderIconButton = React.forwardRef<\n HTMLButtonElement,\n Omit<React.ComponentProps<typeof IconButton>, 'theme'> & {\n theme: 'bordered' | 'solid';\n }\n>((props, ref) => {\n return (\n <IconButton\n ref={ref}\n {...props}\n theme=\"whiteOutline\"\n className={styles[`Button--${props.theme}`]}\n >\n {props.children}\n </IconButton>\n );\n});\n\nexport default HeaderIconButton;\n","import type { FC } from 'react';\nimport { useState } from 'react';\n\nimport NoticeRibbon, { NoticeRibbonType } from '../../../common/components/atoms/NoticeRibbon';\nimport RawHtml from '../../../common/components/atoms/RawHtml';\n\ninterface USPNoticeProps {\n text: string;\n}\n\n/**\n * Unique Selling Point notice bar\n */\nconst USPNotice: FC<React.PropsWithChildren<USPNoticeProps>> = (props) => {\n const [show, setShow] = useState(true);\n\n const close = () => {\n setShow(false);\n };\n\n if (!props.text) {\n return null;\n }\n\n return (\n <NoticeRibbon\n animated={false}\n show={show}\n type={NoticeRibbonType.info}\n handleCloseClick={close}\n >\n <RawHtml html={props.text} />\n </NoticeRibbon>\n );\n};\n\nexport default USPNotice;\n","import USPNotice from './USPNotice';\nimport type { USPNoticeType } from './USPNotices.types';\n\ninterface USPNoticesProps {\n data: USPNoticeType[];\n}\n\nconst USPNotices = (props: USPNoticesProps) => {\n if (!props.data?.length) return null;\n\n return (\n <div className=\"UspNotices\">\n {props.data.map((notice) => (\n <USPNotice key={notice.id} text={notice.text} />\n ))}\n </div>\n );\n};\n\nexport default USPNotices;\n","import React from 'react';\n\nimport { useDocumentPropertyHeightSetter } from '../../../common/hooks/useDocumentPropertyHeightSetter';\n\nconst HeaderNoticesContainer = (props: { children: React.ReactNode }) => {\n const ref = React.useRef<HTMLDivElement>(null);\n useDocumentPropertyHeightSetter('--headerNoticesContainerHeight', ref);\n\n return <div ref={ref}>{props.children}</div>;\n};\n\nexport default HeaderNoticesContainer;\n","import type { FC } from 'react';\n\nimport ComponentPortals from '../../../common/components/molecules/ComponentPortals';\nimport type { USPNoticeType } from '../USPNotices';\nimport USPNotices from '../USPNotices';\nimport HeaderNoticesContainer from './HeaderNoticesContainer';\n\ninterface HeaderNoticesDOMProps {\n uspNotices: USPNoticeType[];\n}\n\nconst HeaderNoticesPortal: FC<React.PropsWithChildren<unknown>> = (props) => {\n return (\n <ComponentPortals\n cmpName=\"HeaderNotices\"\n render={(domProps: HeaderNoticesDOMProps) => (\n <HeaderNoticesContainer>\n {props.children}\n <USPNotices data={domProps.uspNotices} />\n </HeaderNoticesContainer>\n )}\n />\n );\n};\n\nexport default HeaderNoticesPortal;\n","import * as React from 'react';\n\nexport const MainPageLayoutContext = React.createContext<\n | {\n /**\n * Example: ArticlePage or BlockListingPage used under EcommerceLayout\n */\n isInsideAnotherLayout: boolean;\n }\n | undefined\n>(undefined);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { SkipLinkTarget } from '../SkipLink';\nimport { MainPageLayoutContext } from './MainPageLayoutContext';\n\n/**\n * This is a layout component that should be used by all Coop.se pages, to ensure a consistent layout.\n */\nconst MainPageLayout = (\n props: React.PropsWithChildren<{\n heroSlot?: React.ReactNode;\n heroEdgeToEdge?: boolean;\n heroBleedViewport?: boolean;\n\n subHeroSlot?: React.ReactNode;\n sideMenuSlot?: React.ReactNode;\n\n disablePaddingOnMobile?: boolean;\n }>,\n) => {\n const hasSideBar =\n useAppSelector((state) => state.ui.shared.hasSideBar) && !!props.sideMenuSlot;\n\n const id = React.useId();\n\n const topMargin = classNames('u-marginTmd u-lg-marginTxlg');\n\n const parentContext = React.useContext(MainPageLayoutContext);\n const thisContext = React.useMemo(\n () => ({\n isInsideAnotherLayout: parentContext !== undefined,\n }),\n [parentContext],\n );\n\n if (thisContext.isInsideAnotherLayout) {\n return (\n <MainPageLayoutContext.Provider value={thisContext}>\n {!!props.heroSlot && (\n <LayoutHero\n id={id}\n edgeToEdge\n bleedViewport={props.heroBleedViewport}\n topMargin={undefined}\n disablePaddingOnMobile={props.disablePaddingOnMobile}\n >\n {props.heroSlot}\n </LayoutHero>\n )}\n\n <div id={`LayoutContentWrapper_${id}`}>\n <LayoutContent\n id={id}\n subHeroSlot={props.subHeroSlot}\n sideMenuSlot={props.sideMenuSlot}\n topMargin={props.heroSlot ? topMargin : undefined}\n >\n {props.children}\n </LayoutContent>\n </div>\n </MainPageLayoutContext.Provider>\n );\n }\n\n return (\n <MainPageLayoutContext.Provider value={thisContext}>\n {!!props.heroSlot && (\n <LayoutHero\n id={id}\n edgeToEdge={props.heroEdgeToEdge}\n bleedViewport={props.heroBleedViewport}\n topMargin={topMargin}\n disablePaddingOnMobile={props.disablePaddingOnMobile}\n >\n {props.heroSlot}\n </LayoutHero>\n )}\n\n <div\n id={`LayoutContentWrapper_${id}`}\n className={classNames(\n 'Main-container',\n 'Main-container--padding',\n hasSideBar && 'Main-container--full',\n props.disablePaddingOnMobile && 'Main-container--noPaddingOnMobile',\n topMargin,\n 'u-marginBxlg',\n )}\n >\n <LayoutContent\n id={id}\n subHeroSlot={props.subHeroSlot}\n sideMenuSlot={props.sideMenuSlot}\n topMargin={topMargin}\n >\n {props.children}\n </LayoutContent>\n </div>\n </MainPageLayoutContext.Provider>\n );\n};\n\nconst LayoutHero = (\n props: React.PropsWithChildren<{\n id: string;\n edgeToEdge: boolean | undefined;\n bleedViewport: boolean | undefined;\n topMargin: string | undefined;\n disablePaddingOnMobile: boolean | undefined;\n }>,\n) => (\n <div\n id={`LayoutHero_${props.id}`}\n className={classNames(\n 'Main-container',\n 'Main-container--fullBleed',\n props.edgeToEdge || props.bleedViewport\n ? 'Main-container--fullBleedViewport'\n : 'Main-container--padding Main-container--fullBleedXXlg',\n !props.edgeToEdge && props.topMargin,\n props.disablePaddingOnMobile && 'Main-container--noPaddingOnMobile',\n )}\n >\n {props.children}\n </div>\n);\n\nconst LayoutContent = (\n props: React.PropsWithChildren<{\n id: string;\n subHeroSlot: React.ReactNode | undefined;\n sideMenuSlot: React.ReactNode | undefined;\n topMargin: string | undefined;\n }>,\n) => {\n return (\n <>\n {!!props.subHeroSlot && props.subHeroSlot}\n\n {props.sideMenuSlot ? (\n <div\n id={`LayoutContent_${props.id}`}\n className={classNames(\n 'Grid Grid--gutterHxlg Grid--dynamicWidth',\n props.topMargin,\n )}\n >\n <div className=\"Grid-cell Grid-cell--fixedWidth u-hidden u-lg-block\">\n {props.sideMenuSlot}\n </div>\n <div className=\"Grid-cell Grid-cell--grownWidth u-block\">\n <SkipLinkTarget id=\"pageContent\">{props.children}</SkipLinkTarget>\n </div>\n </div>\n ) : (\n <div id={`LayoutContent_${props.id}`} className={props.topMargin}>\n {props.children}\n </div>\n )}\n </>\n );\n};\n\nexport default MainPageLayout;\n","import getLocalApiAxiosClient from '../../common/api/clients/localApiAxiosClient';\n\nexport interface MyCoopProfileMenuItem {\n id: number;\n name: string;\n url: string;\n icon: string;\n linkType: PageShortcutType;\n menuItemChildren: MyCoopProfileMenuItem[];\n}\n\nconst localContentApi = {\n getMyCoopProfileMenu: async () => {\n const response = await getLocalApiAxiosClient().get<MyCoopProfileMenuItem[]>(\n '/content/myCoop/profileMenu',\n );\n return response.data;\n },\n};\n\nexport default localContentApi;\n","import { useQuery } from '@tanstack/react-query';\n\nimport localContentApi from '../../../episerver/api/localContentApi';\nimport { myCoopProfileMenuKeys } from '../../../myCoop/myCoopQueries';\n\nexport const useMyCoopProfileMenu = () => {\n const query = useQuery({\n queryKey: myCoopProfileMenuKeys.all,\n queryFn: async () => {\n const pages = await localContentApi.getMyCoopProfileMenu();\n return pages;\n },\n staleTime: 1000 * 60 * 15, // 15 minutes\n });\n\n return query;\n};\n","import { IconButton, ModalHeader, Search, VisuallyHidden } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type { ReactNode } from 'react';\nimport * as React from 'react';\nimport { Suspense, useImperativeHandle, useRef } from 'react';\n\nimport { BrowserSize } from '../../../../utility/browser';\nimport { Modal } from '../../../common/components/atoms/Modal';\nimport { useFromBrowserMediaQuery } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { useSearchStateContext } from '../../../search/contexts/searchStateContext';\nimport styles from './SearchOverlay.module.less';\n\ninterface SearchOverlayProps {\n onEnterPress: () => void;\n children: ReactNode;\n onOutsideClick: () => void;\n onClearClick: () => void;\n inputPlaceholder: string;\n announcerSlot?: React.ReactNode;\n inputAriaLabel?: React.ComponentPropsWithoutRef<typeof Search>['aria-label'];\n inputDescription?: string;\n submitLabel: string;\n dangerouslyDisableFocusBackToTrigger?: boolean;\n onExiting?: () => void;\n}\n\nconst SearchOverlay = React.forwardRef<\n HTMLInputElement,\n React.PropsWithChildren<SearchOverlayProps>\n>((props, inputRef) => {\n const { query, isOpen, clear, setQuery, resetQuery, show } = useSearchStateContext();\n\n const isFromLarge = useFromBrowserMediaQuery(BrowserSize.lg);\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(inputRef, () => searchInputRef.current as HTMLInputElement);\n\n return (\n <Modal\n additionalClasses={styles.SearchOverlay}\n isOpen={isOpen}\n close={clear}\n initialFocusOnDialog={false}\n animation=\"fade\"\n afterOutsideClick={props.onOutsideClick}\n dangerouslyDisableFocusBackToTrigger={props.dangerouslyDisableFocusBackToTrigger}\n onExiting={props.onExiting}\n >\n <VisuallyHidden>\n <ModalHeader>Sökresultat</ModalHeader>\n </VisuallyHidden>\n <div\n className={classNames(\n styles.SearchBarWrapper,\n show && styles['SearchBarWrapper--hasResults'],\n )}\n >\n <Search\n ref={searchInputRef}\n submitLabel={props.submitLabel}\n inputText={query}\n setInputText={setQuery}\n size={isFromLarge ? 'large' : 'medium'}\n inputPlaceholder={props.inputPlaceholder}\n description={props.inputDescription}\n onEnterPress={props.onEnterPress}\n onEscapePress={clear}\n onReset={() => {\n resetQuery();\n searchInputRef.current?.focus();\n }}\n focusOnMount\n aria-label={props.inputAriaLabel}\n />\n <IconButton\n theme=\"primaryOutline\"\n icon={CloseIcon}\n label=\"Stäng\"\n size={40}\n onClick={() => {\n clear();\n props.onClearClick();\n }}\n />\n </div>\n {props.announcerSlot}\n <Suspense fallback={null}>\n {show && <div className={styles.SearchResults}>{props.children}</div>}\n </Suspense>\n </Modal>\n );\n});\nexport default SearchOverlay;\n","// extracted by mini-css-extract-plugin\nexport default {\"SearchOverlay\":\"ZgyFRuzM\",\"SearchBarWrapper\":\"A9IckKLf\",\"SearchBarWrapper--hasResults\":\"piJ1bTI2\",\"SearchResults\":\"cHXmyJRN\",\"Notice\":\"fKeUN46R\"};","const setProgramticFocusAttributes = (target: HTMLElement) => {\n target.setAttribute('tabIndex', '-1');\n target.setAttribute('style', 'outline: none');\n};\n\nexport const cleanUpProgramaticFocusAttributes = (target: HTMLElement) => {\n target.removeAttribute('tabIndex');\n target.removeAttribute('style');\n};\n\nexport const moveFocusProgramatically = (target: HTMLElement) => {\n setProgramticFocusAttributes(target);\n target.focus();\n target.scrollIntoView();\n};\n","import { Button } from '@coop/components';\nimport classNames from 'classnames';\nimport type React from 'react';\n\nimport styles from './SkipLink.module.scss';\n\nconst SkipButton = (props: {\n align?: 'start' | 'center';\n children: React.ReactNode;\n onClick?: () => void;\n asChild?: boolean;\n}) => {\n return (\n <Button\n theme=\"primaryOutline\"\n className={classNames(\n styles.SkipLink,\n props.align === 'center' && styles['SkipLink--centered'],\n 'u-noPrint',\n )}\n size={56}\n asChild={props.asChild}\n onClick={props.onClick}\n >\n {props.children}\n </Button>\n );\n};\n\nexport default SkipButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"SkipLink\":\"mQF5FL6p\",\"SkipLink--centered\":\"bZXogKDZ\"};","import type React from 'react';\n\nimport { moveFocusProgramatically } from '../../../common/utils/programaticFocus';\nimport type { SiteSkipLinkType } from './SiteSkipLinks';\nimport SkipButton from './SkipButton';\n\nconst SkipLink = (props: {\n href: `#${SiteSkipLinkType}`;\n align?: 'start' | 'center';\n children: React.ReactNode;\n}) => {\n return (\n <SkipButton align={props.align} asChild>\n <a\n href={props.href}\n onClick={(e) => {\n // Focus and scroll programmatically to avoid adding a #href to the current URL\n e.preventDefault();\n const target = document.querySelector(props.href) as HTMLElement | null;\n if (target) {\n moveFocusProgramatically(target);\n }\n }}\n >\n {props.children}\n </a>\n </SkipButton>\n );\n};\n\nexport default SkipLink;\n","import { useRef } from 'react';\n\nimport {\n cleanUpProgramaticFocusAttributes,\n moveFocusProgramatically,\n} from '../../../common/utils/programaticFocus';\n\nexport const useSkipLinkTarget = () => {\n const ref = useRef<HTMLDivElement>(null);\n\n const moveFocus = () => {\n if (ref.current) {\n moveFocusProgramatically(ref.current);\n }\n };\n\n const onBlurCapture = (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target === ref.current) {\n cleanUpProgramaticFocusAttributes(event.target as HTMLElement);\n }\n };\n\n return {\n ref,\n moveFocus,\n onBlurCapture,\n };\n};\n","import type { ReactNode } from 'react';\n\ntype SkipLinkContainerProps = {\n skipTriggerSlot?: ReactNode;\n endSlot?: ReactNode;\n children: ReactNode;\n};\n\nconst SkipLinkLayout = (props: SkipLinkContainerProps) => {\n return (\n <div className=\"u-isolate\">\n <div className=\"u-zIndex2 u-posRelative u-noPrint\">{props.skipTriggerSlot}</div>\n <div className=\"u-zIndex1 u-posRelative\">{props.children}</div>\n {props.endSlot}\n </div>\n );\n};\n\nexport default SkipLinkLayout;\n","import type { ReactNode } from 'react';\n\nimport SkipButton from './SkipButton';\nimport { useSkipLinkTarget } from './SkipLink.hooks';\nimport SkipLinkLayout from './SkipLinkLayout';\n\n/**\n * Provides a way to skip over a group of elements for A11y purposes.\n * It creates a SkipLink component at the beginning of a group and a focusable div at it's end.\n * When SkipLink is triggered, focus is moved to the focusable div.\n * The user can then go to next focusable item after the group.\n */\nconst SkipLinkScoped = ({\n align = 'start',\n skipLinkText,\n children,\n skipTargetText,\n}: {\n align?: 'start' | 'center';\n skipTargetText?: string;\n skipLinkText: string;\n children: ReactNode;\n}) => {\n const { ref, onBlurCapture, moveFocus } = useSkipLinkTarget();\n\n return (\n <SkipLinkLayout\n skipTriggerSlot={\n <SkipButton\n align={align}\n onClick={() => {\n moveFocus();\n }}\n >\n {skipLinkText}\n </SkipButton>\n }\n endSlot={\n <div className=\"u-hiddenVisually\" ref={ref} onBlurCapture={onBlurCapture}>\n {skipTargetText}\n </div>\n }\n >\n {children}\n </SkipLinkLayout>\n );\n};\n\nexport default SkipLinkScoped;\n","import { type PropsWithChildren } from 'react';\n\nimport type { SiteSkipLinkType } from './SiteSkipLinks';\nimport { useSkipLinkTarget } from './SkipLink.hooks';\n\nconst SkipLinkTarget = (props: PropsWithChildren<{ id: SiteSkipLinkType }>) => {\n const { ref, onBlurCapture } = useSkipLinkTarget();\n\n return (\n <div id={props.id} ref={ref} onBlurCapture={onBlurCapture}>\n {props.children}\n </div>\n );\n};\n\nexport default SkipLinkTarget;\n","// extracted by mini-css-extract-plugin\nexport default {\"UserModeSwitch\":\"LR_cbOR8\",\"UserMode\":\"curu4fhF\",\"UserModeActive\":\"cQDO5f0Y\",\"UserMode--topIndicator\":\"JOu10xf7\",\"UserModeSwitch--white\":\"sTbbms8U\",\"UserModeSwitch--green\":\"f1EqwMpN\"};","import classNames from 'classnames';\nimport { useLocation } from 'react-router-dom';\n\nimport { appConfig } from '../../../../appConfig';\nimport { ga4NavigationTracking } from '../../../common/tracking/ga4/navigation';\nimport { isAriaCurrentPage } from '../../../common/utils/accessibilityUtils';\nimport { useIsB2BRoute } from '../../../common/utils/b2bUtils';\nimport useReactRouting from '../../../ecommerce/hooks/useReactRouting';\nimport styles from './UserTypeModeSwitch.module.less';\n\ninterface UserTypeModeSwitchProps {\n theme: 'white' | 'green';\n}\n\n/**\n * Switch for B2B / B2C sites\n */\nconst UserTypeModeSwitch = (props: UserTypeModeSwitchProps) => {\n const { push } = useReactRouting();\n const isB2BRoute = useIsB2BRoute();\n const { pathname } = useLocation();\n\n return (\n <ul\n className={classNames(\n styles.UserModeSwitch,\n props.theme === 'white' && styles['UserModeSwitch--white'],\n props.theme === 'green' && styles['UserModeSwitch--green'],\n )}\n >\n <li\n className={classNames(\n styles.UserMode,\n styles['UserMode--topIndicator'],\n !isB2BRoute && styles.UserModeActive,\n )}\n >\n <a\n href={appConfig.coopSettings.b2c.startPage.url}\n onClick={(e) => {\n e.preventDefault();\n ga4NavigationTracking.headerNavigationClick(\n e.currentTarget.innerText,\n e.currentTarget.href,\n );\n push(e.currentTarget.href);\n }}\n aria-current={isAriaCurrentPage(\n appConfig.coopSettings.b2c.startPage.url,\n pathname,\n )}\n >\n Privat\n </a>\n </li>\n {!!appConfig.coopSettings.b2b.startPage && (\n <li\n className={classNames(\n styles.UserMode,\n styles['UserMode--topIndicator'],\n isB2BRoute && styles.UserModeActive,\n )}\n >\n <a\n href={appConfig.coopSettings.b2b.startPage.url}\n onClick={(e) => {\n e.preventDefault();\n ga4NavigationTracking.headerNavigationClick(\n e.currentTarget.innerText,\n e.currentTarget.href,\n );\n push(e.currentTarget.href);\n }}\n aria-current={isAriaCurrentPage(\n appConfig.coopSettings.b2b.startPage.url,\n pathname,\n )}\n >\n Företag\n </a>\n </li>\n )}\n </ul>\n );\n};\nexport default UserTypeModeSwitch;\n","// Sync with SearchOverlayCurrentPage on backend\nexport enum SearchFromPageType {\n StartPage = 'startpage',\n Ecommerce = 'ecommerce',\n Stores = 'stores',\n Recipes = 'recipes',\n Finance = 'finance',\n Member = 'member',\n Other = 'other',\n}\n","import { VisuallyHidden } from '@coop/components';\n\nimport { Helpers } from '../../../../utility/helpers';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { cartSelectors } from '../../../common/selectors/cartSelectors';\nimport cartItemsSelectors from '../../selectors/cartItemsSelectors';\n\nconst getCartSummaryAccessibilityText = (totalCartQuantity: number, totalPrice?: number) => {\n let cartCountLabel;\n if (totalCartQuantity === 0) {\n cartCountLabel = 'Din varukorg är tom';\n }\n if (totalCartQuantity === 1) {\n cartCountLabel = 'Totalt har du en vara i varukorgen';\n }\n\n if (totalCartQuantity > 1) {\n cartCountLabel = `Totalt har du ${totalCartQuantity} varor i varukorgen`;\n }\n\n let totalPriceLabel;\n if (totalPrice) {\n totalPriceLabel = `Totalpris är ${Helpers.toEcommercePriceWithCurrency(totalPrice)}`;\n }\n\n return `${[cartCountLabel, totalPriceLabel].filter(Boolean).join('. ')}`;\n};\n\ninterface CartSummaryAccessibilityLoggerProps {\n totalPrice?: number; // when we will be able to display cart value in CnCTrigger, this should be read from Redux instead\n}\n\nconst CartSummaryAccessibilityLogger = (props: CartSummaryAccessibilityLoggerProps) => {\n const totalCartQuantity = useAppSelector(cartItemsSelectors.selectCartQuantity);\n const cartIsInitialized = useAppSelector(cartSelectors.isCartInitialized);\n const cartIsLoading = useAppSelector((state) => state.cart.cartLoading.isLoading);\n\n // Update the text when cart is done loading, until then state will preseve the previous text\n const text =\n cartIsInitialized &&\n !cartIsLoading &&\n getCartSummaryAccessibilityText(totalCartQuantity, props.totalPrice);\n\n return (\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n {text}\n </VisuallyHidden>\n );\n};\n\nexport default CartSummaryAccessibilityLogger;\n","export const enum ExceptionCode {\n dinnerOnlyStore = 'dinnerOnlyStore',\n}\n\nexport interface ApiHybrisValidationException {\n errors: {\n message: string;\n reason: string;\n type: string;\n subject: string;\n }[];\n}\n\nexport type ApiExceptionType =\n | 'Default'\n | 'Validation'\n | 'OpenId'\n | 'Redirect'\n | 'BankId'\n | 'Cart'\n | 'BankIdCollect';\n\nexport interface ApiBaseException<TCode = string> {\n friendlyMessage: string;\n code: TCode | null;\n type: ApiExceptionType;\n}\n\nexport interface ValidationError<TCode = string> {\n field: string;\n friendlyMessage: string;\n code?: TCode | null;\n}\n\nexport interface ApiValidationException extends ApiBaseException {\n validationErrors: ValidationError[];\n type: 'Validation';\n}\n\nexport interface ApiCartException<TCode = string> extends ApiBaseException<TCode> {\n type: 'Cart';\n code: TCode | null;\n friendlyMessage: never;\n}\n\nexport interface ApiDefaultException extends ApiBaseException {\n field: string | null;\n type: 'Default';\n}\n\nexport interface ApiOpenIdException extends ApiBaseException {\n field: string;\n type: 'OpenId';\n redirectUrl: string;\n isOpenIdError: boolean;\n}\n\nexport interface ApiRedirectException extends ApiBaseException {\n type: 'Redirect';\n redirectUrl: string;\n}\n\nexport type ApiException =\n | ApiDefaultException\n | ApiValidationException\n | ApiOpenIdException\n | ApiCartException\n | ApiRedirectException;\n","import type { FC } from 'react';\n\nimport NoticeRibbon, { NoticeRibbonType } from '../../../common/components/atoms/NoticeRibbon';\nimport type { ApiBaseException } from '../../../common/exceptions/exceptionDefinitions';\nimport { ExceptionCode } from '../../../common/exceptions/exceptionDefinitions';\nimport { useGroupError } from '../../../common/hooks/useGroupError';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { modalSelectors } from '../../../common/selectors/modalSelectors';\nimport { ErrorGroup } from '../../../common/store/structureDefinitions/errorsState';\n\nexport const HeaderCartErrorNotice: FC<React.PropsWithChildren<unknown>> = () => {\n const isAnyModalOpen = useAppSelector(modalSelectors.isAnyModalOpen);\n return <CartErrorNotice additionalShowCondition={() => !isAnyModalOpen} fixed={false} />;\n};\n\ninterface CartErrorNoticeProps {\n additionalShowCondition?: (error: ApiBaseException) => boolean;\n fixed?: boolean;\n}\n\nconst CartErrorNotice: FC<React.PropsWithChildren<CartErrorNoticeProps>> = (props) => {\n const handleCloseClick = () => {\n clearGroupErrors();\n };\n\n const { firstError: cartError, clearGroupErrors } = useGroupError(ErrorGroup.Cart);\n\n const show = (error: ApiBaseException | null) => {\n const condition =\n props.additionalShowCondition && !!error ? props.additionalShowCondition(error) : true;\n\n return (\n condition && !!error?.friendlyMessage && error.code !== ExceptionCode.dinnerOnlyStore\n );\n };\n\n return (\n <NoticeRibbon\n type={NoticeRibbonType.warning}\n show={show(cartError)}\n handleCloseClick={handleCloseClick}\n hideAfterMiliseconds={5000}\n fixed={props.fixed}\n ariaLive=\"assertive\"\n >\n {cartError?.friendlyMessage}\n </NoticeRibbon>\n );\n};\n\nexport default CartErrorNotice;\n","import classnames from 'classnames';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport type { AnalyticsListOptions } from '../../../../../analytics/analyticsHandler';\nimport CloudinaryImage from '../../../../common/components/atoms/CloudinaryImage';\nimport { ConditionalMultipleWrappers } from '../../../../common/components/atoms/ConditionalWrapper';\nimport { ItemMedicalInfo } from '../../../../common/components/atoms/MedicalInfo';\nimport {\n getFormattedComparativePrice,\n getFormattedPackagingInfo,\n} from '../../../../common/utils/productUtils';\nimport MaxPromotionUsage from '../../../../ecommerce/components/MaxPromotionUsage';\n\ninterface ProductListingItemProps {\n innerRef?: React.Ref<HTMLLIElement>;\n name?: string;\n packageSizeInformation?: string;\n variantName?: string;\n image?: string;\n manufacturer?: string;\n productUrl?: string;\n additionalClassNames?: string;\n slotLeft?: ReactNode;\n slotPrice?: ReactNode;\n slotSplash?: ReactNode;\n analyticsOptions: AnalyticsListOptions | null;\n bottomRow?: ReactNode;\n handleLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n comparativePrice?: number;\n comparativeText?: string;\n isNicotineProduct: boolean;\n isPharmaceutical: boolean;\n promotion?: EcomPromotion;\n isOutOfStock?: boolean;\n isALink?: boolean;\n}\n\nconst ProductListingItem = ({\n isALink = true,\n ...props\n}: React.PropsWithChildren<ProductListingItemProps>) => {\n return (\n <li ref={props.innerRef} className={classnames('Cart-item', props.additionalClassNames)}>\n <div className={classnames('Cart-itemRow', props.isOutOfStock && 'u-textLineThrough')}>\n {props.slotLeft}\n <div className={classnames('Cart-itemContainer', 'Cart-itemContainerWrapped')}>\n <div className=\"Cart-itemRow Cart-itemRowPrimary\">\n <div\n className={classnames(\n 'Cart-itemWrapperImage',\n !!props.slotSplash && 'Cart-itemWrapperImageWithPromo',\n )}\n >\n <ProductItemImage\n productUrl={props.productUrl}\n handleLinkClick={props.handleLinkClick}\n image={props.image}\n name={props.name}\n isALink={isALink}\n />\n {props.slotSplash && (\n <div className=\"Cart-itemSplash\">{props.slotSplash}</div>\n )}\n </div>\n <div className=\"Cart-itemWrapper\">\n <div className=\"Cart-itemWrapperProduct\">\n <div className=\"Cart-itemWrapperDetail\">\n <ProductItemInfo\n productUrl={props.productUrl}\n name={props.name}\n manufacturer={props.manufacturer}\n variantName={props.variantName}\n packageSizeInformation={props.packageSizeInformation}\n comparativePrice={props.comparativePrice}\n comparativeText={props.comparativeText}\n handleLinkClick={props.handleLinkClick}\n isNicotineProduct={props.isNicotineProduct}\n isPharmaceutical={props.isPharmaceutical}\n promotion={props.promotion}\n isALink={isALink}\n />\n </div>\n <div className=\"Cart-itemWrapperPrice\">{props.slotPrice}</div>\n </div>\n {!!props.children && (\n <div className=\"Cart-itemRow\">\n <div className=\"Cart-itemWrapperActions\">{props.children}</div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n {!!props.bottomRow && <div className=\"Cart-itemRow\">{props.bottomRow}</div>}\n </li>\n );\n};\n\ninterface ProductItemInfoProps {\n productUrl?: string;\n handleLinkClick?: React.MouseEventHandler<HTMLAnchorElement>;\n name?: string | ReactElement;\n manufacturer?: string;\n variantName?: string;\n packageSizeInformation?: string;\n comparativePrice?: number;\n comparativeText?: string;\n isNicotineProduct?: boolean;\n isPharmaceutical?: boolean;\n promotion?: EcomPromotion;\n isALink?: boolean;\n}\n\nconst ProductItemInfo = ({\n productUrl,\n handleLinkClick,\n name,\n manufacturer,\n variantName,\n packageSizeInformation,\n comparativePrice,\n comparativeText,\n isNicotineProduct,\n isPharmaceutical,\n promotion,\n isALink = true,\n}: ProductItemInfoProps) => {\n const packagingInfo = getFormattedPackagingInfo(variantName, packageSizeInformation);\n\n const comparativePriceFormatted = getFormattedComparativePrice(\n comparativePrice,\n comparativeText,\n );\n\n return (\n <div className=\"u-flexAlignSelfCenter u-textLeft\">\n <ConditionalMultipleWrappers\n choices={[\n {\n condition: !!productUrl && isALink,\n renderWrapper: (ch) => (\n <a\n href={productUrl}\n className=\"Cart-itemHeading Cart-itemHeading--link\"\n style={{ whiteSpace: 'normal' }}\n onClick={handleLinkClick}\n data-test=\"cart-productitem-name\"\n tabIndex={-1}\n >\n {ch}\n </a>\n ),\n },\n {\n condition: !isALink || !productUrl,\n renderWrapper: (ch) => (\n <div\n className=\"Cart-itemHeading\"\n style={{ whiteSpace: 'normal' }}\n data-test=\"cart-productitem-name\"\n >\n {ch}\n </div>\n ),\n },\n ]}\n >\n {name}\n </ConditionalMultipleWrappers>\n <p\n className=\"Cart-itemSubtitle Cart-itemSubtitleWrapped\"\n style={{ whiteSpace: 'normal' }}\n >\n {manufacturer && (\n <span className=\"u-textWeightBold\">\n {`${manufacturer}`}\n {manufacturer && '. '}\n </span>\n )}\n {!!packagingInfo && (\n <span>\n {packagingInfo}\n {!!comparativePriceFormatted && '. '}\n </span>\n )}\n {!!comparativePriceFormatted && <span>{comparativePriceFormatted}</span>}\n {!!promotion?.maxUseText && <MaxPromotionUsage text={promotion.maxUseText} />}\n </p>\n <ItemMedicalInfo isNicotine={isNicotineProduct} isPharmaceutical={isPharmaceutical} />\n </div>\n );\n};\n\ninterface ProductItemImageProps {\n productUrl?: string;\n handleLinkClick?: React.MouseEventHandler<HTMLAnchorElement>;\n image?: string;\n name?: string;\n isALink?: boolean;\n}\n\nconst ProductItemImage = ({\n productUrl,\n handleLinkClick,\n image,\n name,\n isALink = true,\n}: ProductItemImageProps) => {\n return (\n <ConditionalMultipleWrappers\n choices={[\n {\n condition: !!productUrl && isALink,\n renderWrapper: (ch) => (\n <a href={productUrl} className=\"u-block\" onClick={handleLinkClick}>\n {ch}\n </a>\n ),\n },\n {\n condition: !isALink || !productUrl,\n renderWrapper: (ch) => ch,\n },\n ]}\n >\n <CloudinaryImage\n cssClass=\"Cart-itemImage\"\n url={image}\n name={name || ''}\n transform=\"e_sharpen,f_auto,fl_clip,fl_progressive,q_90,c_lpad,g_center,h_68,w_68\"\n retinaTransform=\"e_sharpen,f_auto,fl_clip,fl_progressive,q_70,c_lpad,g_center,h_136,w_136\"\n fallbackUrl=\"/Assets/Images/missing-image-product.png\"\n />\n </ConditionalMultipleWrappers>\n );\n};\n\nexport default ProductListingItem;\n\nexport const ProductListItem = {\n Image: ProductItemImage,\n Info: ProductItemInfo,\n};\n","import type { AnalyticsListOptions } from '../../../../../analytics/analyticsHandler';\nimport type { SwiperBreakpoints } from '../../../../../utility/coopSwiperBreakpoints';\nimport { Helpers } from '../../../../../utility/helpers';\nimport ProductPrice from '../../../../common/components/atoms/ProductPrice';\nimport EcomPromoSplash from '../../../../common/components/molecules/EcomPromoSplash';\nimport ProductSubstitutes from '../../../../common/components/molecules/ProductSubstitutes';\nimport type { PriceData } from '../../../../common/models/priceData/priceData';\nimport { PriceType } from '../../../../common/models/priceData/priceData';\nimport { mapProductToEcomPromotion } from '../../../../common/utils/productUtils';\nimport ProductListingItem from '../ProductListingItem';\n\ninterface RecipeItemProps {\n priceData: PriceData;\n totalPriceData: PriceData;\n name: string;\n packageSizeInformation: string;\n image?: string;\n manufacturer?: string;\n selectedVarianceCode?: string;\n}\n\ninterface RecipeProductListingItemProps {\n recipeProduct: RecipeItemProps;\n product?: ApiProduct;\n recipeProductSubstitutes: ApiProduct[];\n isSubstituteActive: boolean;\n buyable: boolean;\n handleSubstituteChange: (product: ApiProduct) => void;\n productSubstitutesBreakpoints: SwiperBreakpoints;\n analyticsOptions?: AnalyticsListOptions;\n additionalClassNames?: string;\n isConstrained?: boolean;\n priceType: PriceType;\n}\n\nconst RecipeProductListingItem = ({\n recipeProduct: recipeProductItem,\n product,\n recipeProductSubstitutes,\n isSubstituteActive,\n buyable,\n children,\n handleSubstituteChange,\n additionalClassNames,\n analyticsOptions,\n productSubstitutesBreakpoints,\n isConstrained,\n priceType,\n}: React.PropsWithChildren<RecipeProductListingItemProps>) => {\n const getVariantName = () => {\n if (recipeProductItem.selectedVarianceCode && product) {\n const variant = product.variants?.find(\n (_variant) => _variant.id === recipeProductItem.selectedVarianceCode,\n );\n\n return variant?.name;\n }\n\n return undefined;\n };\n\n const productPromotion = mapProductToEcomPromotion(product);\n\n return (\n <>\n <ProductListingItem\n slotPrice={\n buyable && (\n <div className=\"Cart-itemSummary\">\n <span className=\"Cart-itemPrice\">\n {/* Use price with tax for recipes and weekly menu */}\n <ProductPrice\n totalPrice={recipeProductItem.totalPriceData}\n priceType={priceType}\n align=\"right\"\n showExcludingTaxInfo={false}\n />\n </span>\n {priceType === PriceType.ExcludeTax && (\n <span className=\"u-flex u-textXXXSmall u-flexJustifyEnd u-textWeightNormal\">\n {Helpers.getPriceTypeText(priceType)}\n </span>\n )}\n </div>\n )\n }\n slotSplash={\n productPromotion && (\n <EcomPromoSplash promotion={productPromotion} priceType={priceType} />\n )\n }\n isNicotineProduct={!!product?.details?.isNicotineProduct}\n isPharmaceutical={!!product?.details?.pharmaceuticalData?.isPharmaceutical}\n name={product?.name || recipeProductItem.name}\n packageSizeInformation={recipeProductItem.packageSizeInformation}\n variantName={getVariantName()}\n image={recipeProductItem.image}\n manufacturer={product?.manufacturer || recipeProductItem.manufacturer}\n additionalClassNames={additionalClassNames}\n analyticsOptions={null}\n >\n {children}\n </ProductListingItem>\n {isSubstituteActive && (\n <div\n className=\"u-borderBottomGrayLight2 u-bgGrayLight\"\n style={{ position: 'relative', overflow: 'hidden' }}\n >\n <ProductSubstitutes\n productSubstitutesBreakpoints={productSubstitutesBreakpoints}\n substitutes={recipeProductSubstitutes}\n handleProductSubstitution={handleSubstituteChange}\n analyticsOptions={analyticsOptions}\n isConstrained={isConstrained}\n priceType={priceType}\n />\n </div>\n )}\n </>\n );\n};\n\nexport default RecipeProductListingItem;\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { CartItem } from '../../common/api/cart/responses/cartResponses';\nimport { productsAdapter } from '../../common/store/adapters/productsAdapter';\nimport { recipesAdapter } from '../../common/store/adapters/recipesAdapter';\nimport type {\n CartItemState,\n CartItemUniqueId,\n RootState,\n} from '../../common/store/structureDefinitions/cartState';\n\nconst getCartItems = (state: RootState) => state.cart.items;\nconst getCartRecipes = (state: RootState) => state.cart.recipes;\nconst getCartSummary = (state: RootState) => state.cart.summary;\nconst getCartSections = (state: RootState) => state.cart.sections;\nconst selectCartQuantity = (state: RootState) =>\n state.cart.items.reduce((prev, next) => prev + next.quantity, 0);\n\nconst cartItemsProductDataSelectors = productsAdapter.getSelectors(\n (state: RootState) => state.cart.itemsProductData,\n);\n\nconst cartRecipeSelectors = recipesAdapter.getSelectors(getCartRecipes);\n\nconst selectCartItemProductDataById = cartItemsProductDataSelectors.selectById;\n\nconst selectAllCartItemProductData = cartItemsProductDataSelectors.selectAll;\n\nconst selectAllCartItems = createSelector(\n getCartItems,\n selectAllCartItemProductData,\n (cartItems, productData) => {\n const merged = cartItems.map<CartItem>((cartItem) => ({\n cartItemData: cartItem,\n productData: productData.find((product) => product.id === cartItem.productId),\n }));\n\n return merged;\n },\n);\n\nconst hasAgeRestrictedProducts = createSelector(selectAllCartItems, (cartItems) => {\n const cartItemWithAgeRestriction = cartItems.find(\n (cartItem) =>\n !!cartItem.productData &&\n cartItem.productData.details.attributes.some(\n (attr) => attr.identifier === '18' || attr.identifier === '18arlakemedel',\n ),\n );\n\n return !!cartItemWithAgeRestriction;\n});\n\nconst hasRecipeItems = createSelector(getCartItems, (cartItems) => {\n const isAnyItemFromRecipe = cartItems.some((ci) => !!ci.recipeMetaData);\n return isAnyItemFromRecipe;\n});\n\nconst selectCartItemsIds = createSelector(getCartItems, (items) =>\n items.map(\n (item): CartItemUniqueId => ({\n productId: item.productId,\n variantId: item.variantId,\n }),\n ),\n);\n\nconst selectCartItemProductIds = createSelector(selectCartItemsIds, (products): string[] => {\n return (\n products?.map((entity) => entity.productId.toString() || undefined).filter(Boolean) || []\n );\n});\n\nconst selectCartItemsIdsForRecipeId = createSelector(\n getCartItems,\n (_: RootState, recipeId: string) => recipeId,\n (items, recipeId): CartItemUniqueId[] =>\n items\n .filter(\n (item: CartItemState) =>\n item.recipeMetaData && item.recipeMetaData.code === recipeId,\n )\n .map(\n (item: CartItemState): CartItemUniqueId => ({\n productId: item.productId,\n variantId: item.variantId,\n }),\n ),\n);\n\nexport const cartItemUniqueIdPredicate = <T extends CartItemUniqueId>(\n item: T,\n cartItemId: CartItemUniqueId,\n) =>\n item.productId === cartItemId.productId &&\n (!cartItemId.variantId || (!!cartItemId.variantId && item.variantId === cartItemId.variantId));\n\nconst selectCartItemByUniqueId = createSelector(\n getCartItems,\n (_: RootState, cartItemId: CartItemUniqueId) => cartItemId,\n (items, cartItemId) => items.find((item) => cartItemUniqueIdPredicate(item, cartItemId)),\n);\n\nconst selectAllItemsReplaceability = createSelector(getCartItems, (items) =>\n items.every((item) => item.itemReplaceable),\n);\n\nconst selectSomeItemsReplaceability = createSelector(getCartItems, (items) =>\n items.some((item) => item.itemReplaceable),\n);\n\nconst selectFilteredVariants = createSelector(\n getCartItems,\n (_: RootState, cartItem: CartItemState | undefined) => cartItem,\n (items, cartItem) => {\n if (!cartItem) return [];\n\n const sameProductCartItems = items.filter(\n (ci) => ci.productId === cartItem.productId && ci.variantId !== cartItem.variantId,\n );\n let filteredVariants = cartItem.variants;\n if (sameProductCartItems && cartItem.variants) {\n filteredVariants = cartItem.variants.filter(\n (variant) => !sameProductCartItems.some((spci) => spci.variantId === variant.id),\n );\n }\n return filteredVariants;\n },\n);\n\nconst selectCartItemsIdsForSectionId = createSelector(\n getCartSections,\n getCartItems,\n (_: RootState, sectionId: number) => sectionId,\n (sections, items, sectionId) => {\n const cartSection = sections.find((section) => section.sectionId === sectionId);\n return (\n cartSection &&\n items\n .filter((item) =>\n cartSection.productIds\n ?.filter(Boolean)\n .some((productId) => item.productId === productId),\n )\n .map(\n (item: CartItemState): CartItemUniqueId => ({\n productId: item.productId,\n variantId: item.variantId,\n }),\n )\n );\n },\n);\n\nconst getEditedOrderItems = (state: RootState) => state.cart.editedOrderItems;\nconst getPreviousOrderItemIds = (state: RootState) => state.cart.previousOrderItemIds;\n\nconst selectChangedItemsCount = createSelector(\n [getEditedOrderItems],\n (cartItems) => cartItems.length,\n);\n\nconst getEditOrderSectionItems = createSelector(\n [getPreviousOrderItemIds, getCartItems],\n (previousItemIds, cartItems) => {\n const cartItemIds = cartItems.map(\n (item): CartItemUniqueId => ({\n productId: item.productId,\n variantId: item.variantId,\n }),\n );\n\n let previouslyBoughtCartItemIds = cartItemIds.filter((cartItem) =>\n previousItemIds.some(\n (previousItem) =>\n previousItem.productId === cartItem.productId &&\n previousItem.variantId === cartItem.variantId,\n ),\n );\n\n let newlyBoughtCartItemIds = cartItemIds.filter((cartItem) =>\n previousItemIds.every(\n (previousItem) =>\n previousItem.productId !== cartItem.productId ||\n previousItem.variantId !== cartItem.variantId,\n ),\n );\n\n if (\n cartItemIds.length !==\n (newlyBoughtCartItemIds?.length || 0) + (previouslyBoughtCartItemIds?.length || 0)\n ) {\n newlyBoughtCartItemIds = cartItemIds;\n previouslyBoughtCartItemIds = [];\n }\n\n return { newlyBoughtCartItemIds, previouslyBoughtCartItemIds };\n },\n);\n\nconst getIsLargeQuantityOrder = createSelector(getCartItems, (items) =>\n items.some((item) => item.quantity >= 50),\n);\n\nconst cartItemsSelectors = {\n selectCartSummary: getCartSummary,\n selectCartQuantity,\n selectAllCartItems,\n selectIds: selectCartItemsIds,\n selectCartItemProductIds,\n selectById: selectCartItemByUniqueId,\n selectProductDataById: selectCartItemProductDataById,\n selectAllProductData: selectAllCartItemProductData,\n selectIdsForRecipeId: selectCartItemsIdsForRecipeId,\n selectCartRecipes: cartRecipeSelectors.selectAll,\n selectIdsForSectionId: selectCartItemsIdsForSectionId,\n selectAllItemsReplaceability,\n selectSomeItemsReplaceability,\n selectFilteredVariants,\n editOrder: { selectChangedItemsCount },\n getEditOrderSectionItems,\n getIsLargeQuantityOrder,\n hasAgeRestrictedProducts,\n hasRecipeItems,\n};\n\nexport default cartItemsSelectors;\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { recipesAdapter } from '../../common/store/adapters/recipesAdapter';\nimport type { RootState } from '../../common/store/structureDefinitions/cartState';\n\nconst recipeSelectors = recipesAdapter.getSelectors((state: RootState) => state.cart.recipes);\nconst selectNonEmptyRecipes = createSelector(recipeSelectors.selectAll, (cartRecipes) =>\n cartRecipes.filter((x) => !!x.productsMap?.length),\n);\n\nconst selectNonEmptyRecipeIds = createSelector(selectNonEmptyRecipes, (cartRecipes) =>\n cartRecipes.map((item) => item.code),\n);\nconst selectNonEmptyRecipebyId = createSelector(\n selectNonEmptyRecipes,\n (_: RootState, recipeId: string) => recipeId,\n (cartRecipes, recipeId) => cartRecipes.find((item) => item.code === recipeId),\n);\n\nconst hasFoodboxInCart = createSelector(recipeSelectors.selectAll, (cartRecipes) =>\n cartRecipes.some((r) => r.group === 'foodbox'),\n);\n\nconst cartRecipeSelectors = {\n all: recipeSelectors,\n nonEmpty: {\n selectAll: selectNonEmptyRecipes,\n selectIds: selectNonEmptyRecipeIds,\n selectById: selectNonEmptyRecipebyId,\n },\n hasFoodboxInCart,\n};\n\nexport default cartRecipeSelectors;\n","import { useCallback } from 'react';\n\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { uiSelectors } from '../../../common/selectors/uiSelectors';\nimport gaTracking from '../../../common/tracking/tracking';\n\nexport const useNavigationTracking = () => {\n const currentStep = useAppSelector(uiSelectors.cnc.selectCurrentStep);\n\n const sendGaGoBackTrackingEvent = useCallback(() => {\n if (currentStep) {\n gaTracking.cnc.header.navigationGoBack(currentStep);\n }\n }, [currentStep]);\n\n const sendGaCloseTrackingEvent = useCallback(() => {\n if (currentStep) {\n gaTracking.cnc.header.navigationClose(currentStep);\n }\n }, [currentStep]);\n\n return { sendGaGoBackTrackingEvent, sendGaCloseTrackingEvent };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-underscore-dangle */\ninterface QueueObject<T> {\n promise: Promise<T>;\n queueFunc: () => Promise<void>;\n uniqueName?: string;\n}\n\ninterface RunOptions<T> {\n /** If this is set, all the functions with the same name will be resolved as one */\n uniqueName?: string;\n /** if this is set, unique methods wont be pushed to the back of the queue when added */\n dontPushBack?: boolean;\n /** what should happen when the event should be pushed back but is running already */\n alreadyRunning?: (promise?: Promise<T>) => void;\n\n /** accept task that is running on top of queue */\n acceptRunningPromise?: boolean;\n}\n\nclass SyncronQueue {\n private _queue: Array<QueueObject<any>>;\n\n private _timeout: number = 20000;\n\n constructor() {\n this._queue = [];\n }\n\n /**\n *\n * @param func function that should be unique\n * @param isUnique this function must be unique, if not, put last in queue\n */\n run<T>(func: () => Promise<T>, options?: RunOptions<T>): Promise<T> {\n if (options && options.uniqueName) {\n const index = this._queue.findIndex((queue) => queue.uniqueName === options.uniqueName);\n\n if (index > 0) {\n if (!options.dontPushBack) {\n const existingQueueItem = this._queue.splice(index, 1);\n this._queue.push(existingQueueItem[0]);\n return existingQueueItem[0].promise;\n }\n return this._queue[index].promise;\n }\n if (index === 0 && this._queue.length === 1) {\n return this._queue[0].promise;\n }\n if (index === 0 && this._queue.length > 1) {\n if (options) {\n if (options.acceptRunningPromise) {\n return this._queue[0].promise;\n }\n // we are not gona push this back because event is running, trigger event\n options?.alreadyRunning?.(this._queue[0].promise);\n }\n }\n }\n\n let queueFunc: () => Promise<void>;\n const promise = new Promise<T>((resolve, reject) => {\n queueFunc = () => {\n const timer = setTimeout(() => {\n reject(new Error('Anropet tog för lÃ¥ng tid'));\n }, this._timeout);\n return func()\n .then((t) => resolve(t))\n .catch((r) => reject(r))\n .finally(() => {\n clearTimeout(timer);\n });\n };\n }).finally(() => {\n this._queue.shift(); // remove the finished job\n\n if (this._queue.length > 0) {\n // start next one in queue\n try {\n this._queue[0].queueFunc();\n // eslint-disable-next-line no-empty\n } catch {}\n }\n });\n\n if (this._queue.length === 0) {\n // @ts-ignore\n queueFunc();\n }\n\n this._queue.push({\n promise,\n // @ts-ignore\n queueFunc,\n uniqueName: options && options.uniqueName,\n });\n\n return promise;\n }\n}\n\nexport { SyncronQueue };\n","import axios from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport { SyncronQueue } from '../SyncronQueue';\nimport type { AuthAnonymous, AuthIdentity } from './authIdentity';\n\nexport const spaTopkenApiUrl = '/api/spa/token';\n\nconst spaTokenApi = {\n getToken: async (): Promise<AuthIdentity> => {\n const response = await axios.get(`${spaTopkenApiUrl}${'?_='}${new Date().getTime()}`);\n return response.data;\n },\n cancelImpersonation: async (): Promise<AuthIdentity> => {\n const response = await axios.get(\n `${'/api/spa/impersonate/cancel?_='}${new Date().getTime()}`,\n );\n return response.data;\n },\n impersonateUser: async (request: {\n userToImpersonate: string;\n userIdentifierType: string;\n }): Promise<AuthIdentity> => {\n const response = await axios.post(`${'/api/spa/impersonate?_='}${new Date().getTime()}`, {\n userToImpersonate: request.userToImpersonate,\n userIdentifierType: request.userIdentifierType,\n });\n return response.data;\n },\n};\n\nconst SESSION_STORAGE_USER_IDENTITY = 'user.identity';\nconst tokenFetchQueue = new SyncronQueue();\n\n/** resets authtoken, makes system fetch a new one when needed */\nexport const resetAuthToken = () => {\n window.sessionStorage.removeItem(SESSION_STORAGE_USER_IDENTITY);\n};\n\nexport const cleanTokenSessionStorageIfNeeded = () => {\n const userIdentityRaw = window.sessionStorage.getItem(SESSION_STORAGE_USER_IDENTITY);\n\n if (userIdentityRaw) {\n const userIdentity = JSON.parse(userIdentityRaw) as AuthIdentity;\n\n const isStoredUserIdOutOfSync =\n appConfig.coopUserSettings.userId !== userIdentity?.userId ||\n appConfig.coopUserSettings.shoppingUserId !== userIdentity?.shoppingUserId;\n\n const isUserLoggedIn = appConfig.coopUserSettings.isAuthenticated;\n\n if (!isUserLoggedIn || isStoredUserIdOutOfSync) {\n window.sessionStorage.removeItem(SESSION_STORAGE_USER_IDENTITY);\n }\n }\n};\nconst getAuthTokenOrDefault = async (): Promise<AuthIdentity | AuthAnonymous> => {\n if (!appConfig.coopUserSettings.isAuthenticated) {\n return {\n isBankId: false,\n shoppingUserId: 'anonymous',\n token: undefined,\n };\n }\n\n return getAuthToken();\n};\n/** Only return token if its in cache, otherwise it will be null */\nconst getCachedAuthToken = () => {\n const userIdentityRaw = window.sessionStorage.getItem(SESSION_STORAGE_USER_IDENTITY);\n\n if (userIdentityRaw) {\n const userIdentity = JSON.parse(userIdentityRaw) as AuthIdentity;\n const { userId, shoppingUserId, at } = appConfig.coopUserSettings;\n if (\n userIdentity &&\n userIdentity.expires &&\n Date.parse(userIdentity.expires) > Date.now() + 30 * 1000 && // If token is expired or will expire within 30 seconds\n userId === userIdentity.userId &&\n shoppingUserId === userIdentity.shoppingUserId &&\n at === userIdentity.at\n ) {\n return userIdentity;\n }\n window.sessionStorage.removeItem(SESSION_STORAGE_USER_IDENTITY);\n }\n return undefined;\n};\n\n/** Will fail if user is not signed in */\nconst getAuthToken = async (): Promise<AuthIdentity> => {\n const userIdentity = getCachedAuthToken();\n if (userIdentity) {\n return userIdentity;\n }\n\n const spaToken = await tokenFetchQueue.run(\n async () => {\n const token = await spaTokenApi.getToken();\n window.sessionStorage.setItem(SESSION_STORAGE_USER_IDENTITY, JSON.stringify(token));\n return token;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'getspatoken' },\n );\n\n return spaToken;\n};\n\nconst impersonateUser = async (params: {\n userToImpersonate: string;\n userIdentifierType: string;\n}) => {\n const token = await spaTokenApi.impersonateUser(params);\n window.sessionStorage.setItem(SESSION_STORAGE_USER_IDENTITY, JSON.stringify(token));\n return token;\n};\n\nconst cancelImpersonation = async () => {\n const token = await spaTokenApi.cancelImpersonation();\n window.sessionStorage.removeItem(SESSION_STORAGE_USER_IDENTITY);\n return token;\n};\n\nexport {\n cancelImpersonation,\n getAuthToken,\n getAuthTokenOrDefault,\n getCachedAuthToken,\n impersonateUser,\n};\n","import { createDefaultException } from '../../exceptions/exceptionUtils';\nimport type { ApiValidateCartError, HybrisApiError } from '../clients/directHybrisAxiosClient';\nimport type { AxiosException } from '../clients/localApiAxiosErrorInterceptors';\n\nconst validateCartErrorInterceptor = (\n error: AxiosException<HybrisApiError<ApiValidateCartError>>,\n) => {\n if (!Array.isArray(error?.response.data.errors)) {\n return null;\n }\n\n const firstError = error.response.data.errors[0];\n switch (firstError.errorCode) {\n // this errorcode is returned by the validation endpoint, to force it, login with punchout, go to last step, empty cart in another window, click \"skicka varukorg\"\n // https://external-qa.api.coop.se/ecommerce/coop/users/8000002/carts/current/validation\n case 'TOTAL_NOT_VALID':\n return createDefaultException(\n 'Av nÃ¥gon anledning är ditt ordervärde för lÃ¥gt för att lägga en order. Fyll gärna pÃ¥ med nÃ¥got mer du behöver för att uppnÃ¥ gränsen!',\n firstError.errorCode,\n );\n default:\n return null;\n }\n};\n\nexport default validateCartErrorInterceptor;\n","import type { HybrisCartEntry } from '../../models/hybris/hybrisCart';\nimport type {\n PaymentCode,\n SubscriptionFrequency,\n} from '../../store/structureDefinitions/checkoutState';\nimport type { InvoiceAddress, UserAddress } from '../../store/structureDefinitions/userState';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\nimport type {\n ApiAddMultipleRecipesRequest,\n ApiAddMultipleRecipesResponse,\n} from '../recipe/recipeModels';\nimport type { ApiModifyCartItemRequest } from './requests/cartRequests';\nimport type {\n ApiCart,\n ApiCreatePunchoutReponse,\n ApiEditPaymentResponse,\n ApiGetPaymentMethodsResponse,\n ApiHmpPayment,\n ApiIntrumPayment,\n ApiKobePayment,\n ApiStoreDeliveryOptions,\n ApiSubstituteProductResponse,\n ApiValidationCartResponse,\n} from './responses/cartResponses';\nimport validateCartErrorInterceptor from './validateCartErrorInterceptor';\n\nconst fetchCart = async () => {\n const response = await hybrisAxiosClient.get<ApiCart>(`/carts/current`);\n return response.data;\n};\n\nconst fetchCartSimple = async () => {\n const response = await hybrisAxiosClient.get<ApiCart>(`/carts/current/simple`);\n return response.data;\n};\n\nconst emptyCart = () => hybrisAxiosClient.delete(`/carts/current/empty`);\n\nconst buyMultipleRecipes = async (request: ApiAddMultipleRecipesRequest) => {\n const response = await hybrisAxiosClient.post<ApiAddMultipleRecipesResponse>(\n `carts/current/recipes`,\n request,\n );\n return response.data;\n};\n\nconst changeCartItemVariant = (request: ApiModifyCartItemRequest): Promise<void> =>\n hybrisAxiosClient.put(`carts/current/items`, request);\n\nconst changeRecipePortions = (recipeId: string, portions: number) =>\n hybrisAxiosClient.put(`carts/current/recipe/${recipeId}/portions/${portions}`);\n\nconst removeRecipe = async (recipeId: string): Promise<void> =>\n hybrisAxiosClient.delete(`carts/current/recipe/${recipeId}`);\n\nconst getProductSubstitutes = async (rowId: string) => {\n const substituteProducts = await hybrisAxiosClient.get<{ id: string }[]>(\n `/carts/current/recipe/${rowId}`,\n );\n return substituteProducts.data;\n};\n\nconst substituteProduct = async (\n rowId: string,\n productId: number | string,\n): Promise<ApiSubstituteProductResponse> => {\n const response = await hybrisAxiosClient.post<ApiSubstituteProductResponse>(\n `/carts/current/recipe/${encodeURI(rowId)}/${productId}`,\n );\n\n return response.data;\n};\n\nconst applyVoucher = async (voucherId: string): Promise<void> => {\n await hybrisAxiosClient.post(`/carts/current/vouchers/${encodeURI(voucherId)}`);\n};\n\nconst removeVoucher = async (voucherId: string): Promise<void> => {\n await hybrisAxiosClient.delete(`/carts/current/vouchers/${encodeURI(voucherId)}`);\n};\n\nconst getDeliveryAddressList = async (): Promise<UserAddress[]> => {\n const response = await hybrisAxiosClient.get('/carts/current/addresses/delivery/list');\n return response.data;\n};\n\nconst getDeliveryAddress = async (): Promise<UserAddress> => {\n const response = await hybrisAxiosClient.get('/carts/current/address/delivery');\n return response.data;\n};\n\nconst setDeliveryAddress = async (id: string): Promise<UserAddress> => {\n const response = await hybrisAxiosClient.put(\n `/carts/current/address/delivery?addressId=${encodeURIComponent(id)}`,\n );\n return response.data;\n};\n\nconst removeDeliveryAddress = async (id: string): Promise<void> => {\n await hybrisAxiosClient.put(\n `/carts/current/address/delivery?addressId=${encodeURIComponent(id)}`,\n );\n};\n\nconst getPostalCodeDeliveryOptions = async (\n postalCode: string,\n): Promise<ApiStoreDeliveryOptions> => {\n const response = await hybrisAxiosClient.get(\n `/carts/current/deliveryOptions?postalCode=${postalCode}`,\n );\n return response.data;\n};\n\nconst getDriverMessage = async (): Promise<string> => {\n const response = await hybrisAxiosClient.get<{\n driverMessage: string;\n }>('/carts/current/driverMessage');\n return response.data?.driverMessage;\n};\n\nconst setDriverMessage = async (driverMessage: string): Promise<void> => {\n await hybrisAxiosClient.put('/carts/current/driverMessage', { driverMessage });\n};\n\nconst listPaymentMethods = async (): Promise<ApiGetPaymentMethodsResponse> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethods');\n return response.data;\n};\n\nconst setPaymentMethod = async (code: PaymentCode): Promise<void> => {\n await hybrisAxiosClient.put(\n `carts/current/paymentmethod?paymentMethod=${encodeURIComponent(code)}`,\n );\n};\n\n// matkonto and kobe use the same init endpoint!?\nconst initializeMatkontoPayment = async (): Promise<ApiKobePayment> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/matkonto');\n return response.data;\n};\n// matkonto and kobe use the same init endpoint!?\nconst initializeKobePayment = async (): Promise<ApiKobePayment> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/kobe');\n return response.data;\n};\nconst initializeIntrumPayment = async (): Promise<ApiIntrumPayment> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/intrum');\n return response.data;\n};\nconst initializeHmpPayment = async (): Promise<ApiHmpPayment> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/hmp');\n return response.data;\n};\nconst initializeEdiPayment = async (): Promise<ApiIntrumPayment> => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/edi');\n return response.data;\n};\n\n/** Cart should be validated before sent to punchout, i think we also could use this one for \"normal orders\" */\nconst validateCart = async ({\n userId,\n token,\n}: {\n userId: string;\n token: string;\n}): Promise<ApiValidationCartResponse> => {\n const response = await getDirectHybrisAxiosClient(token, [\n validateCartErrorInterceptor,\n ]).post<ApiValidationCartResponse>(`users/${userId}/carts/current/validation`);\n return response.data;\n};\n\n// samlingsfaktura uses the same endpoint as Intrum\nconst initializeSamlingsFakturaPayment = async () => {\n const response = await hybrisAxiosClient.get('carts/current/paymentmethod/init/intrum');\n return response.data;\n};\n\nconst initializeKlarnaPayment = async (\n newSession: boolean,\n subscriptionFrequency: SubscriptionFrequency | null,\n): Promise<string> => {\n const response = await hybrisAxiosClient.post(\n `carts/current/klarna?newSession=${newSession}&subscription=${!!subscriptionFrequency}&frequency=${\n subscriptionFrequency ? subscriptionFrequency.toString() : ''\n }`,\n );\n return response.data;\n};\n\nconst editPayment = async (): Promise<ApiEditPaymentResponse> => {\n const response = await hybrisAxiosClient.put('carts/current/payment/edit');\n return response.data;\n};\n\nconst getBillingAddress = async (): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.get('carts/current/address/billing');\n return response.data;\n};\n\nconst setBillingAddress = async (addressId: string): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.put(\n `carts/current/address/billing?addressId=${encodeURIComponent(addressId)}`,\n );\n return response.data;\n};\n\nconst removeBillingAddress = async (): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.delete('carts/current/address/billing');\n return response.data;\n};\n\nconst setItemsReplaceability = async (arg: { replaceAll: boolean }): Promise<void> => {\n await hybrisAxiosClient.put('/carts/current/replaceAll', arg);\n};\n\n/* cart?fields=FULL does not return this field so we cannot just refetch cart :O \nbut we can ask just for requisitionExpireTime from current cart, \naltho we should have this field either in fields=FULL always or a separate endpoint like with driver message\n*/\nconst getRequisitionExpireTime = (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).get<{ requisitionExpireTime: string }>(\n `users/${userId}/carts/current?fields=requisitionExpireTime`,\n );\n\n return response.data;\n};\n\n/* cart?fields=FULL does not return this field so we cannot just refetch cart :O \nbut we can ask just for internalReference from current cart, \naltho we should have this field either in fields=FULL always or a separate endpoint like with driver message\n*/\nconst getInternalReference = (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).get<{ internalReference: string }>(\n `users/${userId}/carts/current?fields=internalReference`,\n );\n\n return response.data;\n};\n\nconst setInternalReference =\n (token: string) => async (userId: string, internalReference: string) => {\n await getDirectHybrisAxiosClient(token).put(\n `users/${userId}/carts/current/punchout/internalreference`,\n {\n internalreference: internalReference,\n },\n );\n };\n\nconst getContactPhoneNumber = (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).get<{ phone: string }>(\n `users/${userId}/carts/current/punchout/contact`,\n );\n\n return response.data;\n};\n\nconst setContactPhoneNumber = (token: string) => async (userId: string, phone: string) => {\n await getDirectHybrisAxiosClient(token).put(`users/${userId}/carts/current/punchout/contact`, {\n phone,\n });\n};\n\n// not sure yet if we need this\nconst createPunchout = (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).post<ApiCreatePunchoutReponse>(\n `users/${userId}/carts/current/punchout/requisition`,\n );\n\n return response.data;\n};\n\nexport const validateAssortmentApiUrl = (userId: string) =>\n `users/${userId}/carts/current/entries/not-in-assortment`;\n\nconst validateAssortment = (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).get<{\n orderEntries: HybrisCartEntry[];\n }>(validateAssortmentApiUrl(userId));\n\n return response.data;\n};\n\nconst deliveryAddresses = {\n fetchAll: getDeliveryAddressList,\n select: setDeliveryAddress,\n remove: removeDeliveryAddress,\n current: getDeliveryAddress,\n};\n\nconst billingAddress = {\n select: setBillingAddress,\n remove: removeBillingAddress,\n current: getBillingAddress,\n};\n\nconst punchout = {\n getInternalReference,\n setInternalReference,\n create: createPunchout,\n getRequisitionExpireTime,\n validateCart,\n getContactPhoneNumber,\n setContactPhoneNumber,\n};\n\nconst recipes = {\n buyMultipleRecipes,\n removeRecipe,\n substituteProduct,\n getProductSubstitutes,\n changeRecipePortions,\n};\n\nconst voucher = {\n add: applyVoucher,\n remove: removeVoucher,\n};\n\nconst driverMessage = {\n get: getDriverMessage,\n set: setDriverMessage,\n};\n\nconst payment = {\n list: listPaymentMethods,\n set: setPaymentMethod,\n initializeMatkontoPayment,\n initializeKobePayment,\n initializeIntrumPayment,\n initializeHmpPayment,\n initializeEdiPayment,\n initializeKlarnaPayment,\n initializeSamlingsFakturaPayment,\n edit: editPayment,\n};\n\nconst cartApi = {\n deliveryAddresses,\n recipes,\n changeCartItemVariant,\n fetchCart,\n fetchCartSimple,\n getPostalCodeDeliveryOptions,\n voucher,\n driverMessage,\n setItemsReplaceability,\n payment,\n billingAddress,\n emptyCart,\n punchout,\n validateAssortment,\n};\n\nexport default cartApi;\n","export const HEADER_SITE_MODE = 'Coop-Site-Mode';\n","import type { ApiException } from '../../exceptions/exceptionDefinitions';\nimport {\n createDefaultException,\n isLocalApiKnownException,\n isLocalApiOpenIdException,\n isLocalRedirectApiException,\n} from '../../exceptions/exceptionUtils';\n\nexport interface AxiosException<T> {\n response: { data: T; status: number };\n}\n\n// Interceptors job is to convert API's custom error into ApiException that frontend can understand and rely on when implementing error handling\nexport type CustomErrorInterceptor<TApiError = unknown> = (\n error: AxiosException<TApiError>,\n) => ApiException | null;\n\nexport const defaultApiErrorInterceptor =\n <TApiError = unknown>(customInterceptors?: CustomErrorInterceptor<TApiError>[]) =>\n (error: AxiosException<TApiError>): Promise<ApiException> => {\n const defaultException = createDefaultException();\n\n // No response but there was an HTTP error, then create generic exception\n if (!error.response) {\n return Promise.reject(defaultException);\n }\n\n let exception = defaultException;\n const interceptors = customInterceptors?.filter(Boolean) || [];\n\n for (let i = 0; i < interceptors.length; i += 1) {\n const interceptorResult = interceptors[i](error);\n\n if (interceptorResult) {\n exception = interceptorResult;\n break;\n }\n }\n\n return Promise.reject(exception);\n };\n\n// In our local API we know whats the structure, so its immediately the right TS type\nexport const localApiExceptionInterceptor: CustomErrorInterceptor = (error) => {\n if (isLocalApiKnownException(error.response.data)) {\n return error.response.data;\n }\n\n return null;\n};\n\nexport const localApiOpenIdInterceptor: CustomErrorInterceptor = (error) => {\n const { data } = error.response;\n if (isLocalApiOpenIdException(data)) {\n if (data.isOpenIdError && data.redirectUrl) {\n setTimeout(() => {\n window.location.href = data.redirectUrl;\n }, 3000);\n }\n\n const defaultException = createDefaultException();\n return defaultException;\n }\n\n return null;\n};\n\nexport const localApiRedirectInterceptor: CustomErrorInterceptor = (error) => {\n const { data } = error.response;\n if (isLocalRedirectApiException(data)) {\n if (data.redirectUrl) {\n setTimeout(() => {\n window.location.href = data.redirectUrl;\n }, 3000);\n }\n\n const defaultException = createDefaultException(data.friendlyMessage);\n return defaultException;\n }\n\n return null;\n};\n","import type { AxiosRequestConfig } from 'axios';\nimport axios from 'axios';\n\nimport { isB2BWindowLocation } from '../../utils/b2bUtils';\nimport { HEADER_SITE_MODE } from '../headerKeys';\nimport type { CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\nimport {\n defaultApiErrorInterceptor,\n localApiExceptionInterceptor,\n localApiOpenIdInterceptor,\n} from './localApiAxiosErrorInterceptors';\n\nconst internalCreateClient = <TError = unknown>(\n config?: AxiosRequestConfig,\n customErrorInterceptors?: CustomErrorInterceptor<TError>[],\n) => {\n const clientInstance = axios.create(config);\n\n clientInstance.interceptors.response.use((response) => {\n return response;\n }, defaultApiErrorInterceptor(customErrorInterceptors));\n\n return clientInstance;\n};\n\n/**\n * Direct APIs are the ones that don't go through our servers, but they go directly from the browser to external APIs\n */\nconst createDirectApiClient = <TApiError = unknown>(\n config?: AxiosRequestConfig,\n customErrorInterceptors?: CustomErrorInterceptor<TApiError>[],\n) => {\n const clientInstance = internalCreateClient(config, customErrorInterceptors);\n return clientInstance;\n};\n\n/**\n * Local API is the one that goes through our coop.se servers\n */\nconst createLocalApiClient = <TError = unknown>(\n config?: AxiosRequestConfig,\n customErrorInterceptors?: CustomErrorInterceptor<TError>[],\n) => {\n let errorInterceptors: CustomErrorInterceptor<TError>[] = [\n localApiExceptionInterceptor,\n localApiOpenIdInterceptor,\n ];\n if (customErrorInterceptors) {\n errorInterceptors = [...errorInterceptors, ...customErrorInterceptors];\n }\n\n const newConfig = {\n ...(config || {}),\n headers: {\n ...(config?.headers || {}),\n [HEADER_SITE_MODE]: isB2BWindowLocation() ? 'company' : 'private',\n },\n };\n\n const clientInstance = internalCreateClient(newConfig, errorInterceptors);\n return clientInstance;\n};\n\nconst axiosClientFactory = {\n createDirectApiClient,\n createLocalApiClient,\n};\n\nexport default axiosClientFactory;\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from './clientFactory';\nimport type { CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\n\nconst getDirectAdobeCampaignAxiosClient = <TApiError = unknown>(\n accessToken?: string,\n neoId?: string,\n errorInterceptors?: CustomErrorInterceptor<TApiError>[],\n): AxiosInstance => {\n const directShoppingListAxiosClient = axiosClientFactory.createDirectApiClient(\n {\n baseURL: appConfig.coopSettings.serviceAccess.apimBaseUrl,\n headers: {\n Authorization: neoId ? `adobe ${btoa(neoId)}` : `Bearer ${accessToken}`,\n },\n params: {\n 'api-version': 'v1',\n },\n },\n errorInterceptors,\n );\n\n return directShoppingListAxiosClient;\n};\n\nexport default getDirectAdobeCampaignAxiosClient;\n","import { appConfig } from '../../../../appConfig';\nimport type { ApiCartException } from '../../exceptions/exceptionDefinitions';\nimport { createDefaultException } from '../../exceptions/exceptionUtils';\nimport axiosClientFactory from './clientFactory';\nimport type { AxiosException, CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\n\nexport const getUserIdUrlSegment = (userId: string): string => {\n return userId || 'anonymous';\n};\n\nconst getDirectHybrisAxiosClient = <TException extends ApiHybrisErrors>(\n accessToken?: string,\n errorInterceptors?: CustomErrorInterceptor<HybrisApiError<TException>>[],\n) => {\n const directHybrisAxiosClient = axiosClientFactory.createDirectApiClient<\n HybrisApiError<TException>\n >(\n {\n baseURL: `${appConfig.coopSettings.serviceAccess.hybrisApiUrl}/coop`,\n headers: {\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.hybrisApiSubscriptionKey,\n Accept: 'application/json',\n 'Ocp-Apim-Trace': 'true',\n Authorization: accessToken ? `Bearer ${accessToken}` : undefined,\n },\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.hybrisApiVersion,\n },\n },\n [...(errorInterceptors || []), hybrisErrorInterceptor],\n );\n return directHybrisAxiosClient;\n};\n\nconst hybrisErrorInterceptor = <TException extends ApiHybrisErrors>(\n error: AxiosException<HybrisApiError<TException>>,\n) => {\n if (!Array.isArray(error?.response.data.errors)) {\n return null;\n }\n\n const hybrisErrors = error.response.data.errors;\n for (let i = 0; i < hybrisErrors.length; i += 1) {\n const hybrisError = hybrisErrors[i];\n if (isApiHybrisBaseError(hybrisError)) {\n if (hybrisError.type === 'CartError') {\n return <ApiCartException>{\n type: 'Cart',\n code: hybrisError.reason,\n friendlyMessage: 'Unable to find cart.',\n };\n }\n if (hybrisError.type === 'StoreNotFoundError') {\n return <ApiCartException>{\n type: 'Cart',\n code: 'StoreNotFound',\n friendlyMessage: 'Kunde inte hitta butiken.',\n };\n }\n if (\n hybrisError.type === 'ValidationError' &&\n hybrisError.subjectType === 'Cart' &&\n hybrisError.reason === 'TIME_WINDOW_NOT_VALID'\n ) {\n return <ApiCartException>{\n type: 'Cart',\n code: hybrisError.reason,\n friendlyMessage:\n 'Din reserverade tid är tyvärr ej längre tillgänglig. Varorna finns kvar i din varukorg, sÃ¥ reservera gärna en ny tid och försök igen.',\n };\n }\n\n if (\n hybrisError.type === 'ValidationError' &&\n hybrisError.subjectType === 'Cart' &&\n hybrisError.reason === 'TOTAL_NOT_VALID'\n ) {\n return <ApiCartException>{\n type: 'Cart',\n code: hybrisError.reason,\n friendlyMessage:\n 'Av nÃ¥gon anledning är ditt ordervärde för lÃ¥gt för att lägga en order. Fyll gärna pÃ¥ med nÃ¥got mer du behöver för att uppnÃ¥ gränsen!',\n };\n }\n }\n }\n\n return createDefaultException();\n};\n\nexport interface HybrisApiError<T> {\n errors: T[];\n}\n\nexport interface ApiHybrisBaseError {\n message: string;\n reason: string;\n subjectType: string;\n type: string;\n}\n\nexport interface ApiValidateCartError {\n errorCode: string;\n errorMessage: string;\n}\n\nexport const isApiHybrisBaseError = (error: unknown): error is ApiHybrisBaseError => {\n return (error as ApiHybrisBaseError)?.type !== undefined;\n};\n\nexport type ApiHybrisErrors = ApiHybrisBaseError | ApiValidateCartError;\nexport default getDirectHybrisAxiosClient;\n","import getLocalApiAxiosClient from './localApiAxiosClient';\n\nconst hybrisAxiosClient = getLocalApiAxiosClient({\n baseURL: '/api/hybris',\n});\n\nexport default hybrisAxiosClient;\n","import type { AxiosRequestConfig } from 'axios';\n\nimport axiosClientFactory from './clientFactory';\n\nconst getLocalApiAxiosClient = (config?: AxiosRequestConfig) => {\n const localApiAxiosClient = axiosClientFactory.createLocalApiClient({\n baseURL: '/api/',\n ...config,\n });\n\n return localApiAxiosClient;\n};\n\nexport default getLocalApiAxiosClient;\n","import { createDefaultException } from '../../exceptions/exceptionUtils';\nimport {\n type ApiHybrisErrors,\n type HybrisApiError,\n isApiHybrisBaseError,\n} from '../clients/directHybrisAxiosClient';\nimport type { AxiosException } from '../clients/localApiAxiosErrorInterceptors';\n\nexport const editOrderErrorInterceptor = <TException extends ApiHybrisErrors>(\n error: AxiosException<HybrisApiError<TException>>,\n) => {\n if (!Array.isArray(error?.response.data.errors)) {\n return null;\n }\n\n const hybrisErrors = error.response.data.errors;\n for (let i = 0; i < hybrisErrors.length; i += 1) {\n const hybrisError = hybrisErrors[i];\n if (isApiHybrisBaseError(hybrisError)) {\n if (hybrisError.type === 'PaymentError') {\n return createDefaultException(\n 'Uppdatering misslyckades hos Klarna.',\n 'KLARNA_PAYMENT_FAILED',\n );\n }\n if (hybrisError.type === 'PaymentUpdateNotAllowedError') {\n return createDefaultException(\n 'Uppdatering ej tillÃ¥ten.',\n 'PAYMENT_UPDATE_NOT_ALLOWED',\n );\n }\n }\n }\n\n // let it flow to global hybrisInterceptor\n return null;\n};\n","import type { AxiosRequestConfig } from 'axios';\n\nimport type { HybrisOrder } from '../../models/hybris/hybrisOrder';\nimport type { HybrisOrderHistory } from '../../models/hybris/hybrisOrderHistory';\nimport type { SubscriptionFrequency } from '../../store/structureDefinitions/checkoutState';\nimport getDirectHybrisAxiosClient, {\n getUserIdUrlSegment,\n} from '../clients/directHybrisAxiosClient';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\nimport { editOrderErrorInterceptor } from './orderErrorInterceptors';\n\nconst getOrdersBaseUrl = (userId: string): string => `users/${getUserIdUrlSegment(userId)}/orders`;\n\nexport const orderDirectApi = {\n getOrderById:\n (token: string, fields?: string) =>\n async (userId: string, orderId: string): Promise<HybrisOrder> => {\n const axiosConfig: AxiosRequestConfig | undefined = fields\n ? { params: { fields } }\n : undefined;\n\n const response = await getDirectHybrisAxiosClient(token).get<HybrisOrder>(\n `${getOrdersBaseUrl(userId)}/${orderId}`,\n axiosConfig,\n );\n const resp = response.data;\n return resp;\n },\n\n getOrderHistory:\n (spaToken: string) => async (userId: string, currentPage: number, pageSize: number) => {\n const queryString = new URLSearchParams();\n queryString.append('currentPage', currentPage.toString());\n queryString.append('pageSize', pageSize.toString());\n queryString.append('fields', 'FULL');\n\n const response = await getDirectHybrisAxiosClient(spaToken).get<{\n orders: HybrisOrderHistory[];\n }>(`${getOrdersBaseUrl(userId)}?${queryString.toString()}`);\n\n const resp = response.data.orders;\n return resp;\n },\n\n cancelOrder: (token: string) => async (userId: string, orderId: string) => {\n const response = await getDirectHybrisAxiosClient(token).post<{ cancelOk: boolean }>(\n `${getOrdersBaseUrl(userId)}/${orderId}/cancel`,\n );\n const resp = response?.data?.cancelOk || false;\n return resp;\n },\n getOrderCount: (token: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(token).head(getOrdersBaseUrl(userId));\n const countString = response.headers['x-total-count'] as string;\n const count = countString ? parseInt(countString, 10) : undefined;\n return count;\n },\n orderEdited: (token: string) => async (userId: string, cartId: string) => {\n const params = new URLSearchParams();\n params.append('cartId', cartId);\n const response = await getDirectHybrisAxiosClient(token, [\n editOrderErrorInterceptor,\n ]).post<HybrisOrder>(`${getOrdersBaseUrl(userId)}/edited`, params);\n const resp = response?.data;\n return resp;\n },\n};\n\nexport const orderApi = {\n createForCurrentCart: async (options?: CreateOrderOptions) => {\n const response = await hybrisAxiosClient.post<{ id: number }>('/orders/create', options);\n return response.data;\n },\n completeEditOrder: async (orderId: string, transactionCode: string) => {\n const response = await hybrisAxiosClient.post<{ id: number }>(\n `/orders/${orderId}/change/complete`,\n {\n transactionCode,\n },\n );\n return response.data;\n },\n editOrder: async (orderId: string) => {\n const response = await hybrisAxiosClient.put(`/orders/${orderId}/change`);\n return response.data;\n },\n cancelEditOrder: async (orderId: string) => {\n const response = await hybrisAxiosClient.delete(`/orders/${orderId}/change`);\n return response.data;\n },\n};\n\nexport interface CreateOrderOptions {\n securityCode?: string;\n subscriptionFrequency: SubscriptionFrequency | null;\n transaction?: string;\n}\n","import getDirectPersonalizationSearchAxiosClient from '../../../search/api/directPersonalizationAxiosClient';\nimport type {\n ApiLoopRelatedProductsMultipleRequest,\n ApiLoopRelatedProductsRequest,\n ApiLoopResultOptionsRequestBody,\n ApiLoopSearchBaseRequest,\n} from '../../../search/api/searchRequests';\nimport { getCancellationToken } from '../utils';\nimport type {\n ApiDYProductRecommendationsRequest,\n ApiDYProductRecommendationsResponse,\n} from './apiProductRequests';\nimport getDirectArticleServiceClient from './directArticleServiceClient';\nimport getDirectDynamicYieldProductClient from './directDynamicYieldProductClient';\n\nconst preparePersonalizationRequestParams = (\n storeId: string,\n customerGroups: string[] | undefined,\n) => {\n const requestParams = {\n store: storeId,\n groups: customerGroups && !!customerGroups.length ? customerGroups.join(',') : null,\n };\n\n return requestParams;\n};\n\nconst preparePersonalizationSearchRequestParams = (\n storeId: string,\n customerGroups: string[] | undefined,\n quickSearch: boolean,\n) => {\n const baseParams = preparePersonalizationRequestParams(storeId, customerGroups);\n\n const requestParams = {\n ...baseParams,\n direct: !!quickSearch,\n };\n\n return requestParams;\n};\n\nconst getCurrentProductOffersLoop = async (\n currentPromotionsRequest: ApiLoopSearchBaseRequest,\n storeId: string,\n abortSignal?: AbortSignal,\n customerGroups?: string[],\n onlyPrimary?: boolean,\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/products/promotions',\n currentPromotionsRequest,\n {\n params: {\n ...preparePersonalizationSearchRequestParams(storeId, customerGroups, false),\n 'only-primary': onlyPrimary,\n },\n cancelToken: token,\n },\n );\n return response.data;\n};\n\nconst getProductsForPromotionLoop = async (\n requestBody: ApiLoopResultOptionsRequestBody,\n storeId: string,\n customerGroups?: string[],\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/products/promotion',\n requestBody,\n {\n params: preparePersonalizationSearchRequestParams(storeId, customerGroups, false),\n },\n );\n return response.data;\n};\n\nconst getRelatedProducts = async (\n requestBody: ApiLoopRelatedProductsRequest,\n storeId: string,\n customerGroups?: string[],\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/entities/related',\n requestBody,\n {\n params: preparePersonalizationRequestParams(storeId, customerGroups),\n },\n );\n return response.data;\n};\n\nexport const getRelatedProductsMultipleApiUrl = '/search/products/multiple/related';\nconst getRelatedProductsMultiple = async (\n requestBody: ApiLoopRelatedProductsMultipleRequest,\n storeId: string,\n customerGroups?: string[],\n): Promise<ApiLoopRelatedMultipleResponse<ApiLoopProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n\n const response = await client.post<ApiLoopRelatedMultipleResponse<ApiLoopProduct>>(\n getRelatedProductsMultipleApiUrl,\n requestBody,\n {\n params: preparePersonalizationRequestParams(storeId, customerGroups),\n },\n );\n return response.data;\n};\n\nexport const getRecommendations = async (\n storeId: string,\n request: ApiDYProductRecommendationsRequest,\n customerGroups?: string[],\n) => {\n const client = getDirectDynamicYieldProductClient();\n const response = await client.post<ApiDYProductRecommendationsResponse>(\n '/search/choose',\n request,\n { params: preparePersonalizationSearchRequestParams(storeId, customerGroups, false) },\n );\n\n return response.data;\n};\n\nexport const getSustainabilityDeclaration = async (productId: string) => {\n const response = await getDirectArticleServiceClient().get<boolean>(\n `/search/articles/sustainability/${productId}`,\n );\n return response.data;\n};\n\nexport const productApi = {\n getRecommendations,\n getCurrentProductOffersLoop,\n getProductsForPromotionLoop,\n getSustainabilityDeclaration,\n getRelatedProducts,\n getRelatedProductsMultiple,\n};\n","import type { AxiosInstance, AxiosRequestConfig } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from '../clients/clientFactory';\n\nconst getDirectDynamicYieldProductClient = (timeout?: number): AxiosInstance => {\n const axiosRequestConfig: AxiosRequestConfig = {\n baseURL: appConfig.coopSettings.serviceAccess.personalizationApiUrl,\n headers: {\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.personalizationApiSubscriptionKey,\n },\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.personalizationApiVersion,\n },\n };\n\n if (timeout) {\n axiosRequestConfig.timeout = timeout;\n }\n\n const directDynamicYieldProductClient =\n axiosClientFactory.createDirectApiClient(axiosRequestConfig);\n\n return directDynamicYieldProductClient;\n};\n\nexport default getDirectDynamicYieldProductClient;\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from '../clients/clientFactory';\n\nconst getDirectArticleServiceClient = (): AxiosInstance => {\n const directArticleServiceClient = axiosClientFactory.createDirectApiClient({\n baseURL: appConfig.coopSettings.serviceAccess.articleServiceApiUrl,\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.articleServiceApiVersion,\n },\n headers: {\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.articleServiceSubscriptionKey,\n },\n });\n\n return directArticleServiceClient;\n};\n\nexport default getDirectArticleServiceClient;\n","import { type AxiosInstance, type AxiosRequestConfig, AxiosHeaders } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from '../clients/clientFactory';\n\nconst getDirectRecipeAxiosClient = (accessToken: string | null): AxiosInstance => {\n const config: AxiosRequestConfig = {\n baseURL: appConfig.coopSettings.recipe.apiUrl,\n params: {\n 'api-version': 'v1',\n },\n };\n\n const headers = new AxiosHeaders();\n if (accessToken) {\n headers.set('Authorization', `Bearer ${accessToken}`);\n }\n\n config.headers = headers;\n\n const client = axiosClientFactory.createDirectApiClient(config);\n return client;\n};\n\nexport default getDirectRecipeAxiosClient;\n","/**\n * Based on https://apitest.coop.se/recipe/swagger/index.html\n * Note: add more functions here if you need them\n */\n\nimport type {\n ApiCategoriesUrlOrder,\n ApiFavouriteRecipe,\n ApiRecipe,\n ApiRecipeComment,\n} from '../../../../models/recipe/recipeModel';\nimport { getAuthToken } from '../auth/getAuthToken';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\nimport getDirectRecipeAxiosClient from './directRecipeAxiosClient';\nimport type {\n ApiFilterRecipes,\n ApiNorthforkSearchRecipesByEanRequest,\n ApiRecipeCategory,\n ApiRecipeList,\n ApiRecipeProductItem,\n ApiResolveProductsRequest,\n NorthforkSearchResult,\n} from './recipeModels';\nimport type { ApiSaveCommentRequest } from './requests/recipeRequests';\nimport recipeApiUtils from './utils';\n\nconst getRecipesById = async (recipeIds: (string | number)[]): Promise<ApiRecipe[]> => {\n if (recipeIds?.length > 0) {\n // API doesn't allow \"?recipeIds[]=\"\"\n const queryWithoutBrackets = recipeApiUtils.createArrayParamWithoutBrackets(\n 'recipeIds',\n recipeIds,\n );\n const response = await getDirectRecipeAxiosClient(null).get(\n `recipes${queryWithoutBrackets}`,\n );\n return response.data;\n }\n return [];\n};\n\nconst getRecipeById = async (recipeId: string | number): Promise<ApiRecipe> => {\n const response = await getDirectRecipeAxiosClient(null).get(`recipes/${recipeId}`);\n\n return response.data;\n};\n\n/** Note: annymous users are also able to rate recipes */\nconst rateRecipe =\n (token: string | null) =>\n async ({\n recipeId,\n rating1to5,\n }: {\n recipeId: string;\n rating1to5: number;\n }): Promise<200 | 400> => {\n const response = await getDirectRecipeAxiosClient(token).post(\n `/recipes/${recipeId}/rating`,\n {\n rating: rating1to5,\n },\n );\n\n return response.data;\n };\n\nconst getRecipeUserRatings =\n (token: string) =>\n async (recipeId: number): Promise<{ recipeId: number; rating: number }> => {\n const response = await getDirectRecipeAxiosClient(token).get(\n `/recipes/${recipeId}/rating/me`,\n );\n\n return response.data;\n };\n\nconst getFavouriteRecipes = (token: string) => async (): Promise<ApiFavouriteRecipe[]> => {\n const response = await getDirectRecipeAxiosClient(token).get('/favorites/me');\n\n return response.data;\n};\n\nconst saveFavouriteRecipe =\n (token: string) =>\n async (recipeId: string): Promise<boolean> => {\n const response = await await getDirectRecipeAxiosClient(token).post<{\n addFavoriteRecipeResult: boolean;\n }>(`/recipes/${recipeId}/favorite`);\n\n return response?.data?.addFavoriteRecipeResult || false;\n };\n\nconst removeFavouriteRecipe =\n (token: string) =>\n async (recipeId: string): Promise<boolean> => {\n const response = await await getDirectRecipeAxiosClient(token).delete<{\n removeFavoriteRecipeResult: boolean;\n }>(`/recipes/${recipeId}/favorite`);\n\n return response?.data?.removeFavoriteRecipeResult || false;\n };\n\nconst getRecipeSingleMetaDataByCategoriesBatch = async (\n data: Record<string, { category1: string; category2?: string }>,\n) => {\n const client = getDirectRecipeAxiosClient(null);\n const response = await client.post('/categories/meta-data/batch', data);\n return response.data;\n};\n\nconst getCategoriesUrlOrderData = async (): Promise<ApiCategoriesUrlOrder> => {\n const client = getDirectRecipeAxiosClient(null);\n const response = await client.get('/categories/url-order');\n\n return response.data;\n};\n\nconst getNorthforkSearchRecipeByEan = async (\n body: ApiNorthforkSearchRecipesByEanRequest,\n): Promise<NorthforkSearchResult> => {\n const { token } = await getAuthToken();\n const client = await getDirectRecipeAxiosClient(token);\n const response = await client.post('/northfork/search/ean', body);\n\n return response.data;\n};\n\nconst resolveRecipes = async (request: ApiResolveProductsRequest, storeId: string) => {\n const response = await hybrisAxiosClient.post<ApiRecipeList>(\n `/recipe/products/resolve`,\n request,\n {\n params: { storeId },\n },\n );\n return response.data;\n};\n\nconst getRecipeSubstitutes = async (storeId: string, substituteIdentifier: string) => {\n const requestQueryParams = {\n storeId,\n substituteIdentifier,\n };\n\n const response = await hybrisAxiosClient.get<ApiRecipeProductItem[]>('/recipe/substitute', {\n params: requestQueryParams,\n });\n return response.data;\n};\n\nconst getRecipeComments = async (recipeExternalId: string): Promise<ApiRecipeComment[]> => {\n const response = await getDirectRecipeAxiosClient(null).get(\n `/recipes/${recipeExternalId}/comments`,\n );\n return response.data;\n};\n\nconst saveRecipeComment =\n (token: string) =>\n async (request: ApiSaveCommentRequest): Promise<void> => {\n const response = await getDirectRecipeAxiosClient(token).post(\n `/recipes/${request.recipeExternalId}/comment`,\n { name: request.authorName, comment: request.comment },\n );\n return response.data;\n };\n\nconst getRecipeCategoriesById = async (recipeExternalId: string): Promise<ApiRecipeCategory[]> => {\n const response = await getDirectRecipeAxiosClient(null).get(\n `/recipes/${recipeExternalId}/categories`,\n );\n return response.data;\n};\n\nconst getRecipeCategories = async (): Promise<ApiRecipeCategory[]> => {\n const response = await getDirectRecipeAxiosClient(null).get(`/categories`);\n return response.data;\n};\n\nconst filterRecipesAdminTool = async (\n token: string,\n filterString: string,\n excludeList: string[],\n): Promise<ApiFilterRecipes> => {\n const response = await getDirectRecipeAxiosClient(token).post(`/recipes/filter`, {\n filter: filterString,\n exclude: excludeList,\n });\n\n return response.data;\n};\n\nexport default {\n getRecipeById,\n getRecipesById,\n rateRecipe,\n getRecipeUserRatings,\n getRecipeComments,\n saveRecipeComment,\n getFavouriteRecipes,\n saveFavouriteRecipe,\n removeFavouriteRecipe,\n getRecipeSingleMetaDataByCategoriesBatch,\n getCategoriesUrlOrderData,\n getRecipeCategoriesById,\n getRecipeCategories,\n northfork: {\n getRecipesByEans: getNorthforkSearchRecipeByEan,\n },\n resolveRecipes,\n getRecipeSubstitutes,\n filterRecipesAdminTool,\n};\n","const createArrayParamWithoutBrackets = (queryName: string, values: (string | number)[]) => {\n if (values?.length > 0) {\n return `?${queryName}=${values.join(`&${queryName}=`)}`;\n }\n\n return '';\n};\n\nexport default {\n createArrayParamWithoutBrackets,\n};\n","import type { HybrisCart } from '../../models/hybris/hybrisCart';\nimport type { HybrisSavedCartResultList } from '../../models/hybris/hybrisSavedCartResultList';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\n\nconst savedCartsApi = {\n restoreSavedCart:\n (token: string) =>\n async (userId: string, cartId: string, savedCartId: string): Promise<HybrisCart> => {\n const response = await getDirectHybrisAxiosClient(token).post(\n `users/${userId}/carts/${cartId}/restoresavedcart?savedCartId=${savedCartId}`,\n );\n const resp = response.data;\n return resp;\n },\n\n getSavedCarts:\n (token: string) =>\n async (\n userId: string,\n page: number,\n pageSize: number,\n ): Promise<HybrisSavedCartResultList> => {\n const response = await getDirectHybrisAxiosClient(token).get(\n `users/${userId}/carts/savedcarts?currentPage${encodeURIComponent(\n page,\n )}&pageSize=${encodeURIComponent(pageSize)}`,\n );\n const resp = response.data;\n return resp;\n },\n deleteSavedCart:\n (token: string) =>\n async (userId: string, cartId: string): Promise<boolean> => {\n const response = await getDirectHybrisAxiosClient(token).patch(\n `users/${userId}/carts/${cartId}/flagForDeletion`,\n );\n const resp = !!response.data;\n return resp;\n },\n saveCart:\n (token: string) =>\n async (\n userId: string,\n cartId: string,\n cartName: string,\n ): Promise<{ savedCartData: HybrisCart }> => {\n const response = await getDirectHybrisAxiosClient(token).post(\n `users/${userId}/carts/${cartId}/save`,\n null,\n { params: { saveCartName: cartName } },\n );\n const resp = response.data;\n return resp;\n },\n bulkUpdate:\n (token: string) =>\n async (\n userId: string,\n cartId: string,\n items: { productCode: string; variantCode?: string; quantity: number }[],\n ): Promise<void> => {\n const response = await getDirectHybrisAxiosClient(token).post(\n `users/${userId}/saved-carts/${cartId}/bulkentries`,\n items,\n );\n const resp = response.data;\n return resp;\n },\n};\nexport default savedCartsApi;\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\nimport type { ApiSwitchStoreResult } from '../cart/responses/cartResponses';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\nimport { getCancellationToken } from '../utils';\n\nconst fetchStoreById = async (storeId: string): Promise<IApiStore> => {\n const response = await hybrisAxiosClient.get(`/store/detailed?id=${storeId}`);\n return response.data;\n};\n\nconst searchPickupStores = async (\n searchterm: string,\n hits: number | null,\n abortSignal?: AbortSignal,\n): Promise<IApiStore[]> => {\n const cancelToken = getCancellationToken(abortSignal);\n\n const response = await hybrisAxiosClient.get('/store/list', {\n params: {\n searchterm: searchterm || '',\n hits: hits || '',\n },\n cancelToken,\n });\n const stores: IApiStore[] = response.data;\n return stores;\n};\n\nconst fetchPickupStores = async (): Promise<IApiStore[]> => {\n return searchPickupStores('', null);\n};\n\nconst fetchStoreByPostalCode = async (zipCode: string): Promise<IApiStore> => {\n const response = await hybrisAxiosClient.get<IApiStore>(`/store?zipCode=${zipCode}`);\n return response.data;\n};\n\nconst updatePickupStore = async (storeId: string): Promise<IApiStore> => {\n const response = await hybrisAxiosClient.put('/store/pickupStore', {\n uid: storeId,\n });\n return response.data;\n};\n\n/**\n * This doesnt change postalcode if there is any items in the cart that will be lost in the change.\n * Flag \"simulate\" on response tells you if the change only been simulated or not.\n * @param zipCode\n */\nconst updateHomeDeliveryStoreUnconfirmed = async (\n postalCode: string,\n baseStoreId: string | null = null,\n): Promise<ApiSwitchStoreResult> => {\n const response = await hybrisAxiosClient.post('/store/current/unconfirmed', {\n zipCode: postalCode,\n baseStoreId,\n });\n return response.data;\n};\n\n/**\n * Flag \"simulate\" on response tells you if the change only been simulated or not.\n */\nconst updatePickupStoreUnconfirmed = async (storeId: string): Promise<ApiSwitchStoreResult> => {\n const response = await hybrisAxiosClient.put('/store/pickupStore/unconfirmed', {\n uid: storeId,\n });\n return response.data;\n};\n\nconst updateHomeDeliveryStore = async (\n postalCode: string,\n baseStoreId: string | null = null,\n): Promise<IApiStore> => {\n const response = await hybrisAxiosClient.post('/store/current', {\n zipCode: postalCode,\n baseStoreId,\n });\n return response.data;\n};\n\nexport const storeApi = {\n fetchStoreByPostalCode,\n fetchPickupStores,\n fetchStoreById,\n searchPickupStores,\n updatePickupStore,\n updateHomeDeliveryStore,\n updatePickupStoreUnconfirmed,\n updateHomeDeliveryStoreUnconfirmed,\n};\n","import axios from 'axios';\n\nimport { getInitialState } from '../../store/slices/cart/cartTimeslotSlice';\nimport type { TimeslotType } from './timeslotModels';\n\nconst mapToProperApiApiHybrisTimeslot = (timeslot: ApiHybrisTimeslot) => {\n if (!timeslot || !timeslot.id) return getInitialState().timeslot;\n return {\n ...timeslot,\n endTime: new Date(timeslot.endTime).valueOf(),\n startTime: new Date(timeslot.startTime).valueOf(),\n maxOrderTime: new Date(timeslot.maxOrderTime).valueOf(),\n };\n};\n\n/**\n * Fetch timeslots for current cart's store\n */\nconst fetchForCurrentCart = async (days?: number): Promise<ApiHybrisTimeslot[]> => {\n const response = await axios.get(\n `/api/hybris/timeslots?maxNumOfDays=${days ? days.toFixed(0) : 30}`,\n );\n return response.data && response.data.map(mapToProperApiApiHybrisTimeslot);\n};\n\nconst fetchByPostalCode = async (\n postalCode: string,\n days?: number,\n): Promise<ApiHybrisTimeslot[]> => {\n const response = await axios.get(\n `/api/hybris/timeslots/postalcode/${postalCode}/?maxNumOfDays=${\n days ? days.toFixed(0) : 30\n }`,\n );\n return response.data && response.data.map(mapToProperApiApiHybrisTimeslot);\n};\n\nconst current = async () => {\n const response = await axios.get<ApiHybrisTimeslot>('/api/hybris/carts/current/timeslot');\n return mapToProperApiApiHybrisTimeslot(response.data);\n};\n\nconst select = async (timeslotId: string): Promise<void> => {\n const data = { timeslotId };\n await axios.put('/api/hybris/carts/current/timeslot', data);\n};\n\n// TODO rename this to ApiTimeslot, use ApiHybrisTimeslot naming when directly using Hybris api\nexport interface ApiHybrisTimeslot {\n timeSlotTime: string;\n endTime: number;\n startTime: number;\n maxOrderTime: number;\n timeSlotDay: string;\n shippingType: string;\n fullyBooked: boolean;\n id: string | null;\n cost?: number;\n expirationTime?: Date;\n storeId: string;\n timeslotType: TimeslotType;\n milisecondsToExpire?: number;\n ecoFriendly: boolean;\n expectETANotification?: boolean;\n}\n\nexport const timeslotsApi = {\n fetchForCurrentCart,\n fetchByPostalCode,\n select,\n current,\n};\n","import type { HybrisCompensationVoucher } from '../../models/hybris/hybrisVoucher';\nimport type {\n InvoiceAddress,\n MunicipalUserInfo,\n UserInfo,\n UserType,\n} from '../../store/structureDefinitions/userState';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\n\ninterface UserGroup {\n name: string;\n uid: string;\n}\n\ninterface UserCustomerGroups {\n userGroups: UserGroup[];\n}\n\ninterface UserOrganisationUnit {\n orgUnit: {\n agreementId: string;\n gln: string;\n name: string;\n uid: string;\n };\n}\n\nconst userApi = {\n // Fetch the type of user that is currently shopping\n getTypeOfUser: async (): Promise<UserType> => {\n const response = await hybrisAxiosClient.get('/user/type');\n return response && response.data && response.data.type;\n },\n getUserInfo: async (noCache: boolean): Promise<UserInfo> => {\n const path = noCache ? '/user/info?noCache=true' : '/user/info';\n const response = await hybrisAxiosClient.get(path);\n return response && response.data;\n },\n getUserPunchoutUnit: (accessToken: string) => async (userId: string) => {\n const response = await getDirectHybrisAxiosClient(accessToken).get<UserOrganisationUnit>(\n `/users/${userId}?fields=orgUnit`,\n );\n return response.data;\n },\n getMunicipalUserInfo: async () => {\n const path = '/user/municipal/info';\n const response = await hybrisAxiosClient.get<MunicipalUserInfo>(path);\n return response && response.data;\n },\n /**\n * Get users invoice address, in hybris, a user can only have one\n */\n getInvoiceAddress: async (): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.get('/user/invoice/current');\n return response && response.data;\n },\n createInvoiceAddress: async (address: InvoiceAddress): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.post('/user/invoice/current', address);\n return response && response.data;\n },\n updateInvoiceAddress: async (address: InvoiceAddress): Promise<InvoiceAddress> => {\n const response = await hybrisAxiosClient.put('/user/invoice/current', address);\n return response && response.data;\n },\n getCustomerGroups:\n (spaToken: string) =>\n async (shoppingUserId: string): Promise<UserCustomerGroups> => {\n const response = await getDirectHybrisAxiosClient(spaToken).get<UserCustomerGroups>(\n `users/${shoppingUserId}/customergroups`,\n );\n\n const resp = response && response.data;\n return resp;\n },\n getCompensationVochers: async (\n spaToken: string,\n shoppingUserId: string,\n ): Promise<HybrisCompensationVoucher[]> => {\n const response = await getDirectHybrisAxiosClient(spaToken).get(\n `/vouchers/compensation/users/${shoppingUserId}`,\n { params: { fields: 'FULL' } },\n );\n\n const resp = response && response.data && response.data.compensationVouchers;\n return resp || [];\n },\n updateProfile:\n (spaToken: string) =>\n async (\n shoppingUserId: string,\n redistributorOfFood: 'TRUE' | 'FALSE' | 'NOT_SET',\n ): Promise<boolean> => {\n const response = await getDirectHybrisAxiosClient(spaToken).patch(\n `users/${shoppingUserId}`,\n null,\n { params: { redistributorOfFood } },\n );\n\n const resp = response && response.data;\n return resp;\n },\n};\n\nexport { userApi };\n","import axios from 'axios';\n\nimport getLocalApiAxiosClient from '../clients/localApiAxiosClient';\nimport type { ApiUserProfile, CoopUserProfileApiRecipeRatingResponse } from './userProfileModels';\n\nconst updateCoopRatingCache = async ({\n recipeId,\n rating1to5,\n}: {\n recipeId: number;\n rating1to5: number;\n}): Promise<CoopUserProfileApiRecipeRatingResponse> => {\n const response = await axios.put('/api/userprofile/clearratingcache/', {\n recipeId,\n rating: rating1to5,\n });\n\n return response.data;\n};\n\nconst getCurrentUserProfilePath = 'userprofile/currentUser/';\nconst getCurrentUserProfile = async (): Promise<ApiUserProfile> => {\n const response = await getLocalApiAxiosClient().get(getCurrentUserProfilePath);\n return response.data;\n};\n\nexport default {\n updateCoopRatingCache,\n getCurrentUserProfile,\n};\n","import type { CancelToken } from 'axios';\nimport axios from 'axios';\n\nexport const getCancellationToken = (abortSignal?: AbortSignal): CancelToken => {\n const source = axios.CancelToken.source();\n if (abortSignal) {\n abortSignal.addEventListener('abort', () => {\n source.cancel();\n });\n }\n\n return source.token;\n};\n","import { VisuallyHidden } from '@coop/components';\nimport { useEffect, useRef, useState } from 'react';\n\n// when aria live is added first time to the DOM, itll not be read by the screen readers, hence we need to delay the first message so its picked up\nconst DelayedA11yAnnouncer = (props: {\n a11yMessage: string;\n name: string;\n delayFirstMessage: boolean;\n}) => {\n const wasDelayed = useRef<boolean>(!props.delayFirstMessage);\n const [delayedMessage, setDelayedMessage] = useState<string>('');\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (!wasDelayed.current) {\n setTimeout(() => {\n setDelayedMessage(props.a11yMessage);\n wasDelayed.current = true;\n }, 500);\n } else {\n setDelayedMessage(props.a11yMessage);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [props.a11yMessage]);\n\n return (\n <VisuallyHidden\n data-a11-logger={props.name} // just to show which logger it belongs too\n aria-live=\"polite\"\n >\n {delayedMessage}\n </VisuallyHidden>\n );\n};\n\nexport default DelayedA11yAnnouncer;\n","import { VisuallyHidden } from '@coop/components';\nimport React, { useEffect, useState } from 'react';\n\nimport { useA11yLogInConsoleEffect } from '../../hooks/useA11yLogInConsole';\n\n/**\n * Reset the text after a certain amount of time\n */\nexport const useTemporaryTextEffect = (\n text: string | undefined,\n setText: (newText: string | undefined) => void,\n timeout: number,\n) => {\n useEffect(() => {\n setText(text);\n const timer = setTimeout(() => {\n setText(undefined);\n }, timeout);\n\n return () => clearTimeout(timer);\n }, [setText, text, timeout]);\n};\n\n/**\n * Set text temporarily in aria-live region to announce to screen readers.\n * We shouldn't hold the text in aria-live all the time since the text can be navigated with screen readers.\n * Instead we will show the text for a short period of time, just enough for a screen reader to add the text to the queue.\n */\nconst TemporaryA11yAnnouncer = (props: { text: string | undefined; announcerName: string }) => {\n const [text, setText] = useState<string | undefined>(props.text);\n\n useTemporaryTextEffect(props.text, setText, 1000);\n useA11yLogInConsoleEffect(props.announcerName, text);\n\n return (\n <VisuallyHidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {text}\n </VisuallyHidden>\n );\n};\n\nexport default React.memo(TemporaryA11yAnnouncer);\n","import * as React from 'react';\n\nimport TemporaryA11yAnnouncer from '../A11yAnnouncer/TemporaryA11yAnnouncer';\n\nconst AddToCartA11yAnnouncer = (props: { quantity: number | undefined }) => {\n let quantityLabel;\n if (props.quantity === 0) {\n quantityLabel = 'Denna vara är borttagen frÃ¥n varukorgen.';\n }\n\n if (props.quantity === 1) {\n quantityLabel = 'Denna vara finns nu i varukorgen.';\n }\n\n if (props.quantity !== undefined && props.quantity > 1) {\n quantityLabel = `${props.quantity} av denna vara finns i varukorgen.`;\n }\n\n return <TemporaryA11yAnnouncer announcerName=\"AddToCart\" text={quantityLabel} />;\n};\n\nexport default React.memo(AddToCartA11yAnnouncer);\n","import type React from 'react';\nimport { useMemo, useState } from 'react';\nimport _ from 'underscore';\n\nimport { appConfig } from '../../../../appConfig';\nimport B2BCrossContextNotifications from '../B2BCrossContextNotifications';\nimport { QuantityStepper } from '../QuantityStepper';\nimport AddToCartA11yAnnouncer from './AddToCartA11yAnnouncer';\n\n/**\n * Handles blocking of adding to cart when the user is in incorrect B2B context - private user on company site or company user on private site and shows a notification if it's the case.\n */\nconst AddToCartButton = (props: {\n quantity: number;\n fullWidth?: boolean;\n isBlocked?: (newQuantity: number) => boolean;\n onBlock?: (newQuantity: number, prevQuantity: number) => void;\n withButton?: boolean;\n productName: string | undefined;\n setQuantity: (newQuantity: number) => void;\n onAddToCartClick?: (e: React.MouseEvent<HTMLElement>) => void;\n onRemoveFromCartClick?: (e: React.MouseEvent<HTMLElement>) => void;\n}) => {\n const [attemptedToAddToCart, setAttemptedToAddToCart] = useState(false);\n\n const [a11yQuantity, setA11yQuantity] = useState<number | undefined>(undefined);\n const setA11yQuantityDebounced = useMemo(\n () => _.debounce(setA11yQuantity, 300),\n [setA11yQuantity],\n );\n\n const setQuantity = (newQuantity: number) => {\n setA11yQuantityDebounced(newQuantity); // announce to screen reader immediately after user interaction, dont wait for API sync to make sure AddToCartAccessibilityLogger is read before CartSummaryAccessibilityLogger\n props.setQuantity(newQuantity);\n };\n\n const onBlock = (newQuantity: number, prevQuantity: number) => {\n setAttemptedToAddToCart(true);\n props.onBlock?.(newQuantity, prevQuantity);\n };\n\n return (\n <div className=\"u-posRelative\">\n <AddToCartA11yAnnouncer quantity={a11yQuantity} />\n\n {/* TODO remove renderTrigger and use plain refs to pass down to Modal */}\n <B2BCrossContextNotifications\n show={attemptedToAddToCart}\n close={() => setAttemptedToAddToCart(false)}\n renderTrigger={(addToCartRef, isCrossContextBlock) => (\n <QuantityStepper\n withBuyButton={props.withButton}\n buyButtonRef={addToCartRef}\n isBlocked={(newQuanity) =>\n isCrossContextBlock || !!props.isBlocked?.(newQuanity)\n }\n onBlock={onBlock}\n fullWidth={props.fullWidth}\n quantity={props.quantity}\n setQuantity={setQuantity}\n onAddClick={props.onAddToCartClick}\n onRemoveClick={props.onRemoveFromCartClick}\n buyButtonLabel={`Lägg till ${props.productName} i varukorgen`}\n inputLabel={`Antal av ${props.productName} i varukorgen`}\n addButtonLabel={`Öka antal av ${props.productName} i varukorgen`}\n removeButtonLabel={`Minska antal av ${props.productName} i varukorgen`}\n />\n )}\n continueAsPrivateUrl={appConfig.coopSettings.b2c.ecommerce.page.url}\n continueAsCompanyUrl={appConfig.coopSettings.b2b.ecommerce.page?.url}\n />\n </div>\n );\n};\n\nexport default AddToCartButton;\n","import { Confirm } from '@coop/components';\nimport { type ReactNode } from 'react';\n\nimport { useIsUserAuthenticated, useIsUserCompany } from '../../hooks/useUserProfile';\nimport { ga4B2BTracking } from '../../tracking/ga4/b2b';\nimport { ga4UserTracking } from '../../tracking/ga4/user';\nimport { isInB2BCrossContext, useIsB2BRoute } from '../../utils/b2bUtils';\nimport { getLoginUrlWithReturnUrl } from '../../utils/urlUtils';\n\n/**\n * The notifications that are shown when the user is logged in as a private user on the company site or as a company user on the private site.\n * The add to cart action is blocked when these notifications are shown.\n */\nexport const B2BCrossContextNotifications = (props: {\n show: boolean;\n close: () => void;\n renderTrigger?: (\n ref: React.RefObject<HTMLButtonElement> | undefined,\n isBlocked: boolean,\n ) => ReactNode;\n continueAsPrivateUrl: string;\n continueAsCompanyUrl?: string;\n}) => {\n const isB2BRoute = useIsB2BRoute();\n\n const { privateUserOnCompanySite, companyUserOnPrivateSite } = isInB2BCrossContext({\n isB2BRoute,\n isUserCompany: useIsUserCompany(),\n isAuthenticated: useIsUserAuthenticated(),\n });\n\n if (props.renderTrigger && !companyUserOnPrivateSite && !privateUserOnCompanySite) {\n return <>{props.renderTrigger(undefined, false)}</>;\n }\n\n const clickInteractionTracking: React.MouseEventHandler<HTMLAnchorElement> = (e) => {\n ga4B2BTracking.b2bCrossContextPopupInteraction(e.currentTarget.innerText);\n };\n\n const clickLoginTracking = () => {\n ga4UserTracking.login(null, 'start');\n };\n\n return (\n <>\n {privateUserOnCompanySite && (\n <Confirm\n show={props.show}\n close={props.close}\n renderTrigger={(ref) => props.renderTrigger?.(ref, true)}\n onConfirm={() => {}}\n heading=\"Vill du handla till dig själv eller till jobbet?\"\n message=\"Du är inloggad som privatperson men handlar just nu frÃ¥n företagssidorna.\"\n confirmButtonProps={{\n asChild: true,\n children: (\n <a\n href={getLoginUrlWithReturnUrl('company', 'login')}\n onClick={(e) => {\n clickInteractionTracking(e);\n clickLoginTracking();\n }}\n >\n Logga in som Företagskund\n </a>\n ),\n }}\n cancelButtonProps={{\n asChild: true,\n children: (\n <a href={props.continueAsPrivateUrl} onClick={clickInteractionTracking}>\n Fortsätt som Privat\n </a>\n ),\n }}\n disableOutsideClick\n />\n )}\n {companyUserOnPrivateSite && (\n <Confirm\n show={props.show}\n close={props.close}\n renderTrigger={(ref) => props.renderTrigger?.(ref, true)}\n onConfirm={() => {}}\n heading=\"Vill du handla till dig själv eller till jobbet?\"\n message=\"Du är inloggad med ditt företagskonto men handlar just nu frÃ¥n privatsidorna.\"\n confirmButtonProps={{\n asChild: true,\n children: (\n <a\n href={getLoginUrlWithReturnUrl('private', 'login')}\n onClick={(e) => {\n clickInteractionTracking(e);\n clickLoginTracking();\n }}\n >\n Logga in som Privatkund\n </a>\n ),\n }}\n cancelButtonProps={{\n asChild: true,\n children: (\n <a href={props.continueAsCompanyUrl} onClick={clickInteractionTracking}>\n Fortsätt som Företag\n </a>\n ),\n }}\n disableOutsideClick\n />\n )}\n </>\n );\n};\n\nexport default B2BCrossContextNotifications;\n","import { AccessibleIcon } from '@coop/components';\nimport { EcoLeafIcon } from '@coop/icons';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport CloudinaryImage from '../atoms/CloudinaryImage';\nimport styles from './BaseRecipeTeaser.module.less';\n\nconst RecipeRatingContainer = (props: React.PropsWithChildren<{}>) => {\n return <div className={styles.RatingContainer}>{props.children}</div>;\n};\n\nconst RecipeClimateImpact = (props: { co2ImpactKg: number | null }) => {\n return (\n !!props.co2ImpactKg &&\n props.co2ImpactKg < 2.5 && (\n <AccessibleIcon\n icon={EcoLeafIcon}\n width={24}\n height={24}\n color=\"dsGreen\"\n label={`${Intl.NumberFormat('sv').format(props.co2ImpactKg)} kg co2 ekv / portion`}\n />\n )\n );\n};\n\nconst RecipeBadges = (props: React.PropsWithChildren<React.ComponentProps<'div'>>) => {\n return <div className={classnames(styles.Badges, props.className)}>{props.children}</div>;\n};\n\ninterface RecipeWrapperProps {\n name: string;\n imageUrl: string;\n topSlot?: React.ReactNode;\n className?: string;\n withBorder?: boolean;\n}\n\nconst RecipeWrapper = (\n props: React.PropsWithChildren<RecipeWrapperProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n return (\n <div\n ref={ref}\n className={classnames(\n styles.Teaser,\n props.withBorder && styles.Border,\n props.className,\n )}\n >\n <div className={styles.TopActions}>{props.topSlot}</div>\n <CloudinaryImage\n cssClass={styles.Image}\n name=\"\"\n url={props.imageUrl}\n transform=\"ar_1.0,f_auto,c_fill,w_300,g_center\"\n retinaTransform=\"ar_1.0,f_auto,c_fill,w_600,g_center\"\n lazy\n fallbackUrl=\"/Assets/Images/missing-image-product.png\"\n />\n <div className={styles.Bottom}>{props.children}</div>\n </div>\n );\n};\n\nconst RecipeContent = (props: { children: React.ReactNode }) => {\n return <div className={styles.Content}>{props.children}</div>;\n};\n\nconst RecipeInfo = (props: { children: React.ReactNode }) => {\n return <div className={styles.Info}>{props.children}</div>;\n};\n\nconst RecipeHeading = (props: {\n url?: string;\n children: React.ReactNode;\n flexOrder?: number;\n onLinkClick?: (e: React.SyntheticEvent) => void;\n}) => {\n return props.url ? (\n <a\n className={classnames(styles.Heading, styles.Link)}\n style={{ order: props.flexOrder }}\n href={props.url}\n onClick={props.onLinkClick}\n tabIndex={-1}\n >\n {props.children}\n </a>\n ) : (\n <p className={styles.Heading} style={{ order: props.flexOrder }}>\n {props.children}\n </p>\n );\n};\n\nconst RecipeActions = (props: { children: React.ReactNode }) => {\n return <div className={styles.Actions}>{props.children}</div>;\n};\n\nconst BaseRecipeTeaser = {\n Wrapper: React.forwardRef(RecipeWrapper),\n Badges: RecipeBadges,\n RatingContainer: RecipeRatingContainer,\n ClimateImpact: RecipeClimateImpact,\n Content: RecipeContent,\n Heading: RecipeHeading,\n Actions: RecipeActions,\n Info: RecipeInfo,\n};\n\nexport default BaseRecipeTeaser;\n","import BaseRecipeTeaser from './BaseRecipeTeaser';\nimport styles from './BaseRecipeTeaser.module.less';\n\nconst BaseRecipeTeaserSkeleton = () => {\n return (\n <BaseRecipeTeaser.Wrapper\n name=\"loading\"\n imageUrl=\"/Assets/Images/missing-image-product.png\"\n >\n <BaseRecipeTeaser.Content>\n <BaseRecipeTeaser.Info>\n <div className={styles.SkeletonText} style={{ width: '70%' }} />\n <div className={styles.SkeletonText} />\n <div className={styles.SkeletonText} />\n </BaseRecipeTeaser.Info>\n <BaseRecipeTeaser.Actions>\n <div className={styles.SkeletonButton} />\n </BaseRecipeTeaser.Actions>\n </BaseRecipeTeaser.Content>\n </BaseRecipeTeaser.Wrapper>\n );\n};\n\nexport default BaseRecipeTeaserSkeleton;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Button } from '@coop/components';\nimport * as React from 'react';\n\n/**\n * A Button that navigates to an Epi page\n * Will eventually provide SPA navigation for CMS links\n */\nconst ButtonEpiLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<typeof Button> & {\n linkUrl: string | undefined;\n target?: '_self' | '_blank';\n }\n>((props, ref) => {\n const { linkUrl, target, ...buttonProps } = props;\n\n if (!linkUrl) {\n return null;\n }\n\n const anchorRel = target?.includes('blank') ? 'noopener noreferrer' : undefined;\n\n return (\n <Button {...buttonProps} asChild>\n <a ref={ref} href={linkUrl} target={props.target} rel={anchorRel}>\n {props.children}\n </a>\n </Button>\n );\n});\n\nexport default ButtonEpiLink;\n","import { useEffect, useId } from 'react';\n\nimport {\n isProductRecommendation,\n useDynamicYieldRecommendations,\n} from '../../../ecommerce/hooks/useDynamicYieldRecommendations';\nimport useDynamicYieldTracking from '../../../ecommerce/hooks/useDynamicYieldTracking';\nimport type Heading from '../Heading';\nimport { useListBlockLazyLoading } from '../ListBlock';\nimport type { ListBlockOptions, TeaserOptions } from '../ListBlock/ListBlock';\nimport ListBlockHeader, { BlockHeader } from '../ListBlock/ListBlockHeader';\nimport RecommendationsBlock from '../organisms/RecommendationsBlock';\nimport DynamicYieldBuyableProductTeaser from './DynamicYieldBuyableProductTeaser';\nimport DynamicYieldFavoriteRecipeTeaser from './DynamicYieldFavoriteRecipeTeaser';\n\nexport interface DynamicYieldBlockProps extends ListBlockOptions, TeaserOptions {\n recommendationId: string;\n onlyPromotions: boolean;\n linkText?: string;\n linkUrl?: string;\n headingProps?: React.ComponentPropsWithoutRef<typeof Heading>;\n as?: React.ComponentProps<typeof RecommendationsBlock>['as'];\n}\n\nconst DynamicYieldBlock = (props: DynamicYieldBlockProps) => {\n const { getRecommendations, isLoading, recommendation } = useDynamicYieldRecommendations(\n props.recommendationId,\n props.onlyPromotions,\n );\n\n const [inViewRef, inView] = useListBlockLazyLoading(props.lazyLoad);\n\n useEffect(() => {\n if (inView) {\n getRecommendations();\n }\n }, [inView, getRecommendations]);\n\n useDynamicYieldTracking(props.recommendationId, recommendation);\n\n const headerId = useId();\n\n if (!props.recommendationId) return null;\n\n if (!isLoading && !recommendation?.items?.length) {\n return null;\n }\n\n const isOnlyProductsRecommendation =\n recommendation &&\n !!recommendation.items?.length &&\n recommendation.items.every((item) => isProductRecommendation(item));\n\n const showNewHeader = !!props.backgroundColor || isOnlyProductsRecommendation;\n\n return (\n <RecommendationsBlock\n aria-labelledby={headerId}\n as={props.as}\n ref={inViewRef}\n backgroundColor={props.backgroundColor}\n headerSlot={\n showNewHeader ? (\n <BlockHeader id={headerId} headingProps={props.headingProps}>\n {props.headingProps?.children || recommendation?.title}\n </BlockHeader>\n ) : (\n <ListBlockHeader id={headerId}>{recommendation?.title}</ListBlockHeader>\n )\n }\n isLoading={isLoading}\n items={recommendation?.items}\n useSwiper={props.useSwiper}\n analyticsListName={props.analyticsListName}\n horizontalHidden={props.horizontalHidden}\n renderProduct={(item, index, listPosition) => (\n <DynamicYieldBuyableProductTeaser\n slotId={item.slotId}\n product={item}\n isALink={!props.disableLink}\n analyticsOptions={{\n list: props.analyticsListName,\n position: index,\n listPosition,\n }}\n isAsyncLink={!props.disableAsyncLink}\n recommendationId={props.recommendationId}\n />\n )}\n renderRecipe={(item) => <DynamicYieldFavoriteRecipeTeaser recipe={item} />}\n banner={props.banner}\n />\n );\n};\n\nexport default DynamicYieldBlock;\n","import { type FC, useCallback, useRef } from 'react';\n\nimport { buyableProductEventsTracking } from '../../hooks/useBuyableProductEventsTracking';\nimport type { BuyableProductTeaserProps } from '../molecules/BuyableProductTeaser';\nimport BuyableProductTeaser from '../molecules/BuyableProductTeaser';\n\ntype DynamicYieldBuyableProductTeaserProps = BuyableProductTeaserProps & {\n recommendationId: string;\n slotId: string;\n};\n\nconst DynamicYieldBuyableProductTeaser: FC<\n React.PropsWithChildren<DynamicYieldBuyableProductTeaserProps>\n> = (props) => {\n const slotClickSent = useRef<boolean>(false);\n const sendSlotClick = useCallback(() => {\n // only send if its dynamic yield\n if (!slotClickSent.current && props.slotId) {\n buyableProductEventsTracking.onSlotClickTrack(props.product.identifier, props.slotId);\n slotClickSent.current = true;\n }\n }, [props.product.identifier, props.slotId]);\n\n return (\n <BuyableProductTeaser\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n onTeaserClick={sendSlotClick}\n />\n );\n};\n\nexport default DynamicYieldBuyableProductTeaser;\n","import type { FC } from 'react';\n\nimport type { RecipeRecommendationSlot } from '../../models/product/productDomainModels';\nimport { personalizationTracking } from '../../tracking/contextAware/personalizationEvents';\nimport FoodboxTeaser from '../FoodboxTeaser';\nimport RecipeTeaser from '../RecipeTeaser';\nimport RecipeTypeComponentPicker from '../RecipeTypeComponentPicker';\n\ninterface DynamicYieldFavoriteRecipeTeaserProps {\n recipe: RecipeRecommendationSlot;\n onLinkClick?: () => void;\n}\n\nconst DynamicYieldFavoriteRecipeTeaser: FC<\n React.PropsWithChildren<DynamicYieldFavoriteRecipeTeaserProps>\n> = ({ recipe, onLinkClick }) => {\n return (\n <RecipeTypeComponentPicker\n isFoodbox={recipe.isFoodBox}\n recipeSlot={\n <RecipeTeaser\n id={recipe.id}\n name={recipe.name}\n rating={recipe.averageRating}\n co2ImpactKg={recipe.climateImpactKg}\n imageUrl={recipe.imageUrl}\n url={recipe.url}\n votes={recipe.numberOfVotes}\n onLinkClick={() => {\n personalizationTracking.trackSlotClick(recipe.id, recipe.slotId);\n onLinkClick?.();\n }}\n />\n }\n foodboxSlot={\n <FoodboxTeaser\n id={recipe.id}\n name={recipe.name}\n imageUrl={recipe.imageUrl}\n url={recipe.url}\n onLinkClick={() => {\n personalizationTracking.trackSlotClick(recipe.id, recipe.slotId);\n onLinkClick?.();\n }}\n />\n }\n />\n );\n};\n\nexport default DynamicYieldFavoriteRecipeTeaser;\n","import { Button, Chip } from '@coop/components';\nimport * as React from 'react';\n\nimport { useSingleFavorite } from '../../hooks/useFavouriteRecipes';\nimport { useRecipeEventsTracking } from '../../hooks/useRecipeEventsTracking';\nimport { ga4RecipesTracking } from '../../tracking/ga4/recipes';\nimport BaseRecipeTeaser from '../BaseRecipeTeaser';\nimport FavoriteRecipeToggle from '../molecules/FavoriteRecipeToggle';\n\ninterface FoodboxTeaserProps {\n id: string;\n name: string;\n url: string;\n imageUrl: string;\n onLinkClick?: (e: React.MouseEvent) => void;\n withBorder?: boolean;\n}\n\nconst FoodboxTeaser = React.forwardRef<HTMLDivElement, FoodboxTeaserProps>((props, ref) => {\n const recipeId = props.id;\n\n const { isFavourite, onFavouriteRecipeToggleClick, isLoading } = useSingleFavorite(\n recipeId,\n props.name,\n );\n\n const { trackRecipeClick } = useRecipeEventsTracking();\n\n const handleLinkClick = (e: React.MouseEvent) => {\n ga4RecipesTracking.click.foodbox(props.id, props.name);\n trackRecipeClick(props.id);\n props.onLinkClick?.(e);\n };\n\n return (\n <BaseRecipeTeaser.Wrapper\n ref={ref}\n name={props.name}\n imageUrl={props.imageUrl}\n withBorder={props.withBorder}\n topSlot={\n <FavoriteRecipeToggle\n isFavorite={isFavourite}\n onClick={onFavouriteRecipeToggleClick}\n disabled={isLoading}\n />\n }\n >\n <BaseRecipeTeaser.Badges>\n <Chip theme=\"whiteBlack\" size={32}>\n Färdigt paket\n </Chip>\n </BaseRecipeTeaser.Badges>\n <BaseRecipeTeaser.Content>\n <BaseRecipeTeaser.Info>\n <BaseRecipeTeaser.Heading>{props.name}</BaseRecipeTeaser.Heading>\n </BaseRecipeTeaser.Info>\n <BaseRecipeTeaser.Actions>\n <Button\n fullWidth\n asChild\n theme=\"primary\"\n aria-label={`Se paket - ${props.name}`}\n >\n <a href={props.url} onClick={handleLinkClick}>\n Se paket\n </a>\n </Button>\n </BaseRecipeTeaser.Actions>\n </BaseRecipeTeaser.Content>\n </BaseRecipeTeaser.Wrapper>\n );\n});\n\nexport default FoodboxTeaser;\n","// extracted by mini-css-extract-plugin\nexport default {\"Heading\":\"E17FI2IV\",\"Heading--coopGreen\":\"JZ_2qqd6\",\"Heading--darkGreen\":\"htkN9xWM\",\"Heading--white\":\"y1M7QAC6\",\"Heading--black\":\"K8xICLcl\",\"Heading--colorGreen2\":\"wUVrHEa9\",\"FontFamilySecondary\":\"CO0BQ7N3\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport styles from './Heading.module.less';\n\ninterface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n element: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';\n stylingElement?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n fontFamilySecondary?: boolean;\n color?: 'coopGreen' | 'darkGreen' | 'white' | 'black' | 'colorGreen2';\n alignment?: 'start' | 'center' | 'end';\n}\n\nconst Heading = React.forwardRef<HTMLHeadingElement, React.PropsWithChildren<HeadingProps>>(\n (props, ref) => {\n if (!props.children) return null;\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { fontFamilySecondary, stylingElement, element, className, alignment, ...rest } =\n props;\n\n const alignStyles: React.CSSProperties = {\n width: '100%',\n };\n switch (alignment) {\n case 'start': {\n alignStyles.textAlign = 'left';\n break;\n }\n case 'end': {\n alignStyles.textAlign = 'right';\n break;\n }\n case 'center':\n default: {\n alignStyles.textAlign = 'center';\n break;\n }\n }\n return (\n <props.element\n ref={ref}\n className={classNames(\n styles.Heading,\n stylingElement && `Heading--${stylingElement}`,\n props.color ? styles[`Heading--${props.color}`] : styles['Heading--black'],\n fontFamilySecondary && styles.FontFamilySecondary,\n className,\n )}\n style={{\n ...rest.style,\n ...alignStyles,\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {props.children}\n </props.element>\n );\n },\n);\n\ninterface PageHeadingProps extends Omit<HeadingProps, 'element'> {\n visuallyHidden?: boolean;\n}\n\nexport const PageHeading = React.forwardRef<\n HTMLHeadingElement,\n React.PropsWithChildren<PageHeadingProps>\n>((props, ref) => {\n // The effect simulates what browsers do on a normal non-SPA apps - they reloading a page and set focus to the top of the page (body).\n useEffect(() => {\n document.body.focus();\n }, []);\n\n return (\n <Heading\n ref={ref}\n element=\"h1\"\n tabIndex={-1}\n stylingElement={props.stylingElement}\n fontFamilySecondary={props.fontFamilySecondary}\n className={classNames(props.className, props.visuallyHidden && 'u-hiddenVisually')}\n color={props.color}\n >\n {props.children}\n </Heading>\n );\n});\n\nexport default Heading;\n","export const getBannerSize = (cellsInRow: number) => {\n let x = 1;\n\n switch (cellsInRow) {\n case 1:\n x = 1;\n break;\n case 2:\n x = 2;\n break;\n case 3:\n x = 2;\n break;\n case 4:\n x = 2;\n break;\n case 5:\n x = 2;\n break;\n case 6:\n x = 2;\n break;\n case 7:\n x = 3;\n break;\n case 8:\n x = 3;\n break;\n default:\n break;\n }\n\n return x;\n};\n","import { useInViewWithPrerender } from '../../hooks/useInViewWithPrerender';\nimport { useBrowserMinMediaQuery } from '../atoms/ResponsiveBreakpoints';\nimport styles from './ListBlock.module.less';\nimport { getBannerSize } from './ListBlock.utils';\n\nexport const useListBlockLazyLoading = (lazyLoad: boolean = true) => {\n const inView = useInViewWithPrerender({\n triggerOnce: true,\n threshold: 0,\n rootMargin: '50px',\n initialInView: !lazyLoad,\n });\n\n return inView;\n};\n\nexport const useGridBannerSize = (cellsInRow: number) => {\n const isMoreThan900px = useBrowserMinMediaQuery(900);\n const bannerCellSize = getBannerSize(cellsInRow);\n\n if (cellsInRow === 3 && !isMoreThan900px) {\n return styles[`BannerCell${3}of${cellsInRow}`];\n }\n\n return styles[`BannerCell${bannerCellSize}of${cellsInRow}`];\n};\n","import { useInView } from 'react-intersection-observer';\n\nexport const useInViewWithPrerender = (options: Parameters<typeof useInView>[0]) => {\n const inView = useInView({\n ...options,\n initialInView: (options && options.initialInView) || window.isPrerenderCrawler,\n });\n\n return inView;\n};\n","import classnames from 'classnames';\nimport * as React from 'react';\n\nimport ItemGrid from './ItemGrid';\n\ntype ItemGridWithLoadingProps<T> = {\n horizontalHidden: boolean;\n isLoading: boolean;\n skeletonCount?: number;\n renderSkeleton?: () => React.ReactNode;\n} & React.ComponentPropsWithoutRef<typeof ItemGrid<T>>;\n\nconst ItemGridWithLoading = <T,>(\n props: ItemGridWithLoadingProps<T>,\n ref?: React.Ref<HTMLUListElement>,\n) => {\n if (!props.isLoading && props.items?.length === 0) return null;\n\n return props.isLoading ? (\n <ItemGrid\n ref={ref}\n cellsInRow={props.cellsInRow}\n gridClasses={classnames(\n props.horizontalHidden && 'Grid--horizontalHidden',\n props.gridClasses,\n )}\n itemUniqueKey={(item, index) => `${item.identifier}_${index}`}\n items={[...Array(props.skeletonCount || props.cellsInRow)].map((x, index) => ({\n identifier: index.toString(),\n }))}\n renderItem={() => (props.renderSkeleton ? props.renderSkeleton() : null)}\n renderAtRowStart={props.renderAtRowStart}\n renderAtRowEnd={props.renderAtRowEnd}\n itemClasses={props.itemClasses}\n noDefaultClasses={props.noDefaultClasses}\n styles={props.styles}\n />\n ) : (\n <ItemGrid\n ref={ref}\n cellsInRow={props.cellsInRow}\n gridClasses={classnames(\n props.horizontalHidden && 'Grid--horizontalHidden',\n props.gridClasses,\n )}\n items={props.items}\n itemUniqueKey={props.itemUniqueKey}\n renderItem={props.renderItem}\n renderAtRowStart={props.renderAtRowStart}\n renderAtRowEnd={props.renderAtRowEnd}\n itemClasses={props.itemClasses}\n noDefaultClasses={props.noDefaultClasses}\n styles={props.styles}\n />\n );\n};\n\nexport default React.forwardRef(ItemGridWithLoading);\n","/* eslint-disable react/jsx-props-no-spreading */\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { useImperativeHandle, useRef } from 'react';\nimport type { SwiperOptions } from 'swiper/types';\n\nimport { SkipLinkScoped } from '../../../base/components/SkipLink';\nimport ItemGridWithLoading from '../../../ecommerce/components/ItemGrid/ItemGridWithLoading';\nimport useGaListPositionCalculation from '../../hooks/useGaListPositionCalculation';\nimport type { ImageTextPropertyBlockProps } from '../organisms/ImageTextPropertyBlock/ImageTextPropertyBlock';\nimport ImageTextPropertyBlock from '../organisms/ImageTextPropertyBlock/ImageTextPropertyBlock';\nimport { SwipableList } from '../SwipableList';\nimport { useGridBannerSize } from './ListBlock.hooks';\nimport styles from './ListBlock.module.less';\n\nexport interface ListBlockProps<T> extends Omit<ListBlockOptions, 'lazyLoad'> {\n headerSlot?: React.ReactNode;\n items?: T[];\n renderItem: (item: T, index: number, listPosition: number | undefined) => React.ReactElement;\n itemUniqueKey: (item: T, index: number) => string;\n isLoading: boolean;\n cellsInRow: number;\n swiperOptions?: SwiperOptions;\n swiperMainClassName?: string;\n gridClasses?: string;\n skeletonCount?: number;\n renderSkeleton: () => React.ReactNode;\n}\n\nexport interface ListBlockOptions {\n analyticsListName: string;\n useSwiper: boolean;\n lazyLoad: boolean;\n horizontalHidden: boolean;\n backgroundColor?:\n | ''\n | 'Background--light1Green2'\n | 'Background--light1Green3'\n | 'Background--light1Green4';\n banner?: ImageTextPropertyBlockProps;\n}\n\nexport interface TeaserOptions {\n disableLink: boolean;\n disableAsyncLink: boolean;\n}\n\nconst ListBlock = React.forwardRef(\n <T, C extends React.ElementType = 'div'>(\n props: React.PolymorphicComponentPropsWithRef<C, ListBlockProps<T>>,\n ref: React.PolymorphicRef<C>,\n ) => {\n const listBlockRef = useRef<React.PolymorphicRef<C>>(null);\n\n const { isLoading, items, itemUniqueKey, renderSkeleton, cellsInRow, skeletonCount } =\n props;\n\n const { listPosition } = useGaListPositionCalculation(listBlockRef);\n\n useImperativeHandle(ref, () => listBlockRef.current);\n\n const renderItem = (product: T, index: number) =>\n props.renderItem(product, index, listPosition);\n\n const swiperOptions: SwiperOptions = {\n spaceBetween: 2,\n ...props.swiperOptions,\n };\n\n const bannerCellSize = useGridBannerSize(cellsInRow);\n\n const Component = props.as || 'div';\n\n return (\n <Component\n aria-labelledby={props['aria-labelledby']}\n role=\"group\"\n ref={listBlockRef}\n className={classnames(\n styles.Container,\n props.backgroundColor && styles[props.backgroundColor],\n )}\n data-list={props.analyticsListName}\n >\n <SkipLinkScoped\n skipLinkText=\"Hoppa över listan\"\n skipTargetText=\"Listan har hoppats över\"\n >\n {(isLoading || !!items?.length) && props.headerSlot}\n {props.useSwiper ? (\n <div\n className={classnames(\n styles.ListContainer,\n props.banner && styles.WithBanner,\n )}\n >\n {props.banner && (\n <div className={styles.Banner}>\n <ImageTextPropertyBlock {...props.banner} />\n </div>\n )}\n <div className={styles.SwiperContainer}>\n <SwipableList\n swiperMainClassName={classnames(\n props.swiperMainClassName,\n styles.Swiper,\n )}\n swiperPaginationClass={props.banner && styles.SwiperPagination}\n swiperOptions={swiperOptions}\n >\n {!items || !items.length\n ? Array.from({ length: 8 }).map((_item, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <React.Fragment key={index}>\n {renderSkeleton()}\n </React.Fragment>\n ))\n : items.map((item, index) => (\n <React.Fragment\n key={props.itemUniqueKey(item, index)}\n >\n {renderItem(item, index)}\n </React.Fragment>\n ))}\n </SwipableList>\n </div>\n </div>\n ) : (\n <ItemGridWithLoading\n renderAtRowStart={(row) => {\n if (row === 0) {\n return (\n props.banner && (\n <div className={`Grid-cell ${bannerCellSize}`}>\n <div\n className={classnames(\n styles.Banner,\n styles.GridBanner,\n )}\n >\n <ImageTextPropertyBlock {...props.banner} />\n </div>\n </div>\n )\n );\n }\n return undefined;\n }}\n isLoading={isLoading}\n items={items}\n itemUniqueKey={itemUniqueKey}\n renderItem={renderItem}\n renderSkeleton={renderSkeleton}\n horizontalHidden={props.horizontalHidden}\n cellsInRow={cellsInRow}\n gridClasses={classnames(props.gridClasses)}\n skeletonCount={skeletonCount}\n />\n )}\n </SkipLinkScoped>\n </Component>\n );\n },\n);\n\nexport default ListBlock;\n","import type React from 'react';\nimport { useLayoutEffect, useState } from 'react';\n\nconst useGaListPositionCalculation = <T extends Element>(ref: React.RefObject<T>) => {\n const [listPosition, setListPosition] = useState<number>();\n\n useLayoutEffect(() => {\n const lists = document.querySelectorAll('[data-list]');\n const position = Array.from(lists).findIndex((el) => el === ref.current);\n setListPosition(position > -1 ? position : undefined);\n }, [ref]);\n\n return {\n listPosition,\n };\n};\n\nexport default useGaListPositionCalculation;\n","import { Chip } from '@coop/components';\nimport classnames from 'classnames';\n\nimport Heading from '../Heading';\nimport styles from './ListBlock.module.less';\n\ninterface ListBlockHeaderProps {\n id?: string;\n headingProps?: React.ComponentPropsWithoutRef<typeof Heading>;\n linkText?: string;\n linkUrl?: string;\n}\n\n/**\n * Old header\n */\nconst ListBlockHeader = ({\n id,\n headingProps,\n linkText,\n linkUrl,\n children,\n}: React.PropsWithChildren<ListBlockHeaderProps>) => {\n const hasHeaderText = !!children;\n const hasLink = linkText && linkUrl;\n\n return (\n <div\n className={classnames(\n 'u-flex u-flexJustifySpaceBetween u-flexAlignCenter',\n (hasHeaderText || hasLink) && 'u-paddingBxsm',\n )}\n >\n <div style={{ width: '100%' }}>\n {hasHeaderText && (\n <Heading\n id={id}\n className=\"u-marginAz\"\n element={headingProps?.element || 'h2'}\n stylingElement={headingProps?.stylingElement || 'h4'}\n color={headingProps?.color || 'black'}\n alignment={headingProps?.alignment || 'start'}\n >\n {children}\n </Heading>\n )}\n </div>\n\n {hasLink && (\n <a className=\"Link Link--green u-flexShrinkNone\" href={linkUrl}>\n {linkText}\n </a>\n )}\n </div>\n );\n};\n\nexport const BlockHeader = ({\n linkText,\n linkUrl,\n headingProps,\n children,\n id,\n}: React.PropsWithChildren<ListBlockHeaderProps>) => {\n return (\n !!children && (\n <div className={styles.HeaderContainer}>\n {linkText && linkUrl && (\n <Chip size={24} theme=\"whiteGreen\" asChild className={styles.Link}>\n <a href={linkUrl}>{linkText}</a>\n </Chip>\n )}\n <Heading\n id={id}\n className={styles.Header}\n element={headingProps?.element || 'h2'}\n stylingElement={headingProps?.stylingElement || 'h2'} // we do not have exactly the same h2 secondary font, we override this for now with styles.Header\n color={headingProps?.color || 'darkGreen'}\n alignment={headingProps?.alignment || 'center'}\n fontFamilySecondary\n >\n {children}\n </Heading>\n </div>\n )\n );\n};\n\nexport default ListBlockHeader;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Button } from '@coop/components';\nimport * as React from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { type UncontrolledNumericStepperHandle, NumericStepper } from '../atoms/NumericStepper';\n\ninterface QuantityStepperProps {\n quantity: number;\n setQuantity: (quantity: number) => void;\n buyButtonRef?: React.RefObject<HTMLButtonElement>;\n isBlocked?: (newQuantity: number) => boolean;\n onBlock?: (newQuantity: number, prevQuantity: number) => void;\n withBuyButton?: boolean;\n fullWidth?: boolean;\n onAddClick?: (e: React.MouseEvent<HTMLElement>) => void;\n onRemoveClick?: (e: React.MouseEvent<HTMLElement>) => void;\n buyButtonLabel?: string;\n inputLabel?: string;\n addButtonLabel?: string;\n removeButtonLabel?: string;\n}\n\nconst QuantityStepper = ({\n setQuantity,\n onBlock,\n onAddClick,\n onRemoveClick,\n isBlocked,\n ...props\n}: QuantityStepperProps) => {\n const numericStepperRef = useRef<UncontrolledNumericStepperHandle>(null);\n const [optimisticShowBuyButton, setOptimisticShowBuyButton] = useState(\n props.withBuyButton && props.quantity === 0,\n );\n\n useLayoutEffect(() => {\n // sync internal state with parent, i.e. when add to cart fails\n numericStepperRef.current?.setValue(props.quantity);\n }, [numericStepperRef, props.quantity]);\n\n useEffect(() => {\n if (props.withBuyButton) {\n setOptimisticShowBuyButton(props.quantity === 0);\n }\n }, [props.quantity, props.withBuyButton]);\n\n const handleConfirm = useCallback(\n (newQuantity: number, prevQuantity: number) => {\n if (isBlocked?.(newQuantity)) {\n numericStepperRef.current?.revertValue();\n onBlock?.(newQuantity, prevQuantity);\n return;\n }\n\n setQuantity?.(newQuantity);\n if (props.withBuyButton) {\n setOptimisticShowBuyButton(newQuantity === 0);\n }\n },\n [setQuantity, isBlocked, props.withBuyButton, onBlock],\n );\n\n return optimisticShowBuyButton ? (\n <Button\n ref={props.buyButtonRef}\n data-testid=\"add_to_cart_button\"\n theme=\"primary\"\n size={40}\n fullWidth={props.fullWidth}\n onClick={() => handleConfirm(1, 0)}\n aria-label={props.buyButtonLabel}\n className={!props.fullWidth ? 'u-marginRauto' : ''}\n >\n Köp\n </Button>\n ) : (\n <NumericStepper\n ref={numericStepperRef}\n /**\n * If component is used with \"Köp\" button, then clicking \"Köp\" should immediately set quanity to 1, without the need to wait for the parent to set quanity, since that can be coupled with backend calls.\n * If component is not using \"Köp\" button then we need to set the quanity from parent.\n * Default value is only relevant on first render, in subsequent renders useLayoutEffect's numericStepperRef will sync the state with the parent.\n */\n defaultValue={props.quantity || (props.withBuyButton ? 1 : props.quantity)}\n minValue={0}\n incrementBy={1}\n fullWidth={props.fullWidth}\n onConfirm={handleConfirm}\n onAddClick={onAddClick}\n onRemoveClick={onRemoveClick}\n inputLabel={props.inputLabel}\n addButtonLabel={props.addButtonLabel}\n removeButtonLabel={props.removeButtonLabel}\n />\n );\n};\n\nexport default React.memo(QuantityStepper);\n","import { Button, Chip } from '@coop/components';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { useSingleFavorite } from '../../hooks/useFavouriteRecipes';\nimport { useRecipeEventsTracking } from '../../hooks/useRecipeEventsTracking';\nimport { ga4RecipesTracking } from '../../tracking/ga4/recipes';\nimport BaseRecipeTeaser from '../BaseRecipeTeaser';\nimport FavoriteRecipeToggle from '../molecules/FavoriteRecipeToggle';\nimport { RatingStars } from '../molecules/RatingStars';\nimport styles from './RecipeTeaser.module.less';\n\ninterface RecipeTeaserProps {\n id: string;\n name: string;\n rating: number;\n votes: number;\n url: string;\n imageUrl: string;\n co2ImpactKg: number | null;\n onLinkClick?: (e: React.MouseEvent) => void;\n withBorder?: boolean;\n topSlot?: React.ReactNode;\n}\n\nconst RecipeTeaser = React.forwardRef<HTMLDivElement, RecipeTeaserProps>((props, ref) => {\n const { isFavourite, onFavouriteRecipeToggleClick, isLoading } = useSingleFavorite(\n props.id,\n props.name,\n );\n\n const { trackRecipeClick } = useRecipeEventsTracking();\n\n const handleLinkClick = (e: React.MouseEvent) => {\n ga4RecipesTracking.click.recipe(props.id, props.name);\n trackRecipeClick(props.id);\n props.onLinkClick?.(e);\n };\n\n return (\n <BaseRecipeTeaser.Wrapper\n ref={ref}\n name={props.name}\n imageUrl={props.imageUrl}\n withBorder={props.withBorder}\n topSlot={\n <FavoriteRecipeToggle\n isFavorite={isFavourite}\n onClick={onFavouriteRecipeToggleClick}\n disabled={isLoading}\n />\n }\n >\n <BaseRecipeTeaser.Badges>\n <Chip theme=\"whiteBlack\" size={32}>\n Recept\n </Chip>\n </BaseRecipeTeaser.Badges>\n <BaseRecipeTeaser.Content>\n <BaseRecipeTeaser.Info>\n <BaseRecipeTeaser.Heading flexOrder={1}>{props.name}</BaseRecipeTeaser.Heading>\n <BaseRecipeTeaser.RatingContainer>\n <RatingStars rating={props.rating} votes={props.votes} />\n <BaseRecipeTeaser.ClimateImpact co2ImpactKg={props.co2ImpactKg} />\n </BaseRecipeTeaser.RatingContainer>\n </BaseRecipeTeaser.Info>\n <BaseRecipeTeaser.Actions>\n <Button\n className={classnames(styles.Teaser, styles.Button)}\n fullWidth\n asChild\n theme=\"primary\"\n aria-label={`Se recept - ${props.name}`}\n >\n <a href={props.url} onClick={handleLinkClick}>\n Se recept\n </a>\n </Button>\n </BaseRecipeTeaser.Actions>\n </BaseRecipeTeaser.Content>\n </BaseRecipeTeaser.Wrapper>\n );\n});\n\nexport default RecipeTeaser;\n","// extracted by mini-css-extract-plugin\nexport default {\"Teaser\":\"BZGASSBq\",\"Button\":\"I6qDwsWs\"};","interface RecipeTypeComponentPickerProps {\n isFoodbox: boolean;\n recipeSlot: React.ReactNode;\n foodboxSlot: React.ReactNode;\n}\n\nconst RecipeTypeComponentPicker = (props: RecipeTypeComponentPickerProps) => {\n return props.isFoodbox ? props.foodboxSlot : props.recipeSlot;\n};\n\nexport default RecipeTypeComponentPicker;\n","/* eslint-disable no-param-reassign */\n/* eslint-disable react/jsx-props-no-spreading */\nimport 'swiper/less';\nimport 'swiper/less/navigation';\nimport 'swiper/less/pagination';\nimport 'swiper/less/scrollbar';\nimport './Swiper.less';\n\nimport { Icon } from '@coop/components';\nimport { ChevronLeftIcon, ChevronRightIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type { FC } from 'react';\nimport * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { Navigation, Pagination, Scrollbar } from 'swiper/modules';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport type { NavigationOptions, ScrollbarOptions, SwiperOptions } from 'swiper/types';\n\nimport { useA11yAnnouncerDispatch } from '../../hooks/useA11yAnnouncerDispatch';\nimport { useIsMobile } from '../atoms/ResponsiveBreakpoints';\n\nexport interface SwipableListProps {\n swiperMainClassName?: string;\n swiperButtonClassName?: string;\n swiperPaginationClass?: string;\n swiperOptions?: SwiperOptions;\n onSwiper?: React.ComponentProps<typeof Swiper>['onSwiper'];\n}\n\ninterface NavButtonProps {\n hasScrollbar: boolean;\n class?: string;\n}\n\nconst PrevButton = React.forwardRef<HTMLButtonElement, NavButtonProps>((props, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={classNames(\n 'swiper-button swiper-button--prev',\n props.hasScrollbar && 'swiper-button--scrollbar',\n props.class,\n )}\n aria-label=\"Se tidigare i listan\"\n >\n <Icon icon={ChevronLeftIcon} className=\"swiper-arrow\" aria-hidden />\n </button>\n));\n\nconst NextButton = React.forwardRef<HTMLButtonElement, NavButtonProps>((props, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={classNames(\n 'swiper-button swiper-button--next',\n props.hasScrollbar && 'swiper-button--scrollbar',\n props.class,\n )}\n aria-label=\"Se fler i listan\"\n >\n <Icon icon={ChevronRightIcon} className=\"swiper-arrow\" aria-hidden />\n </button>\n));\n\nconst isScrollbarOptions = (\n scrollbar: boolean | ScrollbarOptions,\n): scrollbar is ScrollbarOptions => {\n return (scrollbar as ScrollbarOptions).el !== undefined;\n};\n\nconst modifySwiperOptions = (customSwiperOptions?: SwiperOptions): SwiperOptions => {\n let scrollbar: boolean | ScrollbarOptions = false;\n\n if (customSwiperOptions && customSwiperOptions.scrollbar) {\n if (!isScrollbarOptions(customSwiperOptions.scrollbar)) {\n scrollbar = {\n el: '.swiper-scrollbar-container',\n draggable: true,\n };\n } else {\n scrollbar = {\n el: '.swiper-scrollbar-container',\n draggable: true,\n ...customSwiperOptions.scrollbar,\n };\n }\n }\n\n return {\n watchSlidesProgress: true,\n ...customSwiperOptions,\n containerModifierClass: classNames('swiper-container--'),\n scrollbar,\n };\n};\n\nconst SwipableList: FC<React.PropsWithChildren<SwipableListProps>> = (props) => {\n const [nextEl, setNextEl] = useState<HTMLButtonElement | null>(null);\n const [prevEl, setPrevEl] = useState<HTMLButtonElement | null>(null);\n const [paginationEl, setPaginationEl] = useState<HTMLDivElement | null>(null);\n\n const focusTimer = useRef<NodeJS.Timeout | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const announce = useA11yAnnouncerDispatch();\n\n // iphone crashes if we have too many items in the swiper\n const MAX_NUMBER_OF_SWIPABLE_ITEMS = 60;\n\n // this is important becase the ref wont change but the value in the ref will. So we need to use the element to trigger useMemo, not the ref\n const swiperOptions: SwiperOptions = useMemo(() => {\n return {\n threshold: 5,\n navigation: {\n ...(props.swiperOptions?.navigation as NavigationOptions),\n disabledClass: 'is-hidden',\n nextEl,\n prevEl,\n },\n pagination: {\n clickable: true,\n el: paginationEl,\n lockClass: 'is-hidden',\n dynamicBullets: true,\n dynamicMainBullets: 5,\n },\n ...modifySwiperOptions(props.swiperOptions),\n };\n }, [nextEl, prevEl, paginationEl, props.swiperOptions]);\n const isMobile = useIsMobile();\n return (\n <>\n <div\n ref={containerRef}\n className={classNames(\n 'swiper',\n props.swiperMainClassName,\n isMobile && 'swiper-disabledNavigation',\n !isMobile && swiperOptions?.watchSlidesProgress && 'swiper-watch',\n )}\n >\n <PrevButton\n class={props.swiperButtonClassName}\n ref={setPrevEl}\n hasScrollbar={!!swiperOptions.scrollbar}\n />\n\n <Swiper\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...swiperOptions}\n modules={[Navigation, Pagination, Scrollbar]}\n onSwiper={props.onSwiper}\n wrapperTag=\"ul\"\n onSlideChange={(swiper) => {\n if (focusTimer.current) {\n clearTimeout(focusTimer.current);\n }\n const setFocus = () => {\n const focusElement = containerRef.current?.querySelector<HTMLElement>(\n '.swiper-slide-active a, .swiper-slide-active button',\n );\n if (focusElement) {\n focusElement.focus();\n }\n };\n\n announce(`Visar sida ${swiper.snapIndex + 1}`);\n /** timeout much match transitiontime which is 400ms */\n focusTimer.current = setTimeout(setFocus, 500);\n }}\n >\n {React.Children.map(\n props.children,\n (child, index) =>\n child &&\n index < MAX_NUMBER_OF_SWIPABLE_ITEMS && (\n <SwiperSlide tag=\"li\">{child}</SwiperSlide>\n ),\n )}\n {swiperOptions.scrollbar && <div className=\"swiper-scrollbar-container\" />}\n </Swiper>\n\n <NextButton\n class={props.swiperButtonClassName}\n ref={setNextEl}\n hasScrollbar={!!swiperOptions.scrollbar}\n />\n </div>\n {swiperOptions.pagination && (\n <div\n ref={setPaginationEl}\n className={classNames('swiper-pagination', props.swiperPaginationClass)}\n />\n )}\n </>\n );\n};\n\nexport default SwipableList;\n","import { useCallback, useEffect } from 'react';\n\nimport { currentPageActions } from '../store/slices/currentPage/currentPageSlice';\nimport { useAppDispatch } from './useThunkDispatch';\n\nexport const useA11yAnnouncerDispatch = () => {\n const dispatch = useAppDispatch();\n\n const a11yAnnounceDispatch = useCallback(\n (value: string) => {\n dispatch(currentPageActions.setA11yAnnounceText(value));\n },\n [dispatch],\n );\n\n return a11yAnnounceDispatch;\n};\n\nexport const useA11yAnnouncerDispatchEffect = (value: string | undefined) => {\n const dispatchA11yAnnouncer = useA11yAnnouncerDispatch();\n\n useEffect(() => {\n if (!value) {\n return;\n }\n\n dispatchA11yAnnouncer(value);\n }, [dispatchA11yAnnouncer, value]);\n};\n","// Cloudinary url api:\n// http://cloudinary.com/documentation/image_transformations#reference\n\nimport type { FC } from 'react';\n\nimport { getFallbackImgUrl, getTransformedImageUrl } from '../../utils/cloudinaryImageUtils';\nimport Image from './Image';\n\nexport const removeStartingSlash = (str: string | null | undefined) => {\n if (!str) {\n return str;\n }\n\n if (str[0] === '/') {\n return str.slice(1);\n }\n\n return str;\n};\n\nexport const CLOUDINARY_ASPECT_RATIO_TRANSFORMS = {\n ratio16By9: {\n transform: `e_sharpen,f_auto,fl_progressive,q_auto,c_lpad,g_center,ar_${16 / 9},c_crop`,\n cssPadding: (9 / 16) * 100,\n },\n};\n\ninterface CloudinaryImageProps {\n // alt tag of image\n onClick?: React.MouseEventHandler<HTMLImageElement>;\n name: string;\n // title tag of image\n title?: string;\n url: string | undefined;\n // if url is missing, this will be fallback\n fallbackUrl?: string;\n retinaTransform?: string;\n transform: string;\n cssClass?: string;\n lazy?: boolean;\n fileExtenson?: string;\n width?: string | number;\n height?: string | number;\n}\n\nconst FallbackImg = (props: CloudinaryImageProps) => {\n return (\n <img\n className={props.cssClass}\n alt={props.name}\n title={props.title}\n src={getFallbackImgUrl(props.fallbackUrl)}\n width={props.width}\n height={props.height}\n />\n );\n};\n\ninterface TransformedImageProps extends Omit<CloudinaryImageProps, 'url'> {\n url: string;\n}\n\nconst TransformedImage = (props: TransformedImageProps) => {\n const transformedUrl = getTransformedImageUrl(\n props.url,\n props.transform,\n props.fileExtenson,\n undefined,\n props.name,\n );\n const srcSet = props.retinaTransform\n ? getTransformedImageUrl(\n props.url,\n props.transform,\n props.fileExtenson,\n props.retinaTransform,\n props.name,\n )\n : undefined;\n\n return (\n <Image\n width={props.width}\n height={props.height}\n alt={props.name}\n title={props.title}\n src={transformedUrl}\n srcSet={srcSet}\n onClick={props.onClick}\n cssClass={props.cssClass}\n unloader={FallbackImg(props)}\n loader={\n <img\n className={props.cssClass}\n src=\"/Assets/Images/missing-image-white.png\"\n alt=\"placeholder\"\n width={props.width}\n height={props.height}\n />\n }\n lazy={props.lazy}\n />\n );\n};\n\nconst CloudinaryImage: FC<React.PropsWithChildren<CloudinaryImageProps>> = (\n props: CloudinaryImageProps,\n) => {\n if (!props.url) {\n return FallbackImg(props);\n }\n return TransformedImage({ ...props, url: props.url });\n};\n\nexport default CloudinaryImage;\n","import type { FC, ReactNode } from 'react';\nimport { Fragment } from 'react';\n\ninterface ConditionalWrapperProps {\n condition: boolean;\n renderWrapper: (children: ReactNode) => ReactNode;\n}\n\nexport const ConditionalWrapper: FC<React.PropsWithChildren<ConditionalWrapperProps>> = (props) =>\n // eslint-disable-next-line react/jsx-no-useless-fragment\n props.condition ? <>{props.renderWrapper(props.children)}</> : <>{props.children}</>;\n\ninterface ConditionalMultipleWrappersProps {\n choices: {\n condition: boolean;\n renderWrapper: (children: ReactNode) => ReactNode;\n }[];\n\n children: ReactNode;\n}\n\nexport const ConditionalMultipleWrappers: FC<\n React.PropsWithChildren<ConditionalMultipleWrappersProps>\n> = (props) => {\n return (\n <>\n {props.choices.map(\n (choice, index) =>\n choice.condition && (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={index}>{choice.renderWrapper(props.children)}</Fragment>\n ),\n )}\n </>\n );\n};\n","import type { FC } from 'react';\n\nimport { Browser, BrowserSize } from '../../../../../utility/browser';\n\ninterface DynamicHeroMediaProps {\n defaultUrl: string;\n xxsmUrl?: string;\n xsmUrl?: string;\n xlgUrl?: string;\n title?: string;\n loading?: 'lazy' | 'eager';\n}\n\nconst DynamicHeroMedia: FC<React.PropsWithChildren<DynamicHeroMediaProps>> = ({\n defaultUrl,\n xxsmUrl,\n xsmUrl,\n xlgUrl,\n title,\n loading,\n}) => {\n return (\n <picture className=\"Hero-media\">\n {xlgUrl && (\n <source\n media={`(min-width:${Browser.getBreakpoint(BrowserSize.xlg).from}px)`}\n srcSet={xlgUrl}\n />\n )}\n {xsmUrl && (\n <source\n media={`(min-width:${Browser.getBreakpoint(BrowserSize.xsm).from}px)`}\n srcSet={xsmUrl}\n />\n )}\n {xxsmUrl && <source media=\"(min-width: 0px)\" srcSet={xxsmUrl} />}\n <img src={defaultUrl} alt={title || ''} loading={loading} />\n </picture>\n );\n};\n\nexport default DynamicHeroMedia;\n","import { ChipIconButton } from '@coop/components';\nimport { ArrowLeftIcon, CloseIcon } from '@coop/icons';\nimport { useEffect, useRef } from 'react';\n\ninterface FlyInNavigationProps {\n backNavigationAllowed?: boolean;\n onBack?: () => void;\n onClose: () => void;\n autoFocus?: boolean;\n}\n\nexport const FlyinNavigation = ({\n backNavigationAllowed = false,\n ...props\n}: React.PropsWithChildren<FlyInNavigationProps>) => {\n const ref = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n if (ref.current && props.autoFocus) {\n ref.current.focus();\n }\n }, [props.autoFocus, ref]);\n\n return (\n <>\n {/* children are on top, to prevent z-index wars - when elements have the same zindex (or default), the DOM order determines whoch one is on top */}\n {/* both close and back are absolute here, so the order of children in JSX doesnt matter */}\n {props.children}\n\n {backNavigationAllowed && props.onBack && (\n <div className=\"FlyIn-back\">\n <ChipIconButton\n tabIndex={0}\n theme=\"whiteGreen\"\n size={32}\n onClick={props.onBack}\n icon={ArrowLeftIcon}\n label=\"Tillbaka\"\n />\n </div>\n )}\n <div className=\"FlyIn-close\">\n <ChipIconButton\n ref={ref}\n icon={CloseIcon}\n theme=\"whiteGreen\"\n onClick={props.onClose}\n size={32}\n label=\"Stäng\"\n />\n </div>\n </>\n );\n};\n\nexport default FlyinNavigation;\n","import classNames from 'classnames';\nimport type { FC } from 'react';\nimport { Img } from 'react-image';\n\ninterface ImageProps {\n src: string;\n alt?: string;\n title?: string;\n cssClass?: string;\n wrapperClassName?: string;\n lazy?: boolean;\n srcSet?: string;\n unloader?: JSX.Element;\n loader?: JSX.Element;\n width?: string | number;\n height?: string | number;\n onClick?: React.MouseEventHandler<HTMLImageElement>;\n ariaLabel?: string;\n}\n\nconst FallbackImg = (props: ImageProps) => {\n return <img className={props.cssClass} alt=\"\" />;\n};\n\nconst Image: FC<ImageProps> = (props: ImageProps) => {\n if (window.isPrerenderCrawler) {\n return (\n <div className={classNames('u-heightAll', props.wrapperClassName)}>\n <img\n className={props.cssClass}\n src={props.src}\n alt={props.alt || ''}\n srcSet={props.srcSet}\n draggable=\"false\"\n aria-label={props.ariaLabel}\n />\n </div>\n );\n }\n\n return (\n <Img\n onClick={props.onClick}\n alt={props.alt}\n title={props.title}\n src={props.src}\n srcSet={props.srcSet}\n decode={false}\n draggable=\"false\"\n className={props.cssClass}\n width={props.width}\n height={props.height}\n loading={props.lazy ? 'lazy' : undefined}\n unloader={props.unloader || FallbackImg(props)}\n loader={props.loader || FallbackImg(props)}\n />\n );\n};\n\nexport default Image;\n","// extracted by mini-css-extract-plugin\nexport default {\"NicotineInfo\":\"Ky_rXzJE\",\"Item\":\"nBMHj50C\"};","import classnames from 'classnames';\nimport type { FC } from 'react';\n\nimport styles from './MedicalInfo.module.less';\n\ninterface MedicalInfoProps {\n isNicotine?: boolean;\n isPharmaceutical?: boolean;\n}\n\nconst getMessage = (isNicotine?: boolean, isPharmaceutical?: boolean) => {\n return [\n ...(isPharmaceutical ? ['Läkemedel'] : []),\n ...(isNicotine ? ['FÃ¥r ej säljas vid misstanke om langning'] : []),\n ].join('. ');\n};\n\nexport const ItemMedicalInfo: FC<React.PropsWithChildren<MedicalInfoProps>> = (props) => {\n const message = getMessage(props.isNicotine, props.isPharmaceutical);\n\n if (!message) return null;\n\n return <div className={classnames(styles.NicotineInfo, styles.Item)}>{message}</div>;\n};\n\nconst ProductMedicalInfo: FC<React.PropsWithChildren<MedicalInfoProps>> = (props) => {\n const message = getMessage(props.isNicotine, props.isPharmaceutical);\n\n if (!message) return null;\n\n return <div className={styles.NicotineInfo}>{message}</div>;\n};\n\nexport default ProductMedicalInfo;\n","import { OverlayLoader } from '@coop/components';\nimport type { FC } from 'react';\n\nimport { useAppSelector } from '../../hooks/useThunkDispatch';\n\nconst FlyInOverlayLoader: FC<React.PropsWithChildren<unknown>> = () => {\n const isLoading = useAppSelector((state) => state.modal.isLoading);\n\n return <OverlayLoader isLoading={isLoading} blocking />;\n};\n\nexport default FlyInOverlayLoader;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Modal as BaseModal } from '@coop/components';\nimport classNames from 'classnames';\nimport { type PropsWithChildren } from 'react';\n\nimport { FlyInContextProvider } from '../../contexts/flyInContext';\nimport { SiteContextProvider, SiteContextType } from '../../contexts/siteContext';\nimport { useFlyInNavigationOutsideClickInterceptor } from '../../hooks/useFlyInNavigationInterceptor';\nimport { useAppSelector } from '../../hooks/useThunkDispatch';\nimport { ErrorGroup } from '../../store/structureDefinitions/errorsState';\nimport ErrorGroupNotification from '../molecules/GroupErrorNotifications/ErrorGroupNotification';\nimport FlyInOverlayLoader from './FlyInOverlayLoader';\n\nexport const MODAL_TOGGLE_TIME = 500;\n\ntype ModalProps = React.ComponentPropsWithoutRef<typeof BaseModal>;\n\nexport const Modal = (props: ModalProps) => {\n return (\n <SiteContextProvider siteContext={SiteContextType.Modal}>\n <BaseModal {...props}>\n {props.children}\n <ModalErrorNotification />\n </BaseModal>\n </SiteContextProvider>\n );\n};\n\ntype FlyInAlignment = 'left' | 'right';\n\ntype FlyInSizes = 250 | 375 | 460 | 510 | 540 | 1000;\n\nexport interface FlyInProps extends Omit<ModalProps, 'toggleTime'> {\n sizePx?: FlyInSizes;\n alignment?: FlyInAlignment;\n additionalClasses?: string;\n}\n\n// If you want to use a flyin that has it's own route and works with React Router, use FlyInRouted instead\nexport const FlyIn = ({\n alignment = 'right',\n sizePx = 540,\n ...props\n}: React.PropsWithChildren<FlyInProps>) => {\n return (\n <FlyInContextProvider>\n <FlyInInner\n isOpen={props.isOpen}\n afterClose={props.afterClose}\n close={props.close}\n alignment={alignment}\n sizePx={sizePx}\n additionalClasses={props.additionalClasses}\n disableOutsideClick={props.disableOutsideClick}\n asideModalContainerStyle={props.asideModalContainerStyle}\n idForDebug={props.idForDebug}\n renderTrigger={props.renderTrigger}\n afterOutsideClick={props.afterOutsideClick}\n disableOverlay={props.disableOverlay}\n initialFocusOnDialog={props.initialFocusOnDialog}\n animation={props.animation}\n additionalContainerClasses={props.additionalContainerClasses}\n >\n {props.children}\n </FlyInInner>\n </FlyInContextProvider>\n );\n};\n\nconst FlyInInner = (props: PropsWithChildren<FlyInProps>) => {\n const blockFlyIn = useAppSelector((state) => state.modal.blocked);\n\n const { outsideClick } = useFlyInNavigationOutsideClickInterceptor(props.close);\n return (\n <Modal\n alignment={props.alignment}\n isOpen={props.isOpen}\n afterClose={props.afterClose}\n close={outsideClick}\n disableOutsideClick={blockFlyIn || props.disableOutsideClick}\n asideModalContainerStyle={{\n ...props.asideModalContainerStyle,\n }}\n additionalClasses={classNames(\n 'FlyIn u-flex u-flexDirectionColumn u-heightAll u-textCenter mixinScroll u-bgWhite',\n getFlyInSizeClass(props.sizePx),\n props.additionalClasses,\n props.alignment === 'left' && 'FlyIn--left',\n props.alignment === 'right' && 'FlyIn--right',\n )}\n idForDebug={props.idForDebug}\n renderTrigger={props.renderTrigger}\n afterOutsideClick={props.afterOutsideClick}\n disableOverlay={props.disableOverlay}\n initialFocusOnDialog={props.initialFocusOnDialog}\n toggleTime={MODAL_TOGGLE_TIME}\n animation={props.animation}\n additionalContainerClasses={props.additionalContainerClasses}\n >\n <FlyInOverlayLoader />\n {props.children}\n <ModalErrorNotification />\n </Modal>\n );\n};\n\nconst getFlyInSizeClass = (sizePx?: FlyInSizes) => {\n switch (sizePx) {\n case 250:\n return 'FlyIn--size250';\n case 375:\n return 'FlyIn--size375';\n case 510:\n return 'FlyIn--size510';\n case 460:\n return 'FlyIn--size460';\n case 1000:\n return 'FlyIn--size1000';\n case 540:\n default:\n return 'FlyIn--size540';\n }\n};\n\nconst ModalErrorNotification = () =>\n ErrorGroupNotification({\n errorGroup: ErrorGroup.Modal,\n });\n","export const enum NoticeRibbonType {\n success = 'success',\n warning = 'warning',\n info = 'info',\n editOrder = 'editOrder',\n alertLevel1 = 'alert1',\n alertLevel2 = 'alert2',\n alertLevel3 = 'alert3',\n alertLevel4 = 'alert4',\n}\n","import { AccessibleIcon, Icon } from '@coop/components';\nimport { useSetTimeout } from '@coop/hooks';\nimport { ChevronDownIcon, CloseIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type { ReactNode } from 'react';\nimport * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { NoticeRibbonType } from './NoticeRibbon.types';\n\ntype NotceRibbonAlign = 'left' | 'center';\n\ntype NoticeRibbonColor = 'accentPink';\n\ninterface NoticeRibbonProps {\n show: boolean;\n type?: NoticeRibbonType;\n animated?: boolean;\n extraCss?: string;\n onClick?: () => void;\n handleCloseClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n hideAfterMiliseconds?: number; // set null if you want to disable automatic hide\n children?: React.ReactNode;\n expandableContent?: ReactNode;\n blockClose?: boolean;\n fixed?: boolean;\n align?: NotceRibbonAlign;\n color?: NoticeRibbonColor;\n rounded?: boolean;\n ariaLive?: 'assertive' | 'polite';\n}\n\nconst NoticeRibbon = ({\n align = 'center',\n animated = true,\n ...props\n}: React.PropsWithChildren<NoticeRibbonProps>) => {\n const containerStyles = classNames(\n 'Notice',\n props.type === NoticeRibbonType.warning && 'Notice--warning',\n props.type === NoticeRibbonType.info && 'Notice--info',\n props.type === NoticeRibbonType.success && 'Notice--success',\n props.type === NoticeRibbonType.editOrder && 'Notice--yellow',\n props.type === NoticeRibbonType.alertLevel1 && 'Notice--alert Notice--alert-level1',\n props.type === NoticeRibbonType.alertLevel2 && 'Notice--alert Notice--alert-level2',\n props.type === NoticeRibbonType.alertLevel3 && 'Notice--alert Notice--alert-level3',\n props.type === NoticeRibbonType.alertLevel4 && 'Notice--alert Notice--alert-level4',\n animated && 'Notice--animated',\n props.fixed && 'Notice--fixed',\n props.extraCss,\n props.onClick && 'u-cursorPointer',\n props.color && `Notice--${props.color}`,\n props.rounded && 'Notice--rounded',\n );\n\n const transitionRef = useRef(null);\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n useSetTimeout(\n props.show && !!props.hideAfterMiliseconds && !!props.handleCloseClick,\n props.hideAfterMiliseconds!,\n () => props.handleCloseClick?.(),\n );\n\n const Content = useMemo(\n () => (\n <NoticeRibbonContent\n ref={transitionRef}\n containerStyles={containerStyles}\n onClick={props.onClick}\n handleCloseClick={\n !props.hideAfterMiliseconds && !props.blockClose\n ? props.handleCloseClick\n : undefined\n }\n isExpanded={isExpanded}\n onExpandClick={() => setIsExpanded((prev) => !prev)}\n expandableContent={props.expandableContent}\n align={align}\n >\n {props.children}\n </NoticeRibbonContent>\n ),\n [\n containerStyles,\n props.onClick,\n props.hideAfterMiliseconds,\n props.blockClose,\n props.handleCloseClick,\n props.expandableContent,\n props.children,\n isExpanded,\n align,\n ],\n );\n\n if (!animated) {\n if (props.show) {\n return Content;\n }\n return null;\n }\n\n return (\n // Retrigger aria-live when the same text is shown multiple times. Without this, screen readers will not announce the same text if it is shown multiple times.\n <div aria-live={props.show ? props.ariaLive : 'off'}>\n <CSSTransition\n nodeRef={transitionRef}\n in={props.show}\n timeout={200}\n classNames={{\n appearDone: 'is-visible',\n enterDone: 'is-visible',\n }}\n appear\n unmountOnExit\n >\n {Content}\n </CSSTransition>\n </div>\n );\n};\n\ninterface NoticeRibbonContentProps {\n containerStyles: string;\n onClick?: () => void;\n handleCloseClick?: () => void;\n children: ReactNode;\n isExpanded: boolean;\n expandableContent: ReactNode;\n onExpandClick: () => void;\n align?: NotceRibbonAlign;\n}\n\nconst NoticeRibbonContent = React.forwardRef<HTMLDivElement, NoticeRibbonContentProps>(\n (props, ref) => {\n return (\n <div ref={ref} className={props.containerStyles} onClick={props.onClick}>\n <div\n className={classNames(\n 'Notice-content',\n props.align === 'left' && 'Notice-content--alignLeft',\n )}\n >\n {props.expandableContent && (\n <button\n type=\"button\"\n className=\"Notice-heading u-outlineDefault u-outlineSolidBase2\"\n onClick={props.onExpandClick}\n aria-label=\"Visa mer\"\n >\n {props.children}\n <Icon\n icon={ChevronDownIcon}\n rotateClockwise={props.isExpanded ? '180deg' : '0deg'}\n aria-hidden\n />\n </button>\n )}\n\n {!props.expandableContent &&\n (typeof props.children === 'string' ? (\n <div className=\"Notice-heading\">{props.children}</div>\n ) : (\n props.children\n ))}\n\n {props.handleCloseClick && (\n <button\n onClick={props.handleCloseClick}\n type=\"button\"\n name=\"closebutton\"\n className=\"Notice-close\"\n >\n <AccessibleIcon icon={CloseIcon} label=\"Stäng\" />\n </button>\n )}\n </div>\n\n {props.expandableContent && props.isExpanded && (\n <div className=\"Notice-expandedContent\">{props.expandableContent}</div>\n )}\n </div>\n );\n },\n);\n\nexport default NoticeRibbon;\n","/* eslint-disable no-param-reassign */\n\nimport { useCallback } from 'react';\n\nexport const useNumericStepperCalculation = ({\n incrementBy,\n minValue,\n maxValue,\n}: {\n incrementBy: number;\n maxValue?: number;\n minValue?: number;\n}) => {\n const isMaxValue = useCallback(\n (value: number) => (maxValue !== undefined ? value >= maxValue : false),\n [maxValue],\n );\n const isMinValue = useCallback(\n (value: number) => (minValue !== undefined ? value <= minValue : false),\n [minValue],\n );\n\n const minMaxGuard = useCallback(\n (value: number) => {\n if (maxValue !== undefined && isMaxValue(value)) {\n return maxValue;\n }\n\n if (minValue !== undefined && isMinValue(value)) {\n return minValue;\n }\n\n return value;\n },\n [isMaxValue, isMinValue, maxValue, minValue],\n );\n\n const calculateSubstractValue = useCallback(\n (oldQuantity: number) => {\n const newQuantity = oldQuantity - incrementBy;\n return minMaxGuard(newQuantity);\n },\n [incrementBy, minMaxGuard],\n );\n\n const calculateAdditionValue = useCallback(\n (oldQuantity: number) => {\n const newQuantity = oldQuantity + incrementBy;\n return minMaxGuard(newQuantity);\n },\n [incrementBy, minMaxGuard],\n );\n\n return {\n isMaxValue,\n isMinValue,\n calculateAdditionValue,\n calculateSubstractValue,\n minMaxGuard,\n };\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Wrapper\":\"J4nOT9Y3\",\"Container\":\"DGPmeKF5\",\"Input\":\"zIlAPfvs\",\"Button\":\"Lht0kw1o\",\"FullWidth\":\"PIRKOn98\"};","import { Icon } from '@coop/components';\nimport { PlusIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport styles from './NumericStepper.module.scss';\n\nconst NumericStepperAddButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, ref) => {\n const { className, ...otherProps } = props;\n\n return (\n <button\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...otherProps}\n type=\"button\"\n className={classNames(styles.Button, styles['Button--add'], className)}\n aria-label={props['aria-label'] || 'Öka antal'}\n data-testid=\"numericstepper-addbutton\"\n >\n <Icon icon={PlusIcon} aria-hidden />\n </button>\n );\n});\n\nexport default NumericStepperAddButton;\n","import { Icon } from '@coop/components';\nimport { MinusIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './NumericStepper.module.scss';\n\nconst NumericStepperSubtractButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<'button'>\n>((props, ref) => {\n const { className, ...otherProps } = props;\n\n return (\n <button\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...otherProps}\n type=\"button\"\n className={classNames(styles.Button, styles['Button--subtract'], className)}\n aria-label={props['aria-label'] || 'Minska antal'}\n data-testid=\"numericstepper-subtractbutton\"\n >\n <Icon icon={MinusIcon} aria-hidden />\n </button>\n );\n});\n\nexport default NumericStepperSubtractButton;\n","import classNames from 'classnames';\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\n\nimport { trimStart } from '../../../utils/stringUtils';\nimport { useNumericStepperCalculation } from './NumericStepper.hooks';\nimport styles from './NumericStepper.module.scss';\nimport type {\n NumericStepperBaseProps,\n UncontrolledNumericStepperHandle,\n} from './NumericStepper.types';\nimport NumericStepperAddButton from './NumericStepperAddButton';\nimport NumericStepperSubtractButton from './NumericStepperSubtractButton';\n\ninterface UncontrolledNumericStepperProps extends NumericStepperBaseProps {\n defaultValue?: number;\n onConfirm?: (newValue: number, prevValue: number) => void;\n}\n\nconst UncontrolledNumericStepper = forwardRef<\n UncontrolledNumericStepperHandle,\n UncontrolledNumericStepperProps\n>(({ onConfirm, ...props }, ref) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const prevValueRef = useRef(props.defaultValue || 0);\n\n const { calculateAdditionValue, calculateSubstractValue, minMaxGuard } =\n useNumericStepperCalculation({\n incrementBy: props.incrementBy,\n minValue: props.minValue,\n maxValue: props.maxValue,\n });\n\n useImperativeHandle(ref, (): UncontrolledNumericStepperHandle => {\n return {\n setValue: (_value: number) => {\n if (inputRef.current) {\n const value = minMaxGuard(_value);\n prevValueRef.current = inputRef.current.valueAsNumber;\n inputRef.current.valueAsNumber = value;\n }\n },\n revertValue: () => {\n if (inputRef.current) {\n inputRef.current.valueAsNumber = prevValueRef.current;\n }\n },\n value: inputRef.current?.valueAsNumber,\n };\n }, [minMaxGuard]);\n\n const confirmValue = useCallback(\n (newValue: number, prevValue: number) => {\n if (inputRef.current) inputRef.current.valueAsNumber = newValue;\n if (newValue !== prevValue) {\n onConfirm?.(newValue, prevValue);\n }\n },\n [onConfirm],\n );\n\n const handleInputConfirm = useCallback(\n (newValue: number, prevValue: number) => {\n let finalNewValue: number;\n // when user clears the input completely by backspace it will be NaN\n if (Number.isNaN(newValue)) {\n finalNewValue = prevValue || 0; // if user clears input and tabs out, revert to previous value\n } else {\n finalNewValue = minMaxGuard(newValue);\n }\n confirmValue(finalNewValue, prevValue);\n },\n [confirmValue, minMaxGuard],\n );\n\n return (\n <div className={classNames(styles.Wrapper, props.fullWidth && styles.FullWidth)}>\n <div className={styles.Container}>\n <NumericStepperSubtractButton\n aria-label={props.removeButtonLabel}\n onClick={(e) => {\n if (inputRef.current) {\n const newValue = calculateSubstractValue(\n inputRef.current.valueAsNumber,\n );\n prevValueRef.current = inputRef.current.valueAsNumber;\n confirmValue(newValue, inputRef.current.valueAsNumber);\n }\n props.onRemoveClick?.(e);\n }}\n />\n <input\n ref={inputRef}\n defaultValue={props.defaultValue || 0}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n handleInputConfirm(e.currentTarget.valueAsNumber, prevValueRef.current); // will trigger handleInputConfirm below. TODO remove the blur after UX is done with the new toast-like flow of adding to cart\n }\n }}\n onBlur={(e) =>\n handleInputConfirm(e.currentTarget.valueAsNumber, prevValueRef.current)\n }\n type=\"number\"\n pattern=\"\\d*\"\n min={props.minValue}\n max={props.maxValue}\n onFocus={(e) => {\n prevValueRef.current = e.currentTarget.valueAsNumber;\n e.currentTarget.select();\n }}\n onClick={(e) => {\n prevValueRef.current = e.currentTarget.valueAsNumber;\n e.currentTarget.select();\n }}\n onChange={(e) => {\n // disallow leading zeroes when typing a number while 0 is the current input value\n if (\n e.currentTarget.valueAsNumber !== 0 &&\n e.currentTarget.value.startsWith('0')\n ) {\n e.currentTarget.valueAsNumber = parseInt(\n trimStart(e.currentTarget.value, '0'),\n 10,\n );\n }\n }}\n className={styles.Input}\n data-test=\"numericstepper-productitemquantityinput\"\n aria-label={props.inputLabel}\n />\n <NumericStepperAddButton\n aria-label={props.addButtonLabel}\n onClick={(e) => {\n if (inputRef.current) {\n const newValue = calculateAdditionValue(inputRef.current.valueAsNumber);\n prevValueRef.current = inputRef.current.valueAsNumber;\n confirmValue(newValue, inputRef.current.valueAsNumber);\n }\n props.onAddClick?.(e);\n }}\n />\n </div>\n </div>\n );\n});\n\nexport default UncontrolledNumericStepper;\n","import type { FC } from 'react';\nimport Helmet from 'react-helmet';\n\nimport { isProductionEnvironment } from '../../../../../utility/environments';\nimport useDocumentHeadIsPreparedForReactHelmet from '../../../hooks/useDocumentHeadIsPreparedForReactHelmet';\nimport { getCanonical, getNextPage, getPrevPage } from '../../../utils/metaUtils';\nimport type { PageHeadData, PageHeadPagination } from './PageHead.types';\n\ninterface PageHeadProps {\n data: PageHeadData;\n pagination?: PageHeadPagination;\n}\n\nconst PageHead: FC<React.PropsWithChildren<PageHeadProps>> = (props) => {\n const link = { ...props.data.link };\n const meta = { ...props.data.meta };\n\n if (link && link.canonical) {\n link.canonical = getCanonical({\n path: link.canonical,\n page: props.pagination?.currentPage,\n });\n }\n\n let hasPrevPage = false;\n let hasNextPage = false;\n\n if (props.pagination) {\n hasPrevPage = props.pagination.currentPage !== 1;\n if (props.pagination.totalItems) {\n hasNextPage =\n props.pagination.pageSize * props.pagination.currentPage <=\n props.pagination.totalItems;\n }\n }\n\n if (hasPrevPage && link && props.pagination) {\n link.prevPage = getPrevPage(props.pagination.currentPage);\n }\n\n if (hasNextPage && link && props.pagination) {\n link.nextPage = getNextPage(props.pagination.currentPage);\n }\n\n const linkData =\n link &&\n Object.entries(link).filter(\n (item) => item[1] !== '' && item[1] !== undefined && item[1] !== null,\n );\n\n const metaData =\n meta &&\n Object.entries(meta).filter(\n (item) => item[1] !== '' && item[1] !== undefined && item[1] !== null,\n );\n\n let options: Parameters<typeof useDocumentHeadIsPreparedForReactHelmet>[0] = {\n link: linkData?.map(([key]) => ({ property: 'rel', value: key })),\n };\n\n if (metaData) {\n options = {\n ...options,\n meta: metaData.map(([key]) => ({ property: 'name', value: key })),\n };\n }\n\n const isDocumentHeadReadyForReactHelmet = useDocumentHeadIsPreparedForReactHelmet(options);\n\n return (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>\n {isDocumentHeadReadyForReactHelmet && (\n <Helmet>\n {props.data.title && (\n <title>\n {props.data.title +\n (!isProductionEnvironment ? ' - NOT FOR COMMERCIAL USE' : '')}\n </title>\n )}\n {metaData?.map(([property, value]) => (\n <meta key={property} name={property} content={value} />\n ))}\n\n {linkData?.map(([property, value]) => (\n <link key={property} rel={property} href={value} />\n ))}\n\n {props.children}\n </Helmet>\n )}\n </>\n );\n};\n\nexport default PageHead;\n","import type { ReactNode } from 'react';\nimport { useLayoutEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\ninterface PortalProps {\n domNode?: Element;\n domNodeSelector?: string;\n children?: ReactNode;\n}\n\n/**\n * Using Portal always replaces what was inside the domNode with Portal's children\n */\nconst Portal = (props: PortalProps) => {\n const domNode =\n props.domNode ||\n (props.domNodeSelector ? document.querySelector(props.domNodeSelector) : null);\n\n const [innerHtmlEmptied, setInnerHtmlEmptied] = useState(false);\n useLayoutEffect(() => {\n if (!innerHtmlEmptied && domNode) {\n domNode.innerHTML = '';\n setInnerHtmlEmptied(true);\n }\n }, [innerHtmlEmptied, domNode]);\n\n if (!innerHtmlEmptied) return null;\n\n if (!domNode) return null;\n\n return ReactDOM.createPortal(props.children, domNode);\n};\n\nexport { Portal as default };\n","import type { FC } from 'react';\nimport { useState } from 'react';\n\nimport { trim } from '../../../utils/stringUtils';\nimport CloudinaryImage from '../CloudinaryImage';\nimport styles from './ProductBadge.module.less';\n\ninterface Dimensions {\n width: number | 'auto';\n height: number | 'auto';\n}\n\ntype ProductBadgeProps = { dimensions: Dimensions; url: string; alt?: string } & (\n | { zoomable: true; zoomDimensions: Dimensions }\n | { zoomable: false }\n);\n\nconst getTransformDimensions = (dimensions: Dimensions) => {\n const height = dimensions.height !== 'auto' ? `h_${dimensions.height}` : '';\n const width = dimensions.width !== 'auto' ? `w_${dimensions.width}` : '';\n\n const retinaHeight = dimensions.height !== 'auto' ? `h_${dimensions.height * 2}` : '';\n const retinaWidth = dimensions.width !== 'auto' ? `w_${dimensions.width * 2}` : '';\n\n const transformDimensions = trim(`${height},${width}`, ',');\n const transformDimensionsRetina = trim(`${retinaHeight},${retinaWidth}`, ',');\n return { desktop: transformDimensions, retina: transformDimensionsRetina };\n};\n\nconst ProductBadge: FC<React.PropsWithChildren<ProductBadgeProps>> = (props) => {\n const cloudinaryDimensions = props.zoomable ? props.zoomDimensions : props.dimensions;\n const transformDimensions = getTransformDimensions(cloudinaryDimensions);\n\n const [isZoomed, setIsZoomed] = useState<boolean>(false);\n\n const zoomIn = () => {\n if (props.zoomable) {\n setIsZoomed(true);\n }\n };\n\n const zoomOut = () => {\n setIsZoomed(false);\n };\n\n const toggleZoom = () => {\n if (props.zoomable) {\n setIsZoomed((zoomed) => !zoomed);\n }\n };\n\n const currentDimensions = props.zoomable && isZoomed ? props.zoomDimensions : props.dimensions;\n\n return (\n <div\n className={styles.ProductBadgeContainer}\n onMouseEnter={zoomIn}\n onMouseLeave={zoomOut}\n onTouchStart={toggleZoom}\n >\n <CloudinaryImage\n cssClass={styles.ProductBadge}\n url={props.url}\n name={props.alt || ''}\n title={props.alt}\n transform={`fl_progressive,q_90,c_pad,g_center${\n transformDimensions.desktop ? `,${transformDimensions.desktop}` : ''\n }`}\n retinaTransform={`fl_progressive,q_90,c_pad,g_center${\n transformDimensions.retina ? `,${transformDimensions.retina}` : ''\n }`}\n width={currentDimensions.width === 'auto' ? undefined : currentDimensions.width}\n height={currentDimensions.height === 'auto' ? undefined : currentDimensions.height}\n />\n </div>\n );\n};\n\nexport default ProductBadge;\n","// extracted by mini-css-extract-plugin\nexport default {\"ProductBadge\":\"rDdYn4if\",\"ProductBadgeContainer\":\"VOS2_9H2\"};","import type { FC } from 'react';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport { PriceType } from '../../../models/priceData/priceData';\n\nconst ExcludingTaxInfo: FC<React.PropsWithChildren<{ priceType: PriceType }>> = ({ priceType }) => {\n if (priceType !== PriceType.ExcludeTax) return null;\n\n return (\n <div className=\"u-textXXXSmall u-textWeightNormal\">\n {Helpers.getPriceTypeText(priceType)}\n </div>\n );\n};\n\nexport default ExcludingTaxInfo;\n","// extracted by mini-css-extract-plugin\nexport default {\"BasePrice\":\"wqjVwCAg\",\"Wrapper--column\":\"SnZ2rtnf\",\"Wrapper--row\":\"QBquUjGu\",\"Wrapper--alignLeft\":\"Risc5HeK\",\"Wrapper--alignRight\":\"rOKbLEy4\",\"Wrapper--alignCenter\":\"UNWPCL9h\",\"OldPrice\":\"LCu3wU72\",\"OldPrice--strikeThrough\":\"St8I3QLB\",\"Promotion\":\"rkvftppS\",\"NormalPrice\":\"X7I7xYL7\",\"RecycleFeePrice\":\"b6B4gITl\",\"PriceSuffix\":\"gD6iZrT8\"};","/* eslint-disable react/jsx-no-useless-fragment */\nimport classNames from 'classnames';\nimport type { ReactNode } from 'react';\n\nimport { appConfig } from '../../../../../appConfig';\nimport { Helpers } from '../../../../../utility/helpers';\nimport {\n isFixedPricePromotion,\n isMultiBuyPromotion,\n isPercentagePromotion,\n} from '../../../models/domain/ecommerce/promotion/promotionMappers';\nimport type { PriceData, PriceType } from '../../../models/priceData/priceData';\nimport ExcludingTaxInfo from '../ExcludingTaxInfo';\nimport styles from './ProductPrice.module.less';\n\ninterface ProductPriceProps {\n /**\n * Original price per piece.\n * Will be strike through if newPiecePrice is also provided.\n */\n piecePrice?: PriceData;\n\n /**\n * New price per piece.\n * Red color.\n */\n newPiecePrice?: PriceData;\n\n /**\n * Original price with quantity calculated in.\n * Will be strike through if newTotalPrice is also provided.\n */\n totalPrice?: PriceData;\n\n /**\n * Price after discount With quantity calculated in.\n * Red color.\n */\n newTotalPrice?: PriceData;\n\n /**\n * Recycle fee per piece.\n */\n recycleFeePiecePrice?: PriceData;\n\n /**\n * Recycle fee with quantity calculated in.\n */\n recycleFeeTotalPrice?: PriceData;\n\n /**\n * If there is a data for both piece prices and total prices, check the priority flag to see which to prioritize.\n * */\n prioritizeTotals?: boolean;\n\n showExcludingTaxInfo: boolean;\n priceType: PriceType;\n promo?: EcomPromotion;\n className?: string;\n orientation?: 'column' | 'row';\n align?: 'left' | 'right' | 'center';\n quantity?: number;\n}\n\nconst ProductPrice = ({\n orientation = 'column',\n prioritizeTotals = true,\n ...props\n}: ProductPriceProps) => {\n const wrapperClasses = classNames(\n styles.Wrapper,\n orientation === 'column' && styles['Wrapper--column'],\n orientation === 'row' && styles['Wrapper--row'],\n props.align === 'left' && styles['Wrapper--alignLeft'],\n props.align === 'right' && styles['Wrapper--alignRight'],\n props.align === 'center' && styles['Wrapper--alignCenter'],\n props.className,\n );\n return (\n <div className={wrapperClasses}>\n {!props.promo && !props.newPiecePrice && !props.newTotalPrice ? (\n <NoPromoPrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n />\n ) : (\n <>\n <PromotionPicker\n promo={props.promo}\n quantity={props.quantity}\n renderMultiBuyPromotion={(multiBuyPromo) => (\n <>\n {/* This happens on product cards when there is no total prices. */}\n\n {(!props.newTotalPrice || !props.totalPrice) && (\n <MultiBuyPromotionPrice\n numberOfProductRequired={\n multiBuyPromo.numberOfProductRequired\n }\n price={multiBuyPromo.bundlePrice}\n priceType={props.priceType}\n usePieceSuffix={false}\n />\n )}\n <NewPrices\n prioritizeTotals={prioritizeTotals}\n newTotalPrice={props.newTotalPrice}\n newPiecePrice={props.newPiecePrice}\n priceType={props.priceType}\n />\n\n <OldPrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n />\n </>\n )}\n renderNotApplicablePromotion={() => (\n <NoPromoPrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n />\n )}\n renderFixedPromotion={(fixedPromo) => (\n <>\n <NewPrices\n newPiecePrice={fixedPromo.fixedPiecePrice}\n prioritizeTotals={prioritizeTotals}\n newTotalPrice={props.newTotalPrice}\n priceType={props.priceType}\n />\n <OldPrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n piecePriceStrikeThrough\n />\n </>\n )}\n renderDefault={() => (\n <>\n <NewPrices\n prioritizeTotals={prioritizeTotals}\n newTotalPrice={props.newTotalPrice}\n newPiecePrice={props.newPiecePrice}\n priceType={props.priceType}\n />\n <OldPrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n piecePriceStrikeThrough\n />\n </>\n )}\n />\n </>\n )}\n\n <RecycleFeePrices\n prioritizeTotals={prioritizeTotals}\n totalPrice={props.recycleFeeTotalPrice}\n piecePrice={props.recycleFeePiecePrice}\n priceType={props.priceType}\n />\n\n {props.showExcludingTaxInfo && <ExcludingTaxInfo priceType={props.priceType} />}\n </div>\n );\n};\n\nexport default ProductPrice;\n\nconst PromotionPicker = (props: {\n promo?: EcomPromotion;\n quantity?: number;\n renderPercentagePromotion?: (promo: PercentageEcomPromotion) => ReactNode;\n renderMultiBuyPromotion: (promo: MultiBuyEcomPromotion) => ReactNode;\n renderNotApplicablePromotion: () => ReactNode;\n renderFixedPromotion?: (promo: FixedEcomPromotion) => ReactNode;\n renderDefault: () => ReactNode;\n}) => {\n if (props.promo?.isMemberPrice && !appConfig.coopUserSettings.isMedmeraCustomer) {\n return props.renderNotApplicablePromotion();\n }\n\n if (props.promo && props.renderPercentagePromotion && isPercentagePromotion(props.promo)) {\n return props.renderPercentagePromotion(props.promo);\n }\n\n if (props.promo && props.renderFixedPromotion && isFixedPricePromotion(props.promo)) {\n return props.renderFixedPromotion(props.promo);\n }\n\n if (props.promo && isMultiBuyPromotion(props.promo)) {\n if (props.quantity == null) {\n // no current quantity is provided, so we cannot determine if its eligable for promo or not, by default we say it is\n return props.renderMultiBuyPromotion(props.promo);\n }\n\n if (props.quantity != null) {\n if (\n props.promo.numberOfProductRequired != null &&\n props.quantity >= props.promo.numberOfProductRequired\n ) {\n return props.renderMultiBuyPromotion(props.promo);\n }\n return props.renderNotApplicablePromotion();\n }\n }\n\n return props.renderDefault();\n};\n\nconst PricePicker = (props: {\n totalPrice?: PriceData;\n piecePrice?: PriceData;\n priceType: PriceType;\n prioritizeTotals: boolean;\n renderTotalPrice: (tPrice: PriceData) => ReactNode;\n renderPiecePrice: (pPrice: PriceData) => ReactNode;\n}) => {\n // if we have both total price and piece price, check the priority flag\n return !!props.totalPrice && !!props.piecePrice ? (\n <>\n {props.prioritizeTotals\n ? props.renderTotalPrice(props.totalPrice)\n : props.renderPiecePrice(props.piecePrice)}\n </>\n ) : (\n <>\n {props.totalPrice && props.renderTotalPrice(props.totalPrice)}\n {props.piecePrice && props.renderPiecePrice(props.piecePrice)}\n </>\n );\n};\n\nconst OldPrices = (props: {\n prioritizeTotals: boolean;\n piecePrice?: PriceData;\n totalPrice?: PriceData;\n priceType: PriceType;\n piecePriceStrikeThrough?: boolean;\n}) => {\n return (\n <PricePicker\n prioritizeTotals={props.prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n renderTotalPrice={(tPrice) => (\n <OldPrice\n price={tPrice}\n priceType={props.priceType}\n usePieceSuffix={false}\n strikeThrough\n />\n )}\n renderPiecePrice={(pPrice) => (\n <OldPrice\n price={pPrice}\n priceType={props.priceType}\n usePieceSuffix\n strikeThrough={props.piecePriceStrikeThrough}\n />\n )}\n />\n );\n};\n\nconst NewPrices = (props: {\n prioritizeTotals: boolean;\n newPiecePrice?: PriceData;\n newTotalPrice?: PriceData;\n priceType: PriceType;\n}) => {\n return (\n <PricePicker\n prioritizeTotals={props.prioritizeTotals}\n totalPrice={props.newTotalPrice}\n piecePrice={props.newPiecePrice}\n priceType={props.priceType}\n renderTotalPrice={(tPrice) => (\n <PromotionPrice price={tPrice} priceType={props.priceType} usePieceSuffix={false} />\n )}\n renderPiecePrice={(pPrice) => (\n <PromotionPrice price={pPrice} priceType={props.priceType} usePieceSuffix />\n )}\n />\n );\n};\n\nconst RecycleFeePrices = (props: {\n prioritizeTotals: boolean;\n piecePrice?: PriceData;\n totalPrice?: PriceData;\n priceType: PriceType;\n}) => {\n return (\n <PricePicker\n prioritizeTotals={props.prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n renderTotalPrice={(tPrice) => (\n <RecycleFeePrice\n price={tPrice}\n priceType={props.priceType}\n usePieceSuffix={false}\n />\n )}\n renderPiecePrice={(pPrice) => (\n <RecycleFeePrice\n price={pPrice}\n priceType={props.priceType}\n usePieceSuffix={false}\n />\n )}\n />\n );\n};\n\nconst NoPromoPrices = (props: {\n prioritizeTotals: boolean;\n piecePrice?: PriceData;\n totalPrice?: PriceData;\n priceType: PriceType;\n}) => {\n return (\n <PricePicker\n prioritizeTotals={props.prioritizeTotals}\n totalPrice={props.totalPrice}\n piecePrice={props.piecePrice}\n priceType={props.priceType}\n renderTotalPrice={(tPrice) => (\n <NormalPrice price={tPrice} priceType={props.priceType} usePieceSuffix={false} />\n )}\n renderPiecePrice={(pPrice) => (\n <NormalPrice price={pPrice} priceType={props.priceType} usePieceSuffix />\n )}\n />\n );\n};\n\ninterface BasePriceProps {\n price: PriceData;\n priceType: PriceType;\n usePieceSuffix?: boolean;\n}\n\ninterface OldPriceProps extends BasePriceProps {\n strikeThrough?: boolean;\n}\n\nconst OldPrice = (props: OldPriceProps) => {\n return (\n <BasePrice\n className={classNames(\n styles.OldPrice,\n props.strikeThrough && styles['OldPrice--strikeThrough'],\n )}\n price={props.price}\n priceType={props.priceType}\n usePieceSuffix={props.usePieceSuffix}\n />\n );\n};\n\nconst PromotionPrice = (props: BasePriceProps) => {\n return (\n <BasePrice\n className={styles.Promotion}\n price={props.price}\n priceType={props.priceType}\n usePieceSuffix={props.usePieceSuffix}\n />\n );\n};\n\nconst NormalPrice = (props: BasePriceProps) => {\n return (\n <BasePrice\n className={styles.NormalPrice}\n price={props.price}\n priceType={props.priceType}\n usePieceSuffix={props.usePieceSuffix}\n />\n );\n};\n\nconst RecycleFeePrice = (props: BasePriceProps) => {\n const price = Helpers.getPrice(props.price, props.priceType);\n if (!price) return null;\n\n return (\n <span className={classNames(styles.BasePrice, styles.RecycleFeePrice)}>\n <span>+{Helpers.toEcommercePriceWithCurrency(price, 'hideRest')} pant</span>\n {props.usePieceSuffix && <span className={styles.PriceSuffix}> /st</span>}\n </span>\n );\n};\n\nconst BasePrice = (props: BasePriceProps & { className?: string; aboveSlot?: ReactNode }) => {\n const price = Helpers.getPrice(props.price, props.priceType);\n if (!price) return null;\n\n return (\n <span className={classNames(styles.BasePrice, props.className)}>\n {props.aboveSlot}\n <span>{Helpers.toEcommercePrice(price)}</span>\n {props.usePieceSuffix && <span className={styles.PriceSuffix}> /st</span>}\n </span>\n );\n};\nconst Promotion = (props: React.PropsWithChildren<{}>) => {\n return <span className={classNames(styles.Promotion)}>{props.children}</span>;\n};\n\nconst MultiBuyPromotionPrice = (\n props: {\n numberOfProductRequired: number;\n } & BasePriceProps,\n) => {\n const hasPrice = !!Helpers.getPrice(props.price, props.priceType);\n return (\n <Promotion>\n {hasPrice ? (\n <>\n <BasePrice\n price={props.price}\n priceType={props.priceType}\n usePieceSuffix={props.usePieceSuffix}\n aboveSlot={<>{props.numberOfProductRequired} för </>}\n />\n </>\n ) : (\n 'Flerköpsrabatt'\n )}\n </Promotion>\n );\n};\n","import DOMPurify, { type Config } from 'dompurify';\nimport type { FC } from 'react';\n\nimport useHtmlScriptParser from '../../../hooks/useHtmlScriptParser';\n\ninterface DangerousHtmlWrapper {\n dangerouslySetInnerHTML?: {\n __html: string;\n };\n}\n\ninterface RawHtmlProps {\n html: string;\n renderWrapper?: FC<React.PropsWithChildren<DangerousHtmlWrapper>>;\n sanitizeOptions?: Config;\n parseScripts?: boolean;\n className?: string;\n}\n\nconst sanitizer = DOMPurify.sanitize;\n\nconst RawHtml = ({\n html,\n renderWrapper,\n sanitizeOptions,\n className,\n parseScripts = false,\n}: React.PropsWithChildren<RawHtmlProps>) => {\n const scriptsContainerRef = useHtmlScriptParser(html, parseScripts);\n\n if (!renderWrapper)\n return (\n <>\n <div\n className={className}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{\n __html: sanitizeOptions\n ? sanitizer(html, sanitizeOptions).toString()\n : sanitizer(html).toString(),\n }}\n />\n <div style={{ display: 'none' }} ref={scriptsContainerRef} />\n </>\n );\n\n return (\n <>\n {renderWrapper({\n dangerouslySetInnerHTML: {\n __html: sanitizeOptions\n ? sanitizer(html, sanitizeOptions).toString()\n : sanitizer(html).toString(),\n },\n })}\n <div style={{ display: 'none' }} ref={scriptsContainerRef} />\n </>\n );\n};\n\nexport default RawHtml;\n","import classNames from 'classnames';\n\nimport styles from './RawPicture.module.less';\n\ntype SourceMedia = {\n minWidth: number;\n height?: number;\n srcSet: string;\n};\n\ninterface RawPictureProps {\n altText?: string;\n src?: string;\n height?: number;\n srcSet?: SourceMedia[];\n imgClassName?: string;\n className?: string;\n lazy?: boolean;\n}\n\n/**\n * Use this component for solving Art Direction problem in the images.\n * As opposed to RawImage component, browser will not download the image it thinks is the best - you tell it which image to download based on the viewport size size.\n */\nconst RawPicture = (props: RawPictureProps) => {\n const srcSet = props.srcSet?.sort((a, b) => b.minWidth - a.minWidth);\n\n return (\n <picture className={classNames(styles.Container, props.className)}>\n {srcSet?.map((item, index) => {\n return (\n <source\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n media={`(min-width: ${item.minWidth}px)`}\n srcSet={item.srcSet}\n height={item.height}\n />\n );\n })}\n <img\n loading={props.lazy ? 'lazy' : undefined}\n className={classNames(styles.Image, props.imgClassName)}\n src={props.src}\n alt={props.altText || ''}\n height={props.height}\n />\n </picture>\n );\n};\n\nexport default RawPicture;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"J5qjoGvQ\",\"Image\":\"qk0vMZV4\"};","/* eslint-disable react/jsx-no-useless-fragment */\nimport type { ReactNode } from 'react';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { Browser, BrowserSize } from '../../../../utility/browser';\n\nexport const useBrowserMediaQuery = (size: BrowserSize) =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(size).from,\n maxWidth: Browser.getBreakpoint(size).to,\n });\n\nexport const useFromBrowserMediaQuery = (size: BrowserSize) =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(size).from,\n });\n\nexport const useBrowserCustomMediaQuery = (minWidth: number, maxWidth: number) =>\n useMediaQuery({\n minWidth,\n maxWidth,\n });\n\nexport const useBrowserMinMediaQuery = (minWidth: number) =>\n useMediaQuery({\n minWidth,\n });\n\nexport const useIsMobile = () =>\n useMediaQuery({ maxWidth: Browser.getBreakpoint(BrowserSize.sm).from });\n\nexport const useIsDesktop = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.lg).from });\n\nexport const useIsFromXXSmall = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xxsm).from,\n });\n\nexport const useIsFromXSmall = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xsm).from,\n });\n\nexport const useIsFromMedium = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.md).from });\n\nexport const useIsFromLarge = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.lg).from });\n\nexport const useIsFromXLarge = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xlg).from,\n });\n\nexport const Mobile = ({ children }: { children: ReactNode }) => {\n const isMobile = useIsMobile();\n return isMobile ? <>{children}</> : null;\n};\n\nexport const Desktop = ({ children }: { children: ReactNode }) => {\n const isDesktop = useIsDesktop();\n return isDesktop ? <>{children}</> : null;\n};\n\nexport const NotDesktop = ({ children }: { children: ReactNode }) => {\n const isDesktop = useIsDesktop();\n return isDesktop ? null : <>{children}</>;\n};\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSplashBackgroundcolor = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 40 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Type=discount-splash background\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"layer\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.23529 25.8333C8.19266 24.9981 8.22455 24.3782 8.23529 23.537C8.07642 21.9633 7.29617 21.3293 5.29412 21.2407C4.59022 21.5382 3.73745 21.5841 2.94118 21.8148C2.78154 21.6259 2.67353 21.5199 2.35294 21.2407C3.25731 20.5345 4.1124 19.8011 4.70588 18.9444C5.21823 18.6549 5.38308 18.1635 5.88235 17.7963C5.17271 17.5403 4.7399 17.2309 4.11765 17.2222C3.06392 16.9814 1.84159 16.9083 0.588235 16.6481C0.591224 16.6275 0.556763 16.4624 0.588235 16.0741C1.25138 16.0153 1.99692 15.7666 2.94118 15.5C3.21848 15.202 3.6819 14.8604 4.11765 14.3519C3.74413 14.1282 3.38178 13.6017 2.94118 13.2037C2.1399 12.7926 1.28764 12.4733 0.588235 12.0556C0.280819 11.9079 -0.0470727 11.535 0 11.4815C0.122917 11.17 0.424063 10.9035 0.588235 10.9074C1.40157 10.6658 2.14402 10.6525 2.94118 10.3333C3.43193 10.3326 3.98304 10.0486 4.70588 9.75926C4.30502 9.2706 4.13735 8.66368 3.52941 8.03704C3.41367 7.63194 2.86255 7.20562 2.35294 6.88889C2.10339 6.38755 1.83541 6.03312 1.17647 5.16667C2.06507 5.4525 2.45828 5.46352 2.94118 5.74074C4.16923 5.82647 5.49289 6.1536 7.05882 6.31482C8.22198 6.70867 8.76358 6.25279 8.82353 5.16667C8.67512 4.34587 8.52827 3.80132 8.82353 3.44444C8.6458 2.47001 8.96057 2.02114 10 2.2963C10.8976 3.12928 11.953 3.59217 12.9412 4.01852C13.9157 4.49941 14.4607 4.19833 14.7059 3.44444C14.6924 2.63132 14.7284 2.03542 14.7059 1.72222C15.0825 0.964858 15.4155 0.49345 15.8824 0C16.1788 0.279789 16.7431 0.489943 17.0588 0.574074C17.8018 1.40646 18.3195 2.08526 18.8235 2.87037C20.0734 3.80232 20.3707 3.77026 21.7647 2.87037C22.597 1.99484 23.6363 1.25567 24.7059 0.574074C25.5663 0.0270521 26.1696 0.328633 26.4706 1.14815C26.4813 1.92546 26.5407 2.54791 26.4706 3.44444C26.8501 4.14248 27.4192 4.61889 28.2353 4.59259C29.6972 4.13972 30.9072 3.87922 32.3529 3.44444C33.3071 3.42885 33.6525 3.82361 33.5294 5.16667C32.3163 7.48115 32.7028 7.97536 35.2941 8.03704C36.2672 7.75643 37.0035 7.70283 37.6471 7.46296C37.8015 7.79175 37.8629 7.93052 37.6471 8.03704C37.3913 8.48484 36.8692 8.91517 36.4706 9.18519C34.8702 10.3702 34.9463 11.1642 36.4706 12.0556C37.7171 12.5008 38.8538 13.1022 40 13.7778C39.9676 13.8449 39.9349 14.0047 40 14.3519C39.2666 14.2251 38.6061 14.2023 38.2353 14.3519C37.3396 14.55 36.4186 14.7609 36.4706 15.5C35.9732 15.6642 36.3981 16.5296 36.4706 17.2222C37.3936 18.0415 38.1926 18.9109 39.4118 20.0926C37.9375 20.0859 37.0405 20.1528 35.8824 20.0926C34.4549 19.9148 33.7299 20.7101 34.7059 22.3889C35.0052 22.6972 35.0202 23.363 35.2941 24.1111C34.4642 24.0388 33.9758 23.9694 33.5294 23.537C32.8918 23.5606 32.2967 23.2217 31.7647 22.963C29.573 22.1406 29.0957 22.3117 28.2353 24.6852C27.9775 25.5279 27.4095 25.7922 26.4706 25.2593C25.5385 24.8671 24.6871 24.4764 24.1176 24.1111C23.0759 23.6713 22.4708 23.8171 21.7647 24.6852C21.4434 25.2268 20.8758 25.9076 20.5882 26.4074C19.906 27.1806 19.5025 27.1538 18.8235 26.4074C18.1773 26.0251 17.3232 24.9643 16.4706 24.6852C15.7643 24.9563 15.0326 26.1774 14.1176 26.9815C14.0775 27.0403 13.8288 27.1974 13.5294 27.5556C13.3484 26.7052 13.3592 26.0697 13.5294 25.2593C13.3214 24.2557 12.7582 23.8013 11.7647 24.1111C10.4874 24.6397 9.41191 25.2338 8.23529 25.8333Z\",\n fill: \"#FFF000\"\n }))));\n};\nexport default SvgSplashBackgroundcolor;","/* eslint-disable import/prefer-default-export */\n/* eslint-disable no-plusplus */\nimport { Icon } from '@coop/components';\nimport { SplashBackgroundColorIcon } from '@coop/icons';\nimport classnames from 'classnames';\n\nimport styles from './Splash.module.less';\n\ninterface SplashProps {\n type: 'default' | 'large' | 'medium' | 'small';\n prefix?: string;\n price: string;\n suffix?: string;\n decimal?: string;\n unit?: string;\n isMemberPrice?: boolean;\n allText?: string;\n label?: string;\n}\n\nconst Splash = (props: SplashProps) => {\n const hasDecimalOrUnit = !!props.decimal || !!props.unit;\n\n const splashClasses = classnames(\n styles.Splash,\n hasDecimalOrUnit &&\n props.type === 'default' &&\n props.price.length > 3 &&\n styles['Splash--fontSmall'],\n props.type === 'medium' && styles['Splash--medium'],\n props.type === 'small' && styles['Splash--small'],\n props.type === 'large' && styles['Splash--large'],\n );\n\n const hasCustomLabel = !!props.label;\n\n return (\n <div\n className={styles['Splash-container']}\n role={hasCustomLabel ? 'img' : undefined}\n aria-label={props.label}\n >\n <div className={splashClasses} aria-hidden={hasCustomLabel}>\n <Icon\n className={styles['Splash-bg']}\n color=\"yellow\"\n icon={SplashBackgroundColorIcon}\n aria-hidden\n />\n <div className={styles['Splash-content']} data-a11y-ignore=\"color-contrast\">\n {props.prefix && (\n <div\n className={styles['Splash-pricePre']}\n data-a11y-ignore=\"color-contrast\"\n >\n {props.prefix}\n </div>\n )}\n {props.price && (\n <div className={styles['Splash-price']}>\n <div\n className={styles['Splash-priceLarge']}\n data-a11y-ignore=\"color-contrast\"\n >\n {props.price}\n </div>\n {hasDecimalOrUnit && (\n <div className={styles['Splash-priceSupSub']}>\n <SubPrice decimal={props.decimal} unit={props.unit} />\n </div>\n )}\n </div>\n )}\n {props.allText && (\n <div className={styles['Splash-priceText']}>{props.allText}</div>\n )}\n {props.suffix && (\n <div className={styles['Splash-pricePost']}>{props.suffix}</div>\n )}\n </div>\n </div>\n {props.isMemberPrice && (\n <div\n aria-hidden={hasCustomLabel}\n className={classnames(\n styles['Splash-memberTag'],\n props.type === 'large' && styles['Splash-memberTag--large'],\n props.type === 'medium' && styles['Splash-memberTag--medium'],\n )}\n data-a11y-ignore=\"color-contrast\"\n >\n MEDLEMSPRIS\n </div>\n )}\n </div>\n );\n};\n\nconst SubPrice = (props: { decimal?: string; unit?: string }) => {\n const promoComponents = [];\n let index = 0;\n\n let promoPrice = null;\n\n if (props.decimal) {\n promoPrice = props.decimal.padStart(2, '0');\n } else {\n promoPrice = '00';\n }\n\n if (promoPrice) {\n promoComponents.push(\n <div\n key={index}\n className={styles['Splash-priceSup']}\n data-a11y-ignore=\"color-contrast\"\n >\n {promoPrice}\n </div>,\n );\n index++;\n }\n\n if (props.unit) {\n promoComponents.push(\n <div\n key={index}\n className={styles['Splash-priceSub']}\n data-a11y-ignore=\"color-contrast\"\n >\n {`/${props.unit}`}\n </div>,\n );\n index++;\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{promoComponents}</>;\n};\n\nexport default Splash;\n","// extracted by mini-css-extract-plugin\nexport default {\"Splash-container\":\"EEqvmJwe\",\"Splash\":\"BpaA3FD0\",\"Splash-price\":\"IgfovQuR\",\"Splash-memberTag\":\"SlFPVeq_\",\"Splash-memberTag--large\":\"nWT4gPu2\",\"Splash-memberTag--medium\":\"eHOOL8Oi\",\"Splash-bg\":\"WwPPjSRB\",\"Splash-content\":\"x8dLMmVC\",\"Splash-pricePre\":\"QUeU6xhZ\",\"Splash-pricePost\":\"A4Ny9Mfg\",\"Splash-text\":\"bCQUUpFs\",\"Splash-priceLarge\":\"OXm1GQVM\",\"Splash-priceText\":\"IHhFM31T\",\"Splash-priceSupSub\":\"gNgfSLmt\",\"Splash-priceSup\":\"uHKGEzxo\",\"Splash-priceSub\":\"ew9hNB6_\",\"Splash--large\":\"eyPUtTO0\",\"Splash--medium\":\"fkNYUFbW\",\"Splash--small\":\"pDQK7TXk\",\"Splash--fontSmall\":\"BAree9IG\"};","import type React from 'react';\n\nimport ComponentPortals from '../../molecules/ComponentPortals';\n\ninterface StickyBottomProps {\n className?: string;\n children: React.ReactNode;\n}\n\nconst StickyBottom = (props: React.PropsWithChildren<StickyBottomProps>) => {\n return <ComponentPortals cmpName=\"StickyBottom\">{props.children}</ComponentPortals>;\n};\n\nexport default StickyBottom;\n","import { ChipButton, ChipIconButton } from '@coop/components';\nimport { CloseIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\ntype SubstituteTriggerButtonTheme = 'whiteGreen' | 'greenCta';\n\ninterface SubstituteTriggerProps {\n handleSubsituteTrigger: () => void;\n theme: SubstituteTriggerButtonTheme;\n isActive: boolean;\n}\n\nconst SubstituteTrigger: FC<React.PropsWithChildren<SubstituteTriggerProps>> = (\n props: SubstituteTriggerProps,\n) => {\n return props.isActive ? (\n <ChipIconButton\n icon={CloseIcon}\n label=\"Stäng\"\n isActive\n theme=\"whiteGreen\"\n onClick={props.handleSubsituteTrigger}\n size={32}\n />\n ) : (\n <ChipButton theme={props.theme} onClick={props.handleSubsituteTrigger} size={32}>\n Byt vara\n </ChipButton>\n );\n};\n\nexport default SubstituteTrigger;\n","import { useElementEvent, useOutsideClick } from '@coop/hooks';\nimport classnames from 'classnames';\nimport type { CSSProperties, FC, MutableRefObject, ReactNode } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport * as _ from 'underscore';\n\ninterface TooltipProps {\n children: ReactNode;\n content: string | ReactNode;\n className?: string;\n style?: CSSProperties;\n tooltipStyle?: CSSProperties;\n disabled?: boolean;\n defaultCursor?: boolean;\n visibleTooltip?: boolean;\n handleClick?: () => void;\n handleMouseOver?: () => void;\n handleMouseOut?: () => void;\n handleOutsideClick?: () => void;\n useOutsideClick?: boolean;\n arrowPlacement?: string;\n arrowOffset?: number;\n}\n\nenum ArrowPosition {\n Center,\n Right,\n Left,\n}\n\nconst TOOLTIP_WIDTH = 250;\nconst TOOLTIP_DEFAULT = 'Tooltip u-textLeft u-posAbsolute';\nconst ARROW_TOP = 'Tooltip--topArrow';\nconst ARROW_BOTTOM = 'Tooltip--bottomArrow';\nconst ARROW_LEFT = 'Tooltip--left Tooltip--leftArrow';\nconst ARROW_CENTER = 'Tooltip--center Tooltip--centerArrow';\nconst ARROW_RIGHT = 'Tooltip--right Tooltip--rightArrow';\n\nconst getPosFromCss = (tooltipCss: string): ArrowPosition => {\n if (tooltipCss?.indexOf('left') > -1) {\n return ArrowPosition.Left;\n }\n if (tooltipCss?.indexOf('right') > -1) {\n return ArrowPosition.Right;\n }\n return ArrowPosition.Center;\n};\n\nconst getFreeSpace = (\n oldPos: ArrowPosition,\n left: number,\n): { spaceOnLeft: number; spaceOnRight: number } => {\n if (oldPos === ArrowPosition.Center) {\n return {\n spaceOnLeft: TOOLTIP_WIDTH / 2 + left,\n spaceOnRight: window.innerWidth - (TOOLTIP_WIDTH / 2 + left),\n };\n }\n if (oldPos === ArrowPosition.Left) {\n return { spaceOnLeft: left, spaceOnRight: window.innerWidth - left };\n }\n return {\n spaceOnLeft: left + TOOLTIP_WIDTH,\n spaceOnRight: window.innerWidth - (left + TOOLTIP_WIDTH),\n };\n};\n\nconst calculateTooltipArrowPosition = (\n propsArrowPlacement: string | undefined,\n oldTooltipCss: string,\n tooltipRef: MutableRefObject<HTMLSpanElement | null>,\n setCurrentPosRef: (arrowPosition: ArrowPosition) => void,\n currentPosRef: MutableRefObject<ArrowPosition | null>,\n): string => {\n if (propsArrowPlacement) {\n const arrowPlacement = [TOOLTIP_DEFAULT];\n\n if (propsArrowPlacement?.indexOf('top') > -1) {\n arrowPlacement.push(ARROW_TOP);\n } else {\n arrowPlacement.push(ARROW_BOTTOM);\n }\n\n if (propsArrowPlacement?.indexOf('left') > -1) {\n arrowPlacement.push(ARROW_LEFT);\n } else if (propsArrowPlacement?.indexOf('right') > -1) {\n arrowPlacement.push(ARROW_RIGHT);\n } else {\n arrowPlacement.push(ARROW_CENTER);\n }\n\n return arrowPlacement.join(' ');\n }\n\n if (!tooltipRef?.current) {\n return `${TOOLTIP_DEFAULT} ${ARROW_BOTTOM} ${ARROW_CENTER}`;\n }\n\n const { left } = tooltipRef.current.getBoundingClientRect();\n\n const oldPos = currentPosRef?.current ?? getPosFromCss(oldTooltipCss);\n const { spaceOnLeft, spaceOnRight } = getFreeSpace(oldPos, left);\n const changeToCenter = spaceOnLeft > TOOLTIP_WIDTH / 2 && spaceOnRight > TOOLTIP_WIDTH / 2;\n\n // if possible change to center\n if (changeToCenter) {\n setCurrentPosRef(ArrowPosition.Center);\n return `${TOOLTIP_DEFAULT} ${ARROW_BOTTOM} ${ARROW_CENTER}`;\n }\n\n if (spaceOnLeft > spaceOnRight) {\n setCurrentPosRef(ArrowPosition.Right);\n return `${TOOLTIP_DEFAULT} ${ARROW_BOTTOM} ${ARROW_RIGHT}`;\n }\n\n setCurrentPosRef(ArrowPosition.Left);\n return `${TOOLTIP_DEFAULT} ${ARROW_BOTTOM} ${ARROW_LEFT}`;\n};\n\nconst arrowHeight = 20;\n\n// NOTE: margin on props.children will make the tooltips placement slightly off. So use props.style for margins.\nexport const Tooltip: FC<React.PropsWithChildren<TooltipProps>> = (props) => {\n const [tooltipClassNames, setTooltipClassNames] = useState(\n `${TOOLTIP_DEFAULT} ${ARROW_BOTTOM} ${ARROW_CENTER}`,\n );\n const currentPosRef = useRef<ArrowPosition | null>(null);\n\n const setCurrentPosRef = (position: ArrowPosition) => {\n currentPosRef.current = position;\n };\n\n const [uniqueIdForAria] = useState(() => _.uniqueId('tooltip-'));\n\n const tooltipRef = useRef<HTMLSpanElement | null>(null);\n\n useOutsideClick(\n tooltipRef,\n props.handleOutsideClick!,\n !!props.handleOutsideClick && !!props.useOutsideClick,\n );\n\n const top =\n props.arrowPlacement && props.arrowPlacement?.indexOf('top') > -1\n ? undefined\n : -arrowHeight - (props.arrowOffset || 0) - (tooltipRef.current?.offsetHeight || 0);\n\n const bottom =\n props.arrowPlacement && props.arrowPlacement?.indexOf('top') > -1\n ? -arrowHeight - (props.arrowOffset || 0) - (tooltipRef.current?.offsetHeight || 0)\n : undefined;\n\n const resetTooltipPosition = useCallback(() => {\n const tooltipArrowPosCss = calculateTooltipArrowPosition(\n props.arrowPlacement,\n tooltipClassNames,\n tooltipRef,\n setCurrentPosRef,\n currentPosRef,\n );\n if (tooltipArrowPosCss !== tooltipClassNames) {\n setTooltipClassNames(tooltipArrowPosCss);\n }\n }, [props.arrowPlacement, tooltipClassNames]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onResize = useCallback(\n _.debounce(() => {\n resetTooltipPosition();\n }, 200),\n [resetTooltipPosition],\n );\n\n useEffect(() => {\n resetTooltipPosition();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.disabled]);\n\n useElementEvent(window, 'resize', onResize, true);\n\n return (\n <div\n style={{ position: 'relative', ...props.style }}\n className={props.defaultCursor ? 'u-cursorDefault' : 'u-cursorPointer'}\n onClick={props.handleClick}\n onMouseEnter={props.handleMouseOver}\n onMouseLeave={props.handleMouseOut}\n // onMouseOver={props.handleMouseOver}\n // onMouseOut={props.handleMouseOut}\n // onFocus={props.handleMouseOver}\n // onBlur={props.handleMouseOut}\n aria-labelledby={uniqueIdForAria}\n >\n {props.children}\n\n <span\n id={uniqueIdForAria}\n role=\"tooltip\"\n ref={tooltipRef}\n style={{\n top,\n bottom,\n whiteSpace: 'normal',\n color: '#333',\n transition: 'visibility 0.3s ease, opacity 0.3s ease',\n ...props.tooltipStyle,\n }}\n className={classnames(\n 'u-textWeightNormal',\n tooltipClassNames,\n props.visibleTooltip ? 'u-isVisible u-opacity1' : 'u-isInvisible u-opacity0',\n props.className ? props.className : '',\n )}\n >\n {props.content}\n </span>\n </div>\n );\n};\n\nconst withHover =\n (TooltipComponent: FC<React.PropsWithChildren<TooltipProps>>) => (props: TooltipProps) => {\n const [hovering, setHovering] = useState<boolean>(false);\n const onMouseOver = () => {\n setHovering(true);\n if (props.handleMouseOver) {\n props.handleMouseOver();\n }\n };\n const onMouseOut = () => {\n setHovering(false);\n if (props.handleMouseOut) {\n props.handleMouseOut();\n }\n };\n\n return (\n <TooltipComponent\n arrowPlacement={props.arrowPlacement}\n content={props.content}\n className={props.className}\n defaultCursor={props.defaultCursor}\n disabled={props.disabled}\n handleClick={props.handleClick}\n handleOutsideClick={props.handleOutsideClick}\n style={props.style}\n tooltipStyle={props.tooltipStyle}\n useOutsideClick={props.useOutsideClick}\n visibleTooltip={props.disabled ? false : hovering}\n handleMouseOver={onMouseOver}\n handleMouseOut={onMouseOut}\n >\n {props.children}\n </TooltipComponent>\n );\n };\n\nexport const TooltipOnHover = withHover(Tooltip);\n","import { Chip, Icon, Select, SelectItem } from '@coop/components';\nimport { ChevronUpIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\ninterface VariantProp {\n id: number | string;\n name: string;\n}\n\ninterface VariantSelectorProps {\n variants: VariantProp[];\n selectedVariantId?: string;\n selectItemClassName?: string;\n handleVariantChange: (variantId: string) => void;\n}\n\nconst VariantSelector: FC<React.PropsWithChildren<VariantSelectorProps>> = (props) => {\n if (!props.variants.length) return null;\n\n return (\n <Select\n defaultSelectedKey={props.selectedVariantId}\n onSelectionChange={(k) => props.handleVariantChange(k.toString())}\n aria-label=\"Variant\"\n popoverProps={{ placement: 'bottom' }}\n renderTrigger={(children) => (\n <Chip\n size={32}\n asChild\n theme=\"whiteGreen\"\n rightSlot={<Icon icon={ChevronUpIcon} />}\n >\n {children}\n </Chip>\n )}\n >\n {props.variants.map((item) => (\n <SelectItem\n key={item.id}\n id={item.id.toString()}\n className={props.selectItemClassName}\n >\n {item.name}\n </SelectItem>\n ))}\n </Select>\n );\n};\n\nexport default VariantSelector;\n","/* eslint-disable react/jsx-props-no-spreading */\n\nimport { useState } from 'react';\n\nimport useReactRouting from '../../../../ecommerce/hooks/useReactRouting';\nimport { useBuyableItemGATracking } from '../../../hooks/tracking/useBuyableItemGATracking';\nimport { useBuyableState } from '../../../hooks/useBuyableProductState';\nimport { useCurrentPriceType } from '../../../hooks/useCurrentPriceType';\nimport { mapProductToProps } from '../../../utils/productUtils';\nimport { AddToCartButton } from '../../AddToCartButton';\nimport EcomProductTeaser, { AddedToCartTeaserNotification } from '../EcomProductTeaser';\nimport type { BuyableProductTeaserProps } from './BuyableProductTeaser.types';\n\ntype BuyableProductTeaserNotifications = 'addedToCart';\n\nconst BuyableProductTeaser = (props: BuyableProductTeaserProps) => {\n const [notification, setNotification] = useState<BuyableProductTeaserNotifications | null>(\n null,\n );\n const onAddToCart = () => {\n setNotification('addedToCart');\n };\n\n const { currentVariant, quantity, handleVariantChange, onQuantityUpdate } = useBuyableState(\n props.product,\n {\n isSilent: !props.refreshCart,\n analyticsOptions: props.analyticsOptions,\n },\n onAddToCart,\n );\n\n const { ref, handleGaProductClick } = useBuyableItemGATracking(\n props.product,\n currentVariant?.id,\n props.analyticsOptions,\n );\n\n const { push } = useReactRouting();\n\n const handleProductTeaserClick = () => {\n handleGaProductClick();\n props.onTeaserClick?.();\n };\n\n const handleLinkClick = (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (!props.isAsyncLink) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n props.onTeaserClick?.();\n push(props.product.url);\n };\n\n const { currentPriceType } = useCurrentPriceType();\n const productProps = mapProductToProps(props.product);\n\n return (\n <EcomProductTeaser\n ref={ref}\n {...props}\n product={productProps}\n currentVariant={currentVariant || undefined}\n handleVariantChange={handleVariantChange}\n handleTeaserClick={handleProductTeaserClick}\n handleLinkClick={handleLinkClick}\n priceType={currentPriceType}\n quantity={quantity}\n notificationSlot={\n <AddedToCartTeaserNotification\n show={notification === 'addedToCart'}\n onClose={() => setNotification(null)}\n />\n }\n actionsSlot={\n <AddToCartButton\n fullWidth\n withButton\n quantity={quantity}\n setQuantity={onQuantityUpdate}\n productName={props.product.name}\n onAddToCartClick={props.onAddToCartClick}\n onRemoveFromCartClick={props.onRemoveFromCartClick}\n />\n }\n />\n );\n};\n\nexport default BuyableProductTeaser;\n","import { EcomProductTeaserSkeleton } from '../EcomProductTeaser';\n\nconst BuyableProductTeaserSkeleton = () => {\n return <EcomProductTeaserSkeleton withActions />;\n};\n\nexport default BuyableProductTeaserSkeleton;\n","import type { ReactNode } from 'react';\n\nimport { buildReactComponentSelectorByName, getReactComponentData } from '../../init/reactMounting';\nimport Portal from '../atoms/Portal';\n\ninterface ComponentPortalsProps<TProps extends object = object> {\n cmpName: string;\n\n render?: (cmpProps: TProps & { id?: string }) => React.ReactNode;\n children?: ReactNode;\n}\n\n/** Finds components (can be multiple instances) of a given name and creates a Portal for them */\nconst ComponentPortals = <TProps extends object = object>({\n cmpName,\n render,\n children,\n}: ComponentPortalsProps<TProps>) => {\n const foundComponents = Array.from<HTMLElement>(\n document.querySelectorAll(buildReactComponentSelectorByName(cmpName)),\n )\n .filter(Boolean)\n .map((item) => getReactComponentData<TProps>(item));\n\n return (\n <>\n {foundComponents.map((item) => (\n <Portal key={item.id} domNode={item.html}>\n {(render && render({ ...item.props, id: item.id })) || children}\n </Portal>\n ))}\n </>\n );\n};\n\nexport default ComponentPortals;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgBagAdd1 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.514 2.14266C9.98758 2.42681 10.1411 3.04107 9.857 3.51465L7.7657 7.00015H16.2333L14.142 3.51465C13.8579 3.04107 14.0114 2.42681 14.485 2.14266C14.9586 1.85851 15.5729 2.01208 15.857 2.48566L18.5657 7.00015H20.7187C22.0199 7.00015 22.9746 8.22293 22.659 9.48522L22.4696 10.2427C22.3357 10.7785 21.7928 11.1043 21.257 10.9703C20.7212 10.8364 20.3954 10.2934 20.5294 9.75764L20.7187 9.00015H18.0178C18.0062 9.00035 17.9946 9.00035 17.9831 9.00015H6.01595C6.00437 9.00035 5.99277 9.00035 5.98117 9.00015H3.28028L5.78028 19.0002H9.4995C10.0518 19.0002 10.4995 19.4479 10.4995 20.0002C10.4995 20.5524 10.0518 21.0002 9.4995 21.0002H5.78028C4.86255 21.0002 4.06258 20.3756 3.84 19.4852L1.34 9.48522C1.02442 8.22293 1.97914 7.00015 3.28028 7.00015H5.43332L8.14201 2.48566C8.42616 2.01208 9.04042 1.85851 9.514 2.14266Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.9995 23.9997C21.3132 23.9997 23.9995 21.3134 23.9995 17.9997C23.9995 14.686 21.3132 11.9997 17.9995 11.9997C14.6858 11.9997 11.9995 14.686 11.9995 17.9997C11.9995 21.3134 14.6858 23.9997 17.9995 23.9997ZM18.9995 14.9997C18.9995 14.4474 18.5518 13.9997 17.9995 13.9997C17.4472 13.9997 16.9995 14.4474 16.9995 14.9997V16.9997H14.9995C14.4472 16.9997 13.9995 17.4474 13.9995 17.9997C13.9995 18.5519 14.4472 18.9997 14.9995 18.9997H16.9995V20.9997C16.9995 21.5519 17.4472 21.9997 17.9995 21.9997C18.5518 21.9997 18.9995 21.5519 18.9995 20.9997V18.9997H20.9995C21.5518 18.9997 21.9995 18.5519 21.9995 17.9997C21.9995 17.4474 21.5518 16.9997 20.9995 16.9997H18.9995V14.9997Z\"\n })));\n};\nexport default SvgBagAdd1;","import { Notification } from '@coop/components';\nimport { BagAdd1Icon } from '@coop/icons';\nimport type { FC } from 'react';\nimport type React from 'react';\n\nconst AddedToCartTeaserNotification: FC<\n React.PropsWithChildren<{ show: boolean; onClose: () => void }>\n> = (props) => {\n return (\n <Notification\n show={props.show}\n close={props.onClose}\n hasOutsideClick={false}\n type=\"custom\"\n position=\"absolute\"\n theme=\"lightGreen\"\n size=\"productCard\"\n iconSlot={BagAdd1Icon}\n header=\"Varan tillagd i varukorgen\"\n message=\"\"\n overrideAriaLive=\"off\" // accessibility of add to cart button is handled inside AddToCartAccessibilityLogger\n />\n );\n};\n\nexport default AddedToCartTeaserNotification;\n","import classNames from 'classnames';\nimport type { FC } from 'react';\nimport type React from 'react';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport MaxPromotionUsage from '../../../../ecommerce/components/MaxPromotionUsage';\nimport { mapVariantPromotion } from '../../../models/domain/ecommerce/promotion/promotionMappers';\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport type { ProductProps, ProductVariantProps } from '../../../models/props/itemTeaserProps';\nimport { getFormattedComparativePrice } from '../../../utils/productUtils';\nimport ProductMedicalInfo from '../../atoms/MedicalInfo';\nimport ProductPrice from '../../atoms/ProductPrice';\nimport { useIsFromXSmall } from '../../atoms/ResponsiveBreakpoints';\nimport VariantSelector from '../../atoms/VariantSelector';\nimport ProductTeaser from '../ProductTeaser';\nimport styles from './EcomProductTeaserInfo.module.less';\n\ninterface EcomProductTeaserInfoProps {\n currentVariant?: ProductVariantProps;\n handleVariantChange?: (variantID: string) => void;\n product: ProductProps;\n priceType: PriceType;\n showExcludingTaxInfo: boolean;\n quantity?: number;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n}\n\nconst EcomProductTeaserInfo: FC<React.PropsWithChildren<EcomProductTeaserInfoProps>> = (props) => {\n const hasVariants = !!props.product.variants?.length;\n const isFromXSmall = useIsFromXSmall();\n\n const recycleFeePrice =\n props.product.recycleFeeData &&\n Helpers.getPrice(props.product.recycleFeeData, props.priceType);\n\n const priceData = props.currentVariant?.priceData || props.product.priceData;\n\n const promotionPriceData =\n props.currentVariant?.promotionPriceData || props.product.promotionPriceData;\n\n return (\n <div className=\"ProductTeaser-info\">\n <div className=\"ProductTeaser-headingContainer\">\n <p className=\"ProductTeaser-heading\">\n {props.onLinkClick ? (\n <a\n href={props.product.url}\n className=\"ProductTeaser-link u-outlineSolidBase2\"\n tabIndex={-1} // not focusable by keyboard, the image in the parent is focusable instead\n onClick={props.onLinkClick}\n >\n {props.product.name}\n </a>\n ) : (\n props.product.name\n )}\n </p>\n {hasVariants && props.handleVariantChange ? (\n <div className=\"ProductTeaser-features\">\n <VariantSelector\n variants={props.product.variants}\n handleVariantChange={props.handleVariantChange}\n selectedVariantId={props.currentVariant?.id}\n selectItemClassName=\"ProductTeaser-variantSelectItem\"\n />\n </div>\n ) : (\n props.product.packageSizeInformation && (\n <div className=\"ProductTeaser-features\">\n <ProductTeaser.PackageSizeInfo\n packageSizeInformation={props.product.packageSizeInformation}\n />\n </div>\n )\n )}\n </div>\n <div className={classNames('ProductTeaser-detailsContainer')}>\n <div className={classNames('ProductTeaser-details')}>\n {props.product.manufacturer && (\n <ProductTeaser.Brand\n brand={props.product.manufacturer}\n fromSweden={props.product.fromSweden}\n />\n )}\n\n {props.product.comparativePriceData && props.product.comparativeText && (\n <div>\n {getFormattedComparativePrice(\n Helpers.getPrice(\n props.product.comparativePriceData,\n props.priceType,\n ),\n props.product.comparativeText,\n )}\n </div>\n )}\n\n {!!recycleFeePrice && recycleFeePrice > 0 && (\n <div>\n +{Helpers.toEcommercePriceWithCurrency(recycleFeePrice, 'hideRest')}{' '}\n pant\n </div>\n )}\n\n {!!props.product.consumerInformationText?.length && (\n <div>{props.product.consumerInformationText.join('. ')}</div>\n )}\n\n {!isFromXSmall && (\n <ProductMedicalInfo\n isNicotine={!!props.product.isNicotineProduct}\n isPharmaceutical={!!props.product.isPharmaceutical}\n />\n )}\n\n {!!props.product.promotion?.maxUseText && (\n <MaxPromotionUsage text={props.product.promotion.maxUseText} />\n )}\n </div>\n\n <ProductPrice\n priceType={props.priceType}\n newPiecePrice={promotionPriceData}\n piecePrice={priceData}\n promo={mapVariantPromotion(props.product.promotion, props.currentVariant)}\n showExcludingTaxInfo={props.showExcludingTaxInfo}\n className={classNames(styles.ProductPrice, 'ProductTeaser-pricesContainer')}\n quantity={props.quantity}\n />\n </div>\n {isFromXSmall && (\n <ProductMedicalInfo\n isNicotine={!!props.product.isNicotineProduct}\n isPharmaceutical={!!props.product.isPharmaceutical}\n />\n )}\n </div>\n );\n};\n\nexport default EcomProductTeaserInfo;\n","// extracted by mini-css-extract-plugin\nexport default {\"ProductPrice\":\"sJx8F6kR\"};","import * as React from 'react';\n\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport type { ProductProps, ProductVariantProps } from '../../../models/props/itemTeaserProps';\nimport { useIsFromXSmall } from '../../atoms/ResponsiveBreakpoints';\nimport EcomPromoSplash from '../EcomPromoSplash';\nimport ProductTeaser from '../ProductTeaser';\nimport EcomProductTeaserInfo from './EcomProductTeaserInfo';\n\ntype EcomProductTeaserProps = {\n handleTeaserClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n handleLinkClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n handleVariantChange?: (variantId: string) => void;\n containerCss?: string;\n isALink?: boolean;\n isAsyncLink?: boolean;\n currentVariant?: ProductVariantProps;\n product: ProductProps;\n quantity?: number;\n notificationSlot?: React.ReactNode;\n actionsSlot?: React.ReactNode;\n priceType: PriceType;\n};\n\nconst EcomProductTeaser = React.forwardRef<HTMLDivElement, EcomProductTeaserProps>((props, ref) => {\n const isFromXSmall = useIsFromXSmall();\n\n return (\n <ProductTeaser.Wrapper\n ref={ref}\n containerCss={props.containerCss}\n handleTeaserClick={props.handleTeaserClick}\n notificationSlot={props.notificationSlot}\n >\n <ProductTeaser.Media\n name={props.product.name}\n attributeLabels={props.product.attributeLabels}\n imageUrl={props.product.imageUrl}\n url={props.product.url}\n isALink={props.isALink}\n handleLinkClick={props.handleLinkClick}\n promotionSplashSlot={\n props.product.promotion && (\n <EcomPromoSplash\n promotion={props.product.promotion}\n type={!isFromXSmall ? 'small' : 'default'}\n priceType={props.priceType}\n />\n )\n }\n />\n <EcomProductTeaserInfo\n priceType={props.priceType}\n product={props.product}\n handleVariantChange={props.handleVariantChange}\n currentVariant={props.currentVariant}\n showExcludingTaxInfo\n onLinkClick={props.handleLinkClick}\n quantity={props.quantity}\n />\n {props.actionsSlot}\n </ProductTeaser.Wrapper>\n );\n});\n\nexport default EcomProductTeaser;\n","import classNames from 'classnames';\n\ninterface ProductTeaserSkeletonProps {\n withActions: boolean;\n}\nconst ProductTeaserSkeleton = (props: ProductTeaserSkeletonProps) => {\n return (\n <article\n className={classNames(\n 'ProductTeaser ProductTeaser--skeleton ProductTeaser-alignCenter',\n )}\n >\n <div className=\"ProductTeaser-content\">\n <div className=\"ProductTeaser-media\">\n <div className=\"ProductTeaser-image\">\n <div />\n </div>\n </div>\n <div className=\"ProductTeaser-info\">\n <div className=\"ProductTeaser-headingContainer\">\n <div className=\"ProductTeaser-heading\" />\n <div className=\"ProductTeaser-features\">\n <div />\n </div>\n </div>\n <div className=\"ProductTeaser-detailsContainer\">\n <div className=\"ProductTeaser-details\">\n <div />\n <div />\n <div />\n </div>\n <div className=\"ProductTeaser-pricesContainer\">\n <div />\n </div>\n </div>\n {props.withActions && (\n <div className=\"ProductTeaser-actions\">\n <div />\n </div>\n )}\n </div>\n </div>\n </article>\n );\n};\n\nexport default ProductTeaserSkeleton;\n","/* eslint-disable import/prefer-default-export */\n/* eslint-disable no-plusplus */\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport type { PriceData, PriceType } from '../../../models/priceData/priceData';\nimport Splash from '../Splash';\nimport { splitPriceDecimal } from './PromoSplash.utils';\n\ninterface PromoSplashProps {\n priceData?: PriceData;\n type: 'default' | 'large' | 'medium' | 'small';\n percentage?: number;\n prefix?: string;\n suffix?: string;\n unit?: string;\n isMemberPrice?: boolean;\n allText?: string;\n priceType: PriceType;\n label?: string;\n}\n\nconst PromoSplash = (props: PromoSplashProps) => {\n const priceSplit = splitPriceDecimal(\n props.priceData && Helpers.getPrice(props.priceData, props.priceType),\n );\n\n const priceBeforeDot = priceSplit?.beforeDot;\n const priceAfterDot = priceSplit?.afterDot;\n\n const hasDecimal = !!priceAfterDot;\n\n let { unit } = props;\n if (!hasDecimal && unit === 'st') {\n unit = undefined; // dont display unit if it is 'st' and there is no decimals - there is no room for that visually\n }\n\n const hasUnit = !!unit;\n const hasDecimalOrUnit = hasDecimal || hasUnit;\n\n let priceFormatted = '';\n if (props.percentage) {\n priceFormatted = `${props.percentage}%`;\n } else if (priceBeforeDot != null) {\n priceFormatted = priceBeforeDot?.toString() || '';\n if (!hasDecimalOrUnit) {\n priceFormatted += ':-';\n }\n }\n\n return (\n <Splash\n label={props.label}\n type={props.type}\n price={priceFormatted}\n allText={props.allText}\n decimal={priceAfterDot?.toString()}\n unit={unit}\n isMemberPrice={props.isMemberPrice}\n prefix={props.prefix}\n suffix={props.suffix}\n />\n );\n};\n\nexport default PromoSplash;\n","export const splitPriceDecimal = (promoPrice?: number) => {\n if (!promoPrice) return undefined;\n\n const decimalPattern = /(\\d+)(?:[.,:]?(\\d*))/;\n const decimalSplitRegexp = new RegExp(decimalPattern);\n const priceRaw = promoPrice ? promoPrice.toFixed(2) : null;\n\n let price: number | undefined = 0;\n let priceDecimal: number | undefined = 0;\n\n if (priceRaw) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const match = priceRaw.match(decimalSplitRegexp);\n if (match) {\n const [, beforeDot, afterDot] = match;\n price = beforeDot ? parseInt(beforeDot, 10) : undefined;\n priceDecimal = afterDot && afterDot !== '00' ? parseInt(afterDot, 10) : undefined;\n }\n }\n\n return { beforeDot: price, afterDot: priceDecimal };\n};\n","import { Helpers } from '../../../../../utility/helpers';\nimport {\n isFixedPricePromotion,\n isMultiBuyPromotion,\n isPercentagePromotion,\n} from '../../../models/domain/ecommerce/promotion/promotionMappers';\nimport type { PriceType } from '../../../models/priceData/priceData';\n\nexport const getPromoLabel = (promotion: EcomPromotion, priceType: PriceType) => {\n const promoName = promotion.isMemberPrice ? 'medlemspris' : 'kampanjpris';\n\n if (isPercentagePromotion(promotion)) {\n return `${promoName} ${promotion.percentageDiscount}% rabatt`;\n }\n\n if (isFixedPricePromotion(promotion)) {\n const price = Helpers.toEcommercePrice(Helpers.getPrice(promotion.fixedPrice, priceType));\n return `${promoName} ${price} ${promotion.unit ? `per ${promotion.unit}` : ''}`;\n }\n\n if (isMultiBuyPromotion(promotion)) {\n const price = Helpers.toEcommercePrice(\n Helpers.getPrice(promotion.bundlePrice, priceType),\n 'hideRest',\n );\n return `${promoName} ${promotion.numberOfProductRequired} för ${price}`;\n }\n};\n","import { useEffect } from 'react';\n\nimport { appInsights } from '../../../../../appInsights';\nimport {\n isFixedPricePromotion,\n isMultiBuyPromotion,\n isPercentagePromotion,\n} from '../../../models/domain/ecommerce/promotion/promotionMappers';\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport PromoSplash from '../../atoms/PromoSplash';\nimport { getPromoLabel } from './EcomPromoSplash.utils';\n\ninterface EcomPromoSplashProps {\n promotion: EcomPromotion;\n priceType: PriceType;\n type?: 'default' | 'large' | 'medium' | 'small';\n}\n\nconst EcomPromoSplash = ({ promotion, priceType, type = 'small' }: EcomPromoSplashProps) => {\n useEffect(() => {\n if (\n !isPercentagePromotion(promotion) &&\n !isFixedPricePromotion(promotion) &&\n !isMultiBuyPromotion(promotion)\n ) {\n appInsights.trackException({\n exception: new Error(`Unknown promotion type: ${JSON.stringify(promotion)}`),\n });\n }\n }, [promotion]);\n\n if (isPercentagePromotion(promotion)) {\n return (\n <PromoSplash\n label={getPromoLabel(promotion, priceType)}\n type={type}\n isMemberPrice={promotion.isMemberPrice}\n priceType={priceType}\n percentage={promotion.percentageDiscount}\n />\n );\n }\n\n if (isFixedPricePromotion(promotion)) {\n return (\n <PromoSplash\n label={getPromoLabel(promotion, priceType)}\n type={type}\n isMemberPrice={promotion.isMemberPrice}\n priceType={priceType}\n priceData={promotion.fixedPrice}\n unit={promotion.unit}\n />\n );\n }\n\n if (isMultiBuyPromotion(promotion)) {\n return (\n <PromoSplash\n label={getPromoLabel(promotion, priceType)}\n type={type}\n isMemberPrice={promotion.isMemberPrice}\n priceType={priceType}\n priceData={promotion.bundlePrice}\n prefix={`${promotion.numberOfProductRequired} för`}\n />\n );\n }\n\n return null;\n};\n\nexport default EcomPromoSplash;\n","import { Button } from '@coop/components';\nimport type { ButtonProps } from '@coop/components/src/Button/Button.types';\n\nimport styles from './EmphasizedButton.module.less';\n\nconst EmphasizedButton = (props: ButtonProps) => {\n return (\n <Button\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n size={48}\n className={styles.EmphasizedButton}\n >\n {props.children}\n </Button>\n );\n};\n\nexport default EmphasizedButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"EmphasizedButton\":\"r2Q8CPVL\"};","import { ChipIconButton } from '@coop/components';\nimport { HeartFilledIcon, HeartIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\nexport interface FavoriteRecipeToggleProps {\n isFavorite: boolean;\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\n disabled: boolean;\n}\n\nconst FavoriteRecipeToggle: FC<React.PropsWithChildren<FavoriteRecipeToggleProps>> = ({\n isFavorite,\n onClick,\n disabled,\n}) => {\n return (\n <ChipIconButton\n size={32}\n theme=\"whiteGreen\"\n icon={isFavorite ? HeartFilledIcon : HeartIcon}\n label=\"Favoritrecept\"\n onClick={onClick}\n disabled={disabled}\n role=\"switch\"\n aria-checked={isFavorite}\n />\n );\n};\n\nexport default FavoriteRecipeToggle;\n","import { Notification } from '@coop/components';\nimport type { FC } from 'react';\n\nimport { useGroupError } from '../../../hooks/useGroupError';\nimport type { ErrorGroup } from '../../../store/structureDefinitions/errorsState';\n\ninterface ErrorGroupNotificationProps {\n errorGroup: ErrorGroup;\n}\n\nconst ErrorGroupNotification: FC<React.PropsWithChildren<ErrorGroupNotificationProps>> = (\n props,\n) => {\n const { firstError: globalFlyInError, clearGroupErrors: clearGlobalFlyInError } = useGroupError(\n props.errorGroup,\n );\n\n return (\n <Notification\n type=\"alert\"\n message={globalFlyInError?.friendlyMessage}\n show={!!globalFlyInError}\n close={clearGlobalFlyInError}\n />\n );\n};\n\nexport default ErrorGroupNotification;\n","import { Button } from '@coop/components';\nimport type { FC } from 'react';\nimport { useMemo } from 'react';\nimport type { SwiperOptions } from 'swiper/types';\n\nimport type { AnalyticsListOptions } from '../../../../analytics/analyticsHandler';\nimport type { SwiperBreakpoints } from '../../../../utility/coopSwiperBreakpoints';\nimport { useIsInCheckoutMicroApp } from '../../contexts/microAppContext';\nimport { useSwiperOverflowClasses } from '../../hooks/useSwiperOverflowClasses';\nimport type { PriceType } from '../../models/priceData/priceData';\nimport { mapProductToProps } from '../../utils/productUtils';\nimport { useIsMobile } from '../atoms/ResponsiveBreakpoints';\nimport { SwipableList } from '../SwipableList';\nimport EcomProductTeaser from './EcomProductTeaser';\n\nexport interface ProductSubstitutesProps {\n substitutes: ApiProduct[];\n handleProductSubstitution: (product: ApiProduct) => void;\n analyticsOptions?: AnalyticsListOptions;\n activeSubstituteId?: string;\n productSubstitutesBreakpoints: SwiperBreakpoints;\n isConstrained?: boolean;\n priceType: PriceType;\n}\n\nconst ProductSubstitutes: FC<React.PropsWithChildren<ProductSubstitutesProps>> = (props) => {\n const isInCheckout = useIsInCheckoutMicroApp();\n const isMobile = useIsMobile();\n\n const { mainSwiperClasses, spaceBetween } = useSwiperOverflowClasses({\n constrainedX: (isInCheckout && isMobile) || props.isConstrained,\n constrainedY: true,\n });\n\n const swiperOptions: SwiperOptions = useMemo(\n () => ({\n spaceBetween,\n breakpoints: props.productSubstitutesBreakpoints,\n }),\n [props.productSubstitutesBreakpoints, spaceBetween],\n );\n\n const onButtonClick = (item: ApiProduct) => (e: React.MouseEvent) => {\n e.stopPropagation();\n props.handleProductSubstitution(item);\n };\n\n if (!props.substitutes?.length) {\n return null;\n }\n\n return (\n <SwipableList swiperOptions={swiperOptions} swiperMainClassName={mainSwiperClasses}>\n {props.substitutes.map((item: ApiProduct) => (\n <EcomProductTeaser\n key={item.identifier}\n handleTeaserClick={() => props.handleProductSubstitution(item)}\n product={mapProductToProps(item)}\n isALink={false}\n containerCss=\"u-borderAllGrayLight2\"\n priceType={props.priceType}\n actionsSlot={\n props.activeSubstituteId === item.identifier ? (\n <Button theme=\"light\" onClick={onButtonClick(item)} fullWidth>\n Vald\n </Button>\n ) : (\n <Button theme=\"primary\" onClick={onButtonClick(item)} fullWidth>\n Välj\n </Button>\n )\n }\n />\n ))}\n </SwipableList>\n );\n};\n\nexport default ProductSubstitutes;\n","export const missingProductImageUrl = '/Assets/Images/missing-image-product.png';\n","// extracted by mini-css-extract-plugin\nexport default {};","import { Chip } from '@coop/components';\nimport classNames from 'classnames';\nimport type { FC, ReactNode } from 'react';\nimport * as React from 'react';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport { useBadges } from '../../../hooks/useBadges';\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport type {\n ProductAttributeLabel,\n ProductProps,\n ProductVariantProps,\n} from '../../../models/props/itemTeaserProps';\nimport CloudinaryImage from '../../atoms/CloudinaryImage';\nimport { ConditionalWrapper } from '../../atoms/ConditionalWrapper';\nimport ProductBadge from '../../atoms/ProductBadge';\nimport { missingProductImageUrl } from './ProductTeaser.consts';\nimport styles from './ProductTeaser.module.less';\n\ntype BaseProductTeaserProps = {\n handleTeaserClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n handleLinkClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n handleVariantChange?: (variantId: string) => void;\n containerCss?: string;\n isALink?: boolean;\n isAsyncLink?: boolean;\n currentVariant?: ProductVariantProps;\n product: ProductProps;\n // detailsContainerColumn?: boolean;\n notificationSlot?: React.ReactNode;\n actionsSlot?: React.ReactNode;\n priceType: PriceType;\n // additionalSplashInfo?: string;\n};\n\nconst ProductTeaserWrapper = React.forwardRef<\n HTMLDivElement,\n Pick<BaseProductTeaserProps, 'containerCss' | 'handleTeaserClick' | 'notificationSlot'> & {\n children: ReactNode;\n }\n>((props, ref) => {\n const containerCss = classNames(\n styles.FakeStyle,\n 'ProductTeaser ProductTeaser-alignCenter',\n props.containerCss,\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <div ref={ref} onClick={props.handleTeaserClick} className={containerCss}>\n <div className=\"ProductTeaser-content\">{props.children}</div>\n {props.notificationSlot}\n </div>\n );\n});\n\ninterface ProductTeaserMediaProps {\n attributeLabels?: ProductAttributeLabel[];\n url?: string;\n name: string;\n imageUrl?: string;\n isALink?: boolean;\n handleLinkClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n slotTopBadge?: ReactNode;\n promotionSplashSlot?: ReactNode;\n}\n\nconst ProductTeaserMedia: FC<React.PropsWithChildren<ProductTeaserMediaProps>> = (props) => {\n const badges = useBadges(props.attributeLabels);\n\n const filteredBadges = badges.slice(0, 2); // business requirement: max 2 badges can be displayed on any product listing\n\n return (\n <div className=\"ProductTeaser-media\">\n <ConditionalWrapper\n condition={!!props.isALink || !!props.handleLinkClick}\n renderWrapper={(ch) => (\n <a\n href={props.url}\n className={classNames('u-outlineSolidBase2')}\n aria-label={props.name}\n onClick={props.handleLinkClick}\n >\n {ch}\n </a>\n )}\n >\n <div className=\"ProductTeaser-image\">\n <CloudinaryImage\n url={props.imageUrl}\n name={props.name}\n fallbackUrl={missingProductImageUrl}\n transform=\"f_auto,fl_clip,fl_progressive,q_auto,c_lpad,g_center,h_120,w_120\"\n retinaTransform=\"f_auto,fl_clip,fl_progressive,q_auto,c_lpad,g_center,h_240,w_240\"\n lazy\n />\n </div>\n </ConditionalWrapper>\n {(props.slotTopBadge || filteredBadges?.length > 0) && (\n <div className=\"ProductTeaser-badges\">\n {props.slotTopBadge}\n {filteredBadges.map((badge, index) => {\n return (\n <ProductBadge\n // eslint-disable-next-line react/no-array-index-key\n key={`${badge.url}-${index.toString()}`}\n zoomable={false}\n url={badge.url!}\n alt={badge.alt}\n dimensions={{ width: 24, height: 24 }}\n />\n );\n })}\n </div>\n )}\n {!!props.promotionSplashSlot && (\n <div className=\"ProductTeaser-promos\">\n <div className=\"ProductTeaser-splash\">{props.promotionSplashSlot}</div>\n </div>\n )}\n </div>\n );\n};\n\nconst ProductTeaserBrand: FC<React.PropsWithChildren<{ brand: string; fromSweden?: boolean }>> = ({\n brand,\n fromSweden,\n}) => {\n return (\n <div className={classNames(`ProductTeaser-brand`)}>\n {fromSweden && (\n <img\n className=\"u-marginRxxxxsm\"\n src=\"/Assets/Icons/flag-sweden.svg\"\n alt=\"Svensk flagga\"\n width=\"16\"\n height=\"10\"\n />\n )}\n <span>{brand}.</span>\n </div>\n );\n};\n\nconst ProductTeaserPackageSizeInfo: FC<\n React.PropsWithChildren<{ packageSizeInformation: string }>\n> = ({ packageSizeInformation }) => {\n return (\n <Chip size={24} theme=\"whiteBlack\">\n {Helpers.capitalize(packageSizeInformation)}\n </Chip>\n );\n};\n\nconst ProductTeaserHeading: FC<React.PropsWithChildren<{ name: string }>> = ({ name }) => {\n return <h3 className=\"ProductTeaser-heading\">{name}</h3>;\n};\n\nconst ProductTeaser = {\n Wrapper: ProductTeaserWrapper,\n Media: ProductTeaserMedia,\n Brand: ProductTeaserBrand,\n Heading: ProductTeaserHeading,\n PackageSizeInfo: ProductTeaserPackageSizeInfo,\n};\n\nexport default ProductTeaser;\n","import { Icon } from '@coop/components';\nimport { StarFilledIcon, StarIcon } from '@coop/icons';\nimport classnames from 'classnames';\n\nimport styles from './RatingStars.module.less';\n\nconst RatingStars = ({\n size = 'small',\n color = 'dsGreen',\n ...props\n}: {\n rating: number;\n votes: number;\n size?: 'small' | 'big';\n color?: React.ComponentProps<typeof Icon>['color'];\n}) => {\n const stars = Math.round(props.rating);\n const starIconDimension = size === 'small' ? 12 : 20;\n\n return (\n <div className={styles.Rating}>\n <span className=\"u-hiddenVisually\">\n betygsatt {stars} av 5. {props.votes} {props.votes === 1 ? 'röst' : 'röster'}.\n </span>\n <div className={styles.Stars}>\n {Array.from({ length: 5 }).map((star, index) => (\n <Icon\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n icon={index < stars ? StarFilledIcon : StarIcon}\n width={starIconDimension}\n height={starIconDimension}\n color={color}\n aria-hidden\n />\n ))}\n </div>\n <div className={classnames(styles.Votes, size === 'big' && styles.Big)} aria-hidden>\n ({props.votes})\n </div>\n </div>\n );\n};\n\nexport default RatingStars;\n","// extracted by mini-css-extract-plugin\nexport default {\"Rating\":\"VaO1oQTz\",\"Votes\":\"IJwh7W73\",\"Big\":\"PAuEfoCJ\",\"Stars\":\"nZ8RVTEp\"};","import { CoopSwiperBreakpointsUnique } from '../../../../../utility/coopSwiperBreakpointsUnique';\n\nexport const recipeModalProductSubstitutesBreakpoints =\n CoopSwiperBreakpointsUnique.getUniqueBreakpointsFor(\n CoopSwiperBreakpointsUnique.AREA_RECIPE_MODAL,\n ).ProductList;\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unstable-nested-components */\nimport { ChipIconButton } from '@coop/components';\nimport { MinusIcon, PlusIcon } from '@coop/icons';\n\nimport { useNumericStepperCalculation } from '../../../../common/components/atoms/NumericStepper';\n\ninterface RecipePortionCounterProps {\n portions: number;\n setPortions: (quantity: number) => void;\n minValue: number;\n maxValue: number;\n incrementBy?: number;\n}\n\nconst RecipePortionCounter = (props: RecipePortionCounterProps) => {\n const { calculateAdditionValue, calculateSubstractValue } = useNumericStepperCalculation({\n incrementBy: props.incrementBy || 2,\n minValue: props.minValue,\n maxValue: props.maxValue,\n });\n\n return (\n <div className=\"u-flex u-flexAlignCenter u-flexJustifyCenter\">\n <span>{props.portions} portioner</span>\n <div style={{ marginLeft: 24 }}>\n <ChipIconButton\n icon={MinusIcon}\n label=\"Ta bort en portion\"\n theme=\"whiteGreen\"\n size={32}\n onClick={() => {\n const newValue = calculateSubstractValue(props.portions);\n props.setPortions(newValue);\n }}\n />\n </div>\n <div style={{ marginLeft: 8 }}>\n <ChipIconButton\n icon={PlusIcon}\n label=\"Lägg till en portion\"\n theme=\"whiteGreen\"\n size={32}\n onClick={() => {\n const newValue = calculateAdditionValue(props.portions);\n props.setPortions(newValue);\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default RecipePortionCounter;\n","import { Button } from '@coop/components';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport { buildRecipeRedirectUrl } from '../../../../recipe/utils';\nimport { PriceType } from '../../../models/priceData/priceData';\n\ninterface RecipeModalFooterProps {\n totalProducts?: number;\n totalPrice: number;\n externalId: number;\n buyable: boolean;\n handleBuy: () => void;\n handleLinkClick: () => void;\n priceType: PriceType;\n isFoodBox: boolean;\n}\n\nconst RecipeModalFooter: React.FC<React.PropsWithChildren<RecipeModalFooterProps>> = ({\n totalProducts,\n totalPrice,\n externalId,\n buyable,\n handleBuy,\n handleLinkClick,\n priceType,\n isFoodBox,\n}) => {\n return (\n <div className=\"RecipeModal-footer u-md-flex\">\n {buyable && (\n <div>\n {totalProducts !== undefined && (\n <span className=\"u-block u-textXSmall\">\n Totalt{' '}\n <span className=\"u-textWeightNormal\">\n (<span>{totalProducts}</span> varor)\n </span>\n </span>\n )}\n <div>{Helpers.toEcommercePriceWithCurrency(totalPrice)}</div>\n {priceType === PriceType.ExcludeTax && (\n <div className=\"u-textWeightNormal u-textXSmall\">\n {Helpers.getPriceTypeText(priceType)}\n </div>\n )}\n </div>\n )}\n <div className=\"u-flex\">\n <Button asChild size={40} theme=\"primaryOutline\" className=\"u-marginRxsm\">\n <a\n href={buildRecipeRedirectUrl(externalId.toString())}\n onClick={handleLinkClick}\n >\n {isFoodBox ? 'GÃ¥ till produktsida' : 'GÃ¥ till receptsida'}\n </a>\n </Button>\n {buyable && (\n <Button size={40} theme=\"primary\" onClick={handleBuy}>\n Köp varor\n </Button>\n )}\n </div>\n </div>\n );\n};\n\nexport default RecipeModalFooter;\n","import { ChipIconButton, Icon } from '@coop/components';\nimport { ClockIcon, CloseIcon } from '@coop/icons';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport { getTransformedImageUrl } from '../../../utils/cloudinaryImageUtils';\nimport { RatingStars } from '../RatingStars';\n\ninterface RecipeModalHeaderProps {\n recipeName: string;\n imageUrl: string;\n rating: number | null;\n votes?: number;\n time: string;\n buyable: boolean;\n pricePortion?: number;\n close: () => void;\n}\n\nconst RecipeModalHeader: React.FC<React.PropsWithChildren<RecipeModalHeaderProps>> = ({\n recipeName,\n imageUrl,\n rating,\n votes,\n time,\n buyable,\n pricePortion,\n close,\n}) => {\n const transformedImageUrl = getTransformedImageUrl(imageUrl, 'w_400,h_400');\n\n return (\n <div className=\"RecipeModal-header\">\n {transformedImageUrl && (\n <div\n className=\"RecipeModal-bgImage\"\n style={{\n backgroundImage: `url(${transformedImageUrl})`,\n }}\n />\n )}\n <div className=\"RecipeModal-overlay\" />\n <div className=\"RecipeModal-close\">\n <ChipIconButton\n icon={CloseIcon}\n size={32}\n theme=\"whiteGreen\"\n label=\"Stäng\"\n onClick={close}\n />\n </div>\n <h3 className=\"RecipeModal-heading\">{recipeName}</h3>\n <div className=\"u-posRelative\">\n <div className=\"Grid Grid--gutterHmd Grid--fit\">\n <div className=\"Grid-cell Grid-cell--fit\">\n {!!rating && !!votes && (\n <RatingStars rating={rating} votes={votes} color=\"white\" />\n )}\n </div>\n {time && (\n <div className=\"Grid-cell Grid-cell--fit u-flexAlignCenter\">\n <Icon icon={ClockIcon} className=\"u-marginRxxsm\" />\n <span className=\"u-textXSmall\">{time}</span>\n </div>\n )}\n {buyable && pricePortion && (\n <div className=\"Grid-cell Grid-cell--fit\">\n <span className=\"u-textXSmall\">{`Ca ${Helpers.toEcommercePriceWithCurrency(\n pricePortion,\n )}/port`}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default RecipeModalHeader;\n","// extracted by mini-css-extract-plugin\nexport default {\"RadioBox\":\"QpkilH1D\"};","import { Icon, RadioGroup } from '@coop/components';\nimport { MinusIcon, PlusIcon } from '@coop/icons';\nimport classnames from 'classnames';\nimport { useState } from 'react';\n\nimport type { RecipeCalculationType, RecipePrioritizationType } from '../../../../recipe/models';\nimport styles from './RecipeModalAccordion.module.less';\n\ninterface RecipeModalAccordionProps {\n handleCalculationTypeChange: (\n calculationType: RecipeCalculationType,\n prioritization: RecipePrioritizationType | null,\n ) => void;\n}\n\ntype RecipeModalAccordionRadioValues = RecipeCalculationType | RecipePrioritizationType;\ninterface RecipeModalAccordionRadioButtonData {\n name: string;\n description: string;\n value: RecipeModalAccordionRadioValues;\n}\n\nconst RecipeModalAccordion = (props: RecipeModalAccordionProps) => {\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const [inputSelected, setInputSelected] = useState<RecipeModalAccordionRadioButtonData>({\n name: 'Bästa val',\n description: 'Varorna kombineras och väljs för att du ska fÃ¥ sÃ¥ lite svinn som möjligt.',\n value: 'waste',\n });\n\n const accordionExpandedToggle = () => setIsExpanded(!isExpanded);\n const handleInputSelect = (selectedInput: RecipeModalAccordionRadioButtonData) => {\n setInputSelected({ ...selectedInput });\n\n let calculationType: RecipeCalculationType;\n let recipeProritization: RecipePrioritizationType | null = null;\n\n switch (selectedInput.value) {\n case 'waste':\n calculationType = 'waste';\n break;\n case 'price':\n calculationType = 'price';\n break;\n case 'organic':\n calculationType = 'waste';\n recipeProritization = 'organic';\n break;\n default:\n calculationType = 'waste';\n break;\n }\n\n props.handleCalculationTypeChange?.(calculationType, recipeProritization);\n };\n\n const onValueChange = (value: string) => {\n switch (value) {\n case 'waste':\n handleInputSelect({\n name: 'Bästa val',\n description:\n 'Varorna kombineras och väljs för att du ska fÃ¥ sÃ¥ lite svinn som möjligt.',\n value: 'waste',\n });\n break;\n case 'price':\n handleInputSelect({\n name: 'Billigt',\n description:\n 'Vi föreslÃ¥r det billigaste alternativet. Självklart med sÃ¥ lite svinn som möjligt.',\n value: 'price',\n });\n break;\n case 'organic':\n handleInputSelect({\n name: 'Eko',\n description:\n 'Vi föreslÃ¥r en ekologisk vara om det finns. Alltid med sÃ¥ lite svinn som möjligt.',\n value: 'organic',\n });\n break;\n default:\n break;\n }\n };\n\n // TODO A11Y: Redo accordion into Radix Accordion, remove Accordion.less\n return (\n <div className=\"Accordion Accordion--single\">\n <ul className=\"Accordion-list\">\n <li className={classnames('Accordion-item', isExpanded && 'is-expanded')}>\n <div\n className=\"Accordion-header u-textMedium u-paddingHmd\"\n onClick={accordionExpandedToggle}\n >\n <span className=\"u-inlineBlock u-textSmall u-md-textMedium u-marginRxxsm\">\n Önskade varor:{' '}\n </span>\n <span className=\"u-textWeightBold u-textSmall u-md-textMedium u-inlineBlock u-marginRxxsm\">\n {inputSelected.name}\n </span>\n <Icon\n icon={PlusIcon}\n className=\"Accordion-icon Accordion-icon--plus\"\n width={20}\n height={20}\n />\n <Icon\n icon={MinusIcon}\n className=\"Accordion-icon Accordion-icon--minus\"\n width={20}\n height={20}\n />\n </div>\n <div className=\"Accordion-panel\">\n <div className=\"u-paddingAmd\">\n <RadioGroup.Root onValueChange={onValueChange} defaultValue=\"waste\">\n <div className=\"Grid Grid--gutterAxsm\">\n <div className=\"Grid-cell u-sm-size1of3\">\n <RadioGroup.Item\n value=\"price\"\n id=\"calctype_price\"\n label={\n <>\n Billigt\n <i className=\"u-block u-sm-hidden u-md-hidden u-textXSmall u-marginTxxxsm\">\n Vi föreslÃ¥r det billigaste alternativet.\n Självklart med sÃ¥ lite svinn som möjligt.\n </i>\n </>\n }\n className={styles.RadioBox}\n />\n </div>\n <div className=\"Grid-cell u-sm-size1of3\">\n <RadioGroup.Item\n value=\"waste\"\n id=\"calctype_waste\"\n label={\n <>\n Bästa val\n <i className=\"u-block u-sm-hidden u-md-hidden u-textXSmall u-marginTxxxsm\">\n Varorna kombineras och väljs för att du ska\n fÃ¥ sÃ¥ lite svinn som möjligt.\n </i>\n </>\n }\n className={styles.RadioBox}\n />\n </div>\n <div className=\"Grid-cell u-sm-size1of3\">\n <RadioGroup.Item\n value=\"organic\"\n id=\"calctype_eko\"\n label={\n <>\n Eko\n <i className=\"u-block u-sm-hidden u-md-hidden u-textXSmall u-marginTxxxsm\">\n Vi föreslÃ¥r en ekologisk vara om det finns.\n Alltid med sÃ¥ lite svinn som möjligt.\n </i>\n </>\n }\n className={styles.RadioBox}\n />\n </div>\n </div>\n </RadioGroup.Root>\n\n <div className=\"Grid-cell u-sm-block u-md-block u-sm-paddingTxsm u-md-paddingTsm\">\n <span className=\"u-textSmall\">{inputSelected.description}</span>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n );\n};\n\nexport default RecipeModalAccordion;\n","import { Button } from '@coop/components';\n\nimport { Helpers } from '../../../../../utility/helpers';\n\ninterface RecipeModalProductsFooterProps {\n totalProducts?: number;\n totalPrice: number;\n handleBuy: () => void;\n}\n\nconst RecipeModalProductsFooter: React.FC<\n React.PropsWithChildren<RecipeModalProductsFooterProps>\n> = ({ totalProducts, totalPrice, handleBuy }) => {\n return (\n <div className=\"RecipeModal-footer u-md-hidden\">\n <div className=\"u-marginBxsm\">\n Totalt\n {totalProducts !== undefined && (\n <>\n {' '}\n (<span>{totalProducts}</span> varor)\n </>\n )}\n :{' '}\n <span className=\"u-textWeightBold\">\n {Helpers.toEcommercePriceWithCurrency(totalPrice)}\n </span>\n </div>\n <Button size={40} theme=\"primary\" onClick={handleBuy} fullWidth>\n Köp varor\n <div />\n </Button>\n </div>\n );\n};\n\nexport default RecipeModalProductsFooter;\n","import type { FC } from 'react';\n\nimport { Helpers } from '../../../../../utility/helpers';\nimport type { RecipeCartState, RecipeSection } from '../../../../recipe/hooks/useRecipeCart';\nimport type {\n RecipeCalculationType,\n RecipeItemState,\n RecipePrioritizationType,\n} from '../../../../recipe/models';\nimport { PriceType } from '../../../models/priceData/priceData';\nimport RecipeModalAccordion from './RecipeModalAccordion';\nimport RecipeModalProductsFooter from './RecipeModalProductsFooter';\n\nexport interface RecipeProductItemsGroup {\n cart: RecipeCartState | null;\n}\n\ninterface RecipeModalProductsProps extends RecipeProductItemsGroup {\n renderCartItem: (item: RecipeItemState) => JSX.Element;\n handleCalculationTypeChange: (\n calculationType: RecipeCalculationType,\n prioritization: RecipePrioritizationType | null,\n ) => void;\n buyable: boolean;\n handleBuy: () => void;\n totalProducts?: number;\n}\n\ninterface RecipeModalProductsListProps {\n list: RecipeItemState[];\n title: string | null;\n renderCartItem: (item: RecipeItemState) => JSX.Element;\n}\n\ninterface RecipeModalSectionProps {\n section: RecipeSection;\n allItems: RecipeItemState[];\n renderCartItem: (item: RecipeItemState) => JSX.Element;\n}\n\nconst RecipeModalSection: FC<React.PropsWithChildren<RecipeModalSectionProps>> = (props) => {\n const sectionItems = props.allItems.filter((item) =>\n props.section.substituteIdentifiers.includes(item.substituteIdentifier),\n );\n\n const getSectionTitle = () => {\n switch (props.section.type) {\n case 'shared':\n return 'Varor som delas mellan recept';\n case 'common':\n return 'Bra att ha till receptet';\n default:\n return null;\n }\n };\n\n return (\n <RecipeModalProductsList\n list={sectionItems}\n title={getSectionTitle()}\n renderCartItem={props.renderCartItem}\n />\n );\n};\n\nexport const RecipeModalProductsList: React.FC<\n React.PropsWithChildren<RecipeModalProductsListProps>\n> = ({ list, title, renderCartItem }) => (\n <div className=\"Cart-group\">\n {title && (\n <div className=\"Cart-groupHeader\">\n <span className=\"Cart-groupHeading\">{title}</span>\n </div>\n )}\n <ul className=\" Cart-itemList\">{list.map((item) => renderCartItem(item))}</ul>\n </div>\n);\n\nconst RecipeModalProducts: React.FC<React.PropsWithChildren<RecipeModalProductsProps>> = ({\n cart,\n renderCartItem,\n handleCalculationTypeChange,\n buyable,\n handleBuy,\n totalProducts,\n}) => {\n return (\n <>\n <RecipeModalAccordion handleCalculationTypeChange={handleCalculationTypeChange} />\n <div className=\"Cart Cart--borderB\">\n {cart?.sections.map((section) => (\n <RecipeModalSection\n key={section.id}\n section={section}\n allItems={cart?.items}\n renderCartItem={renderCartItem}\n />\n ))}\n </div>\n {buyable && (\n <RecipeModalProductsFooter\n totalProducts={totalProducts}\n // use price with tax for recipes\n totalPrice={\n (cart && Helpers.getPrice(cart.totalPriceData, PriceType.IncludeTax)) || 0\n }\n handleBuy={handleBuy}\n />\n )}\n </>\n );\n};\n\nexport default RecipeModalProducts;\n","/* eslint-disable react/no-array-index-key */\nimport { Button } from '@coop/components';\nimport * as React from 'react';\nimport { useMemo } from 'react';\n\nimport type { ApiRecipe } from '../../../../../models/recipe/recipeModel';\nimport { buildRecipeRedirectUrl } from '../../../../recipe/utils';\nimport { mapToIngredientProps, mapToRecipeCookingInstructions } from '../../../utils/recipeUtils';\nimport RawHtml from '../../atoms/RawHtml';\n\nconst RecipeModalRecept = ({ recipe, readonly }: { recipe: ApiRecipe; readonly?: boolean }) => {\n const cookingInstructions = useMemo(\n () => mapToRecipeCookingInstructions(recipe.cookingInstructions),\n [recipe.cookingInstructions],\n );\n\n const recipePart = recipe.recipePart.map((part) => ({\n part: part.name,\n ingredients: mapToIngredientProps(part.ingredients),\n }));\n\n const ingredientLine = (formattedQuantity: string, unit: string, friendlyText: string) => {\n if (formattedQuantity) {\n return `${formattedQuantity} ${unit} ${friendlyText}`;\n }\n\n return friendlyText;\n };\n\n return (\n <div\n className=\"Tab-panel u-md-marginTz u-paddingA u-paddingTxlg is-active\"\n data-panel=\"2\"\n data-external-id={recipe.externalId}\n data-recipe-name={recipe.name}\n >\n {recipe.preamble && (\n <p className=\"u-marginTz u-md-marginTz u-marginBxlg u-textCenter\">\n <RawHtml html={recipe.preamble} />\n </p>\n )}\n <div className=\"Grid Grid--gutterA\">\n <div className=\"Grid-cell u-sm-size1of2\">\n <h5>\n Ingredienser{' '}\n {recipe.yieldValue > 0 && `(för ${recipe.yieldValue} portioner)`}\n </h5>\n <ul className=\"List List--noSpacing u-textSmall\">\n {recipePart.map(({ part, ingredients }, i) => (\n <div key={`${i}_${part}`}>\n {part && (\n <li className=\"u-textWeightBold\">\n <p>{part}</p>\n </li>\n )}\n {ingredients.map(\n ({ formattedQuantity, unit, friendlyText }, index) => (\n <li\n key={`${index}_${friendlyText}`}\n className=\"u-colorBaseMid\"\n >\n <p>\n {ingredientLine(\n formattedQuantity,\n unit,\n friendlyText,\n )}\n </p>\n </li>\n ),\n )}\n </div>\n ))}\n </ul>\n </div>\n\n {!recipe.isFoodBox && (\n <div className=\"Grid-cell u-sm-size1of2\">\n <h5>Gör sÃ¥ här</h5>\n <div className=\"List List--ordered-container\">\n {cookingInstructions.map(({ title, instructions }, i) => (\n <React.Fragment key={i}>\n {title && <h5 className=\"u-textWeightBold\">{title}</h5>}\n {!!instructions?.length && (\n <ol className=\"List List--ordered u-textSmall\">\n {instructions.map((el, e) => (\n <li key={e} className=\"u-colorBaseMid\">\n {el}\n </li>\n ))}\n </ol>\n )}\n </React.Fragment>\n ))}\n </div>\n </div>\n )}\n </div>\n {!readonly && (\n <div className=\"Grid Grid--gutterA u-paddingH u-paddingTmd hideme\">\n <Button\n asChild\n size={40}\n theme=\"primaryOutline\"\n fullWidth\n className=\"u-md-hidden\"\n >\n <a href={buildRecipeRedirectUrl(recipe.externalId.toString())}>\n Gå till receptsidan\n </a>\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default RecipeModalRecept;\n","import { OverlayLoader } from '@coop/components';\nimport * as React from 'react';\n\nimport type { ApiRecipe } from '../../../../../models/recipe/recipeModel';\nimport { Helpers } from '../../../../../utility/helpers';\nimport RecipePortionCounter from '../../../../cart/components/molecules/RecipePortionCounter';\nimport type {\n RecipeCalculationType,\n RecipeItemState,\n RecipeModalTab,\n RecipePrioritizationType,\n} from '../../../../recipe/models';\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport type { TabItem } from '../TabSwitcher';\nimport { TabSwitcher } from '../TabSwitcher';\nimport RecipeModalFooter from './RecipeModalFooter';\nimport RecipeModalHeader from './RecipeModalHeader';\nimport type { RecipeProductItemsGroup } from './RecipeModalProducts';\nimport RecipeModalProducts from './RecipeModalProducts';\nimport RecipeModalRecept from './RecipeModalRecept';\n\ninterface RecipeModalProps extends RecipeProductItemsGroup {\n recipeData?: ApiRecipe;\n modalTabToDisplay: RecipeModalTab;\n renderCartItem: (item: RecipeItemState) => JSX.Element;\n close: () => void;\n isLoading: boolean;\n handlePortionChange: (quantity: number) => void;\n handleCalculationTypeChange: (\n calculationType: RecipeCalculationType,\n prioritization: RecipePrioritizationType | null,\n ) => void;\n handleBuy: () => void;\n handleLinkClick: () => void;\n readonly?: boolean;\n priceType: PriceType;\n}\n\nconst RecipeModalBody: React.FC<React.PropsWithChildren<RecipeModalProps>> = ({\n recipeData,\n modalTabToDisplay = 1,\n renderCartItem,\n close,\n isLoading,\n handlePortionChange,\n handleCalculationTypeChange,\n handleBuy,\n handleLinkClick,\n readonly,\n cart,\n priceType,\n}) => {\n let buyable = false;\n\n if (cart) {\n buyable = true;\n }\n\n buyable = readonly ? false : buyable;\n\n const totalProducts = cart?.items\n .filter((item) => item.purchasable)\n .reduce((curr, next) => curr + (next.quantity || 0), 0);\n\n return (\n <div className=\"RecipeModal RecipeModal--fullHeight\">\n <OverlayLoader isLoading={isLoading} />\n {recipeData && (\n <RecipeModalBodyWithData\n recipeData={recipeData}\n buyable={buyable}\n close={close}\n totalProducts={totalProducts}\n handlePortionChange={handlePortionChange}\n handleLinkClick={handleLinkClick}\n handleBuy={handleBuy}\n cart={cart}\n renderCartItem={renderCartItem}\n handleCalculationTypeChange={handleCalculationTypeChange}\n modalTabToDisplay={modalTabToDisplay}\n readonly={readonly}\n priceType={priceType}\n />\n )}\n </div>\n );\n};\n\nconst RecipeModalBodyWithData = ({\n recipeData,\n modalTabToDisplay = 1,\n renderCartItem,\n close,\n handlePortionChange,\n handleCalculationTypeChange,\n handleBuy,\n handleLinkClick,\n readonly,\n cart,\n buyable,\n totalProducts,\n priceType,\n}: Omit<RecipeModalProps, 'recipeData' | 'isLoading'> &\n Required<Pick<RecipeModalProps, 'recipeData'>> & {\n buyable: boolean;\n totalProducts?: number;\n }) => {\n const defaultPortions = recipeData.yieldValue || 4;\n const rating = recipeData.avgRating || null;\n const display = modalTabToDisplay === 2 && cart ? 2 : 1;\n\n const [portions, setPortions] = React.useState(defaultPortions);\n\n const createTabs = (): TabItem[] => {\n return [\n {\n id: '1',\n name: !recipeData?.isFoodBox ? 'Recept' : 'Beskrivning',\n component: <RecipeModalRecept recipe={recipeData!} readonly={readonly} />,\n },\n ...(buyable\n ? [\n {\n id: '2',\n name: 'Varor',\n component: (\n <RecipeModalProducts\n renderCartItem={renderCartItem}\n buyable={buyable}\n cart={cart}\n handleCalculationTypeChange={handleCalculationTypeChange}\n handleBuy={handleBuy}\n totalProducts={totalProducts}\n />\n ),\n },\n ]\n : []),\n ];\n };\n\n return (\n <>\n <RecipeModalHeader\n recipeName={recipeData.name}\n imageUrl={recipeData.imageUrl}\n rating={rating}\n time={recipeData.totalTime}\n buyable={buyable}\n close={close}\n />\n <TabSwitcher\n items={createTabs()}\n wrapperClasses=\"RecipeModal-body Tab--recipeModal\"\n containerClasses=\"RecipeModal-contentTop\"\n panelClasses=\"RecipeModal-content\"\n listClasses=\"RecipeModal-tabs\"\n itemClasses={() => 'RecipeModal-tabs'}\n renderNextToTabs={() =>\n buyable && (\n <div className=\"RecipeModal-amountSelector\">\n <div className=\"u-sizeFull\">\n <RecipePortionCounter\n minValue={1}\n maxValue={20}\n incrementBy={1}\n portions={portions}\n setPortions={(p) => {\n setPortions(p);\n handlePortionChange(p);\n }}\n />\n </div>\n </div>\n )\n }\n initialActiveId={display.toString()}\n />\n {!readonly && (\n <RecipeModalFooter\n priceType={priceType}\n totalProducts={totalProducts}\n // use price with tax for recipes\n totalPrice={(cart && Helpers.getPrice(cart.totalPriceData, priceType)) || 0}\n externalId={recipeData.externalId}\n buyable={buyable}\n handleBuy={handleBuy}\n handleLinkClick={handleLinkClick}\n isFoodBox={recipeData.isFoodBox}\n />\n )}\n </>\n );\n};\n\nexport default RecipeModalBody;\n","import { useCallback, useEffect, useRef } from 'react';\n\nimport type { ApiRecipe } from '../../../../../models/recipe/recipeModel';\nimport RecipeProductListingItem from '../../../../cart/components/molecules/RecipeProductListingItem/RecipeProductListingItem';\nimport { recipeModalProductSubstitutesBreakpoints } from '../../../../cart/components/molecules/RecipeProductListingItem/RecipeProductListingItem.utils';\nimport recipeFlow from '../../../../recipe/flow/recipeFlow';\nimport useRecipeCart from '../../../../recipe/hooks/useRecipeCart';\nimport useSubstitutes from '../../../../recipe/hooks/useSubstitute';\nimport type {\n RecipeCalculationType,\n RecipeItemState,\n RecipePrioritizationType,\n} from '../../../../recipe/models';\nimport { RecipeModalTab } from '../../../../recipe/models';\nimport type { ApiAddMultipleRecipesRequest } from '../../../api/recipe/recipeModels';\nimport { useAsyncDispatcher } from '../../../hooks/useAsyncDispatcher';\nimport { useCurrentPriceType } from '../../../hooks/useCurrentPriceType';\nimport { useGroupError } from '../../../hooks/useGroupError';\nimport { useRequestEffects } from '../../../hooks/useRequestEffects';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../selectors/storeSelectors';\nimport { ErrorGroup } from '../../../store/structureDefinitions/errorsState';\nimport { cartThunks } from '../../../thunks/cartThunks';\nimport { ga4CartTracking } from '../../../tracking/ga4/cart';\nimport type { ModifyCartAnalyticsOptions } from '../../../tracking/ga4/cart/ga4CartEvents';\nimport tracking from '../../../tracking/tracking';\nimport MissingItemBody from '../../organisms/MissingItemBody';\nimport PurchasableItemBody from '../../organisms/PurchasableItemBody/PurchasableItemBody';\nimport RecipeModalBody from '../RecipeModal/RecipeModalBody';\n\ninterface BuyableRecipeModalProps {\n recipeId: string;\n portions: number;\n tabToDisplay: RecipeModalTab;\n close: () => void;\n readonly?: boolean;\n analyticsListName: string;\n}\n\nconst useBuyableRecipeModalTracking = () => {\n const modalPopupSent = useRef(false);\n\n const trackModalPopup = useCallback((recipe: ApiRecipe, portions: number) => {\n if (!modalPopupSent.current) {\n tracking.ecommerce.recipes.modalPopup(recipe, RecipeModalTab.Products, portions);\n modalPopupSent.current = true;\n }\n }, []);\n\n const trackAddToCart = useCallback(\n (\n products: { quantity: number; productId: string; variantId?: string; index?: number }[],\n storeId: string,\n listOptions: ModifyCartAnalyticsOptions | null,\n ) => {\n ga4CartTracking.modifyCartItems(\n products.map((item) => ({\n index: item.index,\n productId: item.productId,\n previousQuantity: 0,\n newQuantity: item.quantity,\n variantId: item.variantId,\n })),\n storeId,\n listOptions,\n );\n },\n [],\n );\n\n return {\n trackModalPopup,\n trackBuyRecipe: tracking.ecommerce.recipes.buyRecipe,\n trackCalculationChange: tracking.ecommerce.recipes.calculationChange,\n trackPortionChange: tracking.ecommerce.recipes.portionChange,\n trackLinkClick: tracking.ecommerce.recipes.linkClick,\n trackSubstituteProduct: tracking.ecommerce.recipes.substituteProduct,\n trackAddToCart,\n };\n};\n\nconst BuyableRecipeModalBody: React.FC<React.PropsWithChildren<BuyableRecipeModalProps>> = (\n props,\n) => {\n const recipeId = props.recipeId.toString();\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const getRecipeDispatcher = useAsyncDispatcher(recipeFlow.getRecipeById, {\n initialLoadingState: true,\n keepPreviousResult: true,\n });\n\n const { currentPriceType } = useCurrentPriceType();\n\n const { close, tabToDisplay } = props;\n\n const { execute: getRecipe, result: getRecipeResult, isLoading, error } = getRecipeDispatcher;\n\n useEffect(() => {\n if (error) {\n close();\n }\n }, [close, error]);\n\n useGroupError(ErrorGroup.Global, error);\n\n const {\n trackModalPopup,\n trackBuyRecipe,\n trackCalculationChange,\n trackPortionChange,\n trackLinkClick,\n trackSubstituteProduct,\n trackAddToCart,\n } = useBuyableRecipeModalTracking();\n\n const {\n updateItemQuantity,\n updateSubstituteProduct,\n updatePortions,\n updateCalculation,\n removeItem,\n calculateCart,\n recipeCart,\n recipeCartProducts,\n getProductExceptions,\n isLoading: isLoadingRecipeCart,\n } = useRecipeCart(!props.readonly);\n\n const handleSubstituteChangeClick = (item: RecipeItemState, product: ApiProduct) => {\n updateSubstituteProduct(item, product.identifier);\n trackSubstituteProduct(item.name, recipeId, product.identifier, product.name);\n };\n\n const {\n onSubsituteChangeClick,\n onSubstituteTriggerClick,\n expandedSubstituteIds,\n isLoadingSubstitutes,\n substitutes,\n } = useSubstitutes(handleSubstituteChangeClick, recipeCart?.items);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n getRecipe(recipeId);\n if (!props.readonly) {\n calculateCart({\n calculation: 'waste',\n prioritization: null,\n recipes: [{ recipeId, portions: props.portions }],\n });\n }\n }, [calculateCart, getRecipe, props.portions, props.readonly, recipeId]);\n\n useEffect(() => {\n if (getRecipeResult) {\n trackModalPopup(getRecipeResult, getRecipeResult?.yieldValue);\n }\n }, [getRecipeResult, trackModalPopup]);\n\n const buyRecipeDispatcher = useAsyncDispatcher((request: ApiAddMultipleRecipesRequest) =>\n dispatch(cartThunks.buyMultipleRecipes(request)),\n );\n\n const {\n execute: buyRecipe,\n isLoading: buyRecipeLoading,\n result: buyRecipeResult,\n } = buyRecipeDispatcher;\n useRequestEffects(\n buyRecipeDispatcher,\n {\n onSuccess: () => {\n const itemsToTrack = recipeCart?.items?.filter(\n (item) => !!item.quantity && item.quantity > 0 && item.purchasable,\n );\n if (itemsToTrack?.length) {\n trackAddToCart(\n itemsToTrack.map((item, index) => ({\n quantity: item.quantity!,\n productId: item.id,\n index,\n })),\n currentProductionUnit,\n {\n list: props.analyticsListName,\n listPosition: 0,\n recipe_list_id: recipeCart?.recipes\n ?.map((recipe) => recipe.code)\n .join('|'),\n recipe_list_name: recipeCart?.recipes\n ?.map((recipe) => recipe.title)\n .join('|'),\n recipe_origin: 'recipes',\n },\n );\n }\n },\n },\n ErrorGroup.Modal,\n );\n\n useEffect(() => {\n if (buyRecipeResult) {\n close();\n }\n }, [close, buyRecipeResult]);\n\n const recipePortions = recipeCart?.recipes.find((recipe) => recipe.code === recipeId)?.portions;\n\n const handlePortionChange = (portionQuantity: number) => {\n if (getRecipeResult) {\n trackPortionChange(getRecipeResult.name, recipeId, recipePortions, portionQuantity);\n }\n updatePortions(recipeId, portionQuantity);\n };\n\n const handleCalculationTypeChange = (\n calculationType: RecipeCalculationType,\n prioritization: RecipePrioritizationType | null,\n ) => {\n if (getRecipeResult) {\n trackCalculationChange(\n getRecipeResult.name,\n recipeId,\n calculationType,\n prioritization,\n recipePortions,\n );\n }\n\n updateCalculation(calculationType, prioritization);\n };\n\n const handleRecipeLinkClick = () => {\n if (getRecipeResult) {\n trackLinkClick(getRecipeResult.name, recipeId, recipePortions);\n }\n };\n\n const handleBuy = () => {\n const productExceptions = getProductExceptions();\n if (getRecipeResult) {\n trackBuyRecipe(getRecipeResult.name, recipeId, recipePortions);\n }\n\n if (recipeCart) {\n buyRecipe({\n calculation: recipeCart.calculation,\n prioritization: recipeCart.prioritization,\n recipes: recipeCart.recipes.map((x) => ({\n recipeId: x.code,\n portions: x.portions,\n group: getRecipeResult?.isFoodBox ? 'foodbox' : 'recipe',\n })),\n products: productExceptions?.map((x) => ({\n productId: x.id,\n qty: x.quantity,\n substituteId: x.substituteIdentifier,\n })),\n });\n }\n };\n\n return (\n <RecipeModalBody\n recipeData={getRecipeResult}\n modalTabToDisplay={tabToDisplay}\n handlePortionChange={handlePortionChange}\n handleCalculationTypeChange={handleCalculationTypeChange}\n handleBuy={handleBuy}\n close={close}\n priceType={currentPriceType}\n isLoading={isLoading || isLoadingRecipeCart || isLoadingSubstitutes || buyRecipeLoading}\n renderCartItem={(item) => {\n return (\n <RecipeProductListingItem\n key={item.id}\n recipeProduct={item}\n priceType={currentPriceType}\n product={recipeCartProducts?.find(\n (product) => product.identifier === item.id,\n )}\n recipeProductSubstitutes={\n substitutes[item.substituteIdentifier]?.substituteProducts\n }\n buyable={item.purchasable}\n isSubstituteActive={expandedSubstituteIds.includes(\n item.substituteIdentifier,\n )}\n handleSubstituteChange={(product: ApiProduct) => {\n onSubsituteChangeClick(item, product);\n }}\n analyticsOptions={{ list: 'produktersättare - varukorg' }}\n productSubstitutesBreakpoints={recipeModalProductSubstitutesBreakpoints}\n >\n {item.purchasable ? (\n <PurchasableItemBody\n item={item}\n sectionType=\"recipe\"\n hasActiveSubstitutes={expandedSubstituteIds.includes(\n item.substituteIdentifier,\n )}\n handleQuantityChange={updateItemQuantity}\n handleSubsituteTriggerClick={() =>\n onSubstituteTriggerClick(item.substituteIdentifier)\n }\n />\n ) : (\n <MissingItemBody\n item={item}\n recipeSectionType=\"recipe\"\n hasActiveSubstitutes={expandedSubstituteIds.includes(\n item.substituteIdentifier,\n )}\n handleSubsituteTriggerClick={() =>\n onSubstituteTriggerClick(item.substituteIdentifier)\n }\n handleRemoveItem={removeItem}\n />\n )}\n </RecipeProductListingItem>\n );\n }}\n cart={recipeCart}\n handleLinkClick={handleRecipeLinkClick}\n readonly={props.readonly}\n />\n );\n};\n\nexport default BuyableRecipeModalBody;\n","import { Button, Icon } from '@coop/components';\nimport { Bag1Icon } from '@coop/icons';\nimport type { FC } from 'react';\n\nimport cartRecipeSelectors from '../../../../cart/selectors/cartRecipeSelectors';\nimport { useAsyncDispatcher } from '../../../hooks/useAsyncDispatcher';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/useThunkDispatch';\nimport { cartThunks } from '../../../thunks/cartThunks';\nimport EmphasizedButton from '../EmphasizedButton/EmphasizedButton';\nimport { useRecipeTracking } from './BuyableRecipeButton.hooks';\nimport type { RecipeButtonType } from './BuyableRecipeButton.types';\n\ninterface BuyableRecipeButtonProps {\n recipeId: string;\n recipeName: string;\n onBuyClick?: (e: React.SyntheticEvent) => void;\n onRemoveClick?: (e: React.SyntheticEvent) => void;\n buyText?: string;\n removeText?: string;\n buttonType: RecipeButtonType;\n buttonFullWidth: boolean;\n}\n\nconst BuyableRecipeButton: FC<React.PropsWithChildren<BuyableRecipeButtonProps>> = ({\n recipeId,\n recipeName,\n onBuyClick,\n onRemoveClick,\n buyText,\n removeText,\n buttonType,\n buttonFullWidth,\n}) => {\n const cartRecipe = useAppSelector((state) =>\n cartRecipeSelectors.nonEmpty.selectById(state, recipeId),\n );\n\n const dispatch = useAppDispatch();\n\n const removeRecipeDispatcher = useAsyncDispatcher(() =>\n dispatch(cartThunks.removeRecipe(recipeId)),\n );\n useRecipeTracking(removeRecipeDispatcher, cartRecipe);\n\n const handleRecipeRemove = (e: React.SyntheticEvent) => {\n removeRecipeDispatcher.execute();\n onRemoveClick?.(e);\n };\n\n const onRecipeBuyClick = (e: React.SyntheticEvent) => {\n onBuyClick?.(e);\n };\n\n const hasRecipeInCart = !!cartRecipe;\n\n const { isLoading } = removeRecipeDispatcher;\n\n const buttonRemoveText = removeText || 'Ta bort varor';\n const buttonBuyText = buyText || 'Se & köp';\n\n if (buttonType === 'emphasized') {\n return hasRecipeInCart ? (\n <EmphasizedButton\n onClick={handleRecipeRemove}\n theme=\"primary\"\n isLoading={isLoading}\n rightSlot={<Icon icon={Bag1Icon} width={20} height={20} />}\n fullWidth={buttonFullWidth}\n aria-label={`${buttonRemoveText} - ${recipeName}`}\n >\n {buttonRemoveText}\n </EmphasizedButton>\n ) : (\n <EmphasizedButton\n onClick={onRecipeBuyClick}\n theme=\"primary\"\n rightSlot={<Icon icon={Bag1Icon} width={20} height={20} />}\n fullWidth={buttonFullWidth}\n aria-label={`Anpassa varor & köp - ${recipeName}`}\n >\n Anpassa varor & köp\n </EmphasizedButton>\n );\n }\n\n if (buttonType === 'new') {\n return hasRecipeInCart ? (\n <Button\n theme=\"primary\"\n size={40}\n isLoading={isLoading}\n rightSlot={<Icon icon={Bag1Icon} width={20} height={20} />}\n onClick={handleRecipeRemove}\n fullWidth={buttonFullWidth}\n aria-label={`${buttonRemoveText} - ${recipeName}`}\n >\n {buttonRemoveText}\n </Button>\n ) : (\n <Button\n theme=\"primary\"\n size={40}\n isLoading={isLoading}\n rightSlot={<Icon icon={Bag1Icon} width={20} height={20} />}\n onClick={onRecipeBuyClick}\n fullWidth={buttonFullWidth}\n aria-label={`${buttonBuyText} - ${recipeName}`}\n >\n {buttonBuyText}\n </Button>\n );\n }\n\n return null;\n};\n\nexport default BuyableRecipeButton;\n","import { useEffect, useRef } from 'react';\n\nimport cartItemsSelectors from '../../../../cart/selectors/cartItemsSelectors';\nimport type { AsyncDispatcher } from '../../../hooks/useAsyncDispatcher';\nimport { useAppSelector } from '../../../hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../selectors/storeSelectors';\nimport type { CartRecipe } from '../../../store/structureDefinitions/cartState';\nimport { ga4CartTracking } from '../../../tracking/ga4/cart';\n\nexport const useRecipeTracking = (\n removeRecipeDispatcher: AsyncDispatcher<void, []>,\n cartRecipe: CartRecipe | undefined,\n) => {\n const currentCartItems = useAppSelector(cartItemsSelectors.selectAllCartItems);\n const previousCartItems = useRef(currentCartItems);\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n useEffect(() => {\n if (cartRecipe) {\n previousCartItems.current = currentCartItems;\n }\n }, [currentCartItems, cartRecipe]);\n\n const { status, reset } = removeRecipeDispatcher;\n useEffect(() => {\n if (status === 'success') {\n ga4CartTracking.changeCartItems(\n previousCartItems.current.map((item) => ({\n productId: item.cartItemData.productId,\n variantId: item.cartItemData.variantId,\n quantity: item.cartItemData.quantity,\n })),\n currentCartItems.map((item) => ({\n productId: item.cartItemData.productId,\n variantId: item.cartItemData.variantId,\n quantity: item.cartItemData.quantity,\n })),\n currentProductionUnit,\n {\n list: 'BuyRecipeButton',\n position: 0,\n },\n );\n\n reset();\n }\n }, [status, currentCartItems, currentProductionUnit, reset]);\n};\n","import type { FC } from 'react';\n\nimport { RecipeModalTab } from '../../../../recipe/models';\nimport { Modal } from '../../atoms/Modal';\nimport type { RecipeButtonType } from '../BuyableRecipeButton';\nimport RecipeButton from '../BuyableRecipeButton';\nimport BuyableRecipeModalBody from './BuyableRecipeModalBody';\n\ninterface RecipeModalButtonProps {\n recipeId: string;\n recipeName: string;\n defaultPortions: number;\n onBuyClick?: (e: React.SyntheticEvent) => void;\n onRemoveClick?: (e: React.SyntheticEvent) => void;\n buyText?: string;\n removeText?: string;\n buttonType: RecipeButtonType;\n buttonFullWidth: boolean;\n analyticsListName: string;\n isOpen: boolean;\n close: () => void;\n}\n\nconst RecipeButtonWithModal: FC<React.PropsWithChildren<RecipeModalButtonProps>> = ({\n recipeId,\n recipeName,\n defaultPortions: portions,\n onBuyClick,\n onRemoveClick,\n buyText,\n removeText,\n buttonType,\n analyticsListName,\n isOpen,\n close,\n buttonFullWidth,\n}) => {\n return (\n <>\n <RecipeButton\n recipeId={recipeId}\n recipeName={recipeName}\n onRemoveClick={onRemoveClick}\n onBuyClick={onBuyClick}\n buyText={buyText}\n removeText={removeText}\n buttonType={buttonType}\n buttonFullWidth={buttonFullWidth}\n />\n <div onClick={(e) => e.stopPropagation()}>\n <Modal isOpen={isOpen} close={close} additionalClasses=\"RecipeModal u-posRelative\">\n <BuyableRecipeModalBody\n recipeId={recipeId}\n portions={portions}\n tabToDisplay={RecipeModalTab.Products}\n close={close}\n analyticsListName={analyticsListName}\n />\n </Modal>\n </div>\n </>\n );\n};\n\nexport default RecipeButtonWithModal;\n","import { useMemo } from 'react';\nimport { v4 } from 'uuid';\n\nimport { useCncFlyInState } from '../../../hooks/useCncFlyInState';\nimport useModal from '../../../hooks/useModal';\nimport { useAppSelector } from '../../../hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../selectors/storeSelectors';\nimport { RecipeModalType } from '../../../store/structureDefinitions/modalState';\nimport tracking from '../../../tracking/tracking';\n\nexport const useRecipeModal = (recipeId: string, recipeName: string) => {\n const guid = useMemo(() => v4(), []);\n const modalActions = useModal(RecipeModalType.RecipeModal, undefined, `${recipeId}_${guid}`);\n\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n\n const { initCnc } = useCncFlyInState();\n\n const tryOpen = () => {\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Öppna receptmodal',\n recipeName,\n recipeName,\n );\n\n if (!hasActiveStoreSelection) {\n initCnc();\n } else {\n modalActions.open();\n }\n };\n\n return { ...modalActions, tryOpen };\n};\n","import type { FC } from 'react';\n\nimport type { RecipeButtonType } from '../BuyableRecipeButton';\nimport RecipeButtonWithModal from './RecipeButtonWithModal';\nimport { useRecipeModal } from './RecipeModalTrigger.hooks';\n\ninterface RecipeModalTriggerProps {\n recipeId: string;\n recipeName: string;\n portions: number;\n onBuyClick?: (e: React.SyntheticEvent) => void;\n onRemoveClick?: (e: React.SyntheticEvent) => void;\n buyText?: string;\n removeText?: string;\n buttonType: RecipeButtonType;\n buttonFullWidth: boolean;\n analyticsListName: string;\n}\n\nconst RecipeModalTrigger: FC<React.PropsWithChildren<RecipeModalTriggerProps>> = ({\n recipeId,\n recipeName,\n portions,\n onBuyClick,\n onRemoveClick,\n buyText,\n removeText,\n buttonType,\n analyticsListName,\n buttonFullWidth,\n}) => {\n const { close, isOpen, tryOpen } = useRecipeModal(recipeId, recipeName);\n\n const onRecipeBuyClick = (e: React.SyntheticEvent) => {\n tryOpen();\n\n onBuyClick?.(e);\n };\n\n return (\n <RecipeButtonWithModal\n recipeId={recipeId}\n recipeName={recipeName}\n defaultPortions={portions}\n analyticsListName={analyticsListName}\n isOpen={isOpen}\n close={close}\n onBuyClick={onRecipeBuyClick}\n onRemoveClick={onRemoveClick}\n buyText={buyText}\n removeText={removeText}\n buttonType={buttonType}\n buttonFullWidth={buttonFullWidth}\n />\n );\n};\n\nexport default RecipeModalTrigger;\n","import { useElementEvent } from '@coop/hooks';\nimport { useCallback, useLayoutEffect, useRef } from 'react';\nimport _ from 'underscore';\n\nexport const useTabSwitcher = () => {\n const indicatorRef = useRef<HTMLDivElement>(null);\n\n const tabScrollableRef = useRef<HTMLDivElement>(null);\n const activeItemRef = useRef<HTMLButtonElement>(null);\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const renderIndicator = useCallback(() => {\n if (activeItemRef.current && indicatorRef.current) {\n const linkWidth = activeItemRef.current.offsetWidth;\n\n const linkPos = activeItemRef.current.offsetLeft;\n\n indicatorRef.current.style.width = `${linkWidth}px`;\n indicatorRef.current.style.left = `${linkPos}px`;\n }\n }, []);\n\n const onLeftArrowClick = (e: React.MouseEvent | React.FocusEvent) => {\n e.preventDefault();\n if (tabScrollableRef.current) {\n tabScrollableRef.current.scrollBy({\n left:\n tabScrollableRef.current.scrollLeft -\n tabScrollableRef.current.scrollWidth +\n 100,\n behavior: 'smooth',\n });\n }\n };\n\n const onRightArrowClick = (e: React.MouseEvent | React.FocusEvent) => {\n e.preventDefault();\n if (tabScrollableRef.current) {\n tabScrollableRef.current.scrollBy({\n left:\n tabScrollableRef.current.scrollLeft +\n tabScrollableRef.current.clientWidth -\n 100,\n behavior: 'smooth',\n });\n }\n };\n\n const arrowLeftRef = useRef<HTMLDivElement>(null);\n const arrowRightRef = useRef<HTMLDivElement>(null);\n\n const toggleNavigationButtons = useCallback(() => {\n const tabScrollable = tabScrollableRef.current;\n if (!tabScrollable) {\n return null;\n }\n const tabScrollableWidth = tabScrollable.clientWidth;\n\n if (!tabListRef.current) {\n return null;\n }\n\n const tabListWidth = tabListRef.current.clientWidth;\n const { scrollLeft } = tabScrollable;\n const leftButton = arrowLeftRef.current;\n const rightButton = arrowRightRef.current;\n\n if (tabListWidth > tabScrollableWidth) {\n if (leftButton) {\n if (scrollLeft > 0) {\n // leftButton.fadeIn(200);\n // leftButton.animate({ display: 'block' }, 200);\n leftButton.style.display = 'block'; // ({ display: 'block' }, 200);\n } else {\n // leftButton.fadeOut(200);\n // leftButton.animate({ display: 'none' }, 200);\n leftButton.style.display = 'none';\n }\n }\n\n if (rightButton) {\n if (scrollLeft + tabScrollableWidth < tabListWidth - 2) {\n // rightButton.fadeIn(200);\n // rightButton.animate({ display: 'block' }, 200);\n rightButton.style.display = 'block';\n } else {\n // rightButton.fadeOut(200);\n // rightButton.animate({ display: 'none' }, 200);\n rightButton.style.display = 'none';\n }\n }\n } else {\n // leftButton.fadeOut(200);\n // rightButton.fadeOut(200);\n // leftButton.animate({ display: 'none' }, 200);\n if (leftButton) {\n leftButton.style.display = 'none';\n }\n\n // rightButton.animate({ display: 'none' }, 200);\n if (rightButton) {\n rightButton.style.display = 'none';\n }\n }\n }, [tabListRef, tabScrollableRef]);\n\n const centerSelected = useCallback(() => {\n const tabScrollable = tabScrollableRef.current;\n const tabActive = activeItemRef.current;\n if (!tabScrollable || !tabActive) {\n return null;\n }\n const tabActiveWidth = tabActive.clientWidth;\n const lastKnownScrollPosition = tabScrollable.scrollLeft;\n\n const tabActivePosition = tabActive.getBoundingClientRect().left + tabActiveWidth;\n\n tabScrollable.scroll({ left: lastKnownScrollPosition, behavior: 'smooth' });\n tabScrollable.scrollBy({\n left: tabActivePosition - window.innerWidth / 2 - tabActiveWidth / 2,\n behavior: 'smooth',\n });\n }, [activeItemRef, tabScrollableRef]);\n\n const onResize = useCallback(\n () =>\n _.debounce(() => {\n toggleNavigationButtons();\n centerSelected();\n renderIndicator();\n }, 200),\n [centerSelected, renderIndicator, toggleNavigationButtons],\n );\n\n useLayoutEffect(() => {\n renderIndicator();\n centerSelected();\n toggleNavigationButtons();\n }, [centerSelected, renderIndicator, toggleNavigationButtons]);\n\n const onItemClick = () => {\n renderIndicator();\n centerSelected();\n toggleNavigationButtons();\n };\n\n useElementEvent(window, 'resize', onResize, true);\n useElementEvent(tabScrollableRef.current, 'scroll', toggleNavigationButtons, true);\n\n return {\n onItemClick,\n indicatorRef,\n tabScrollableRef,\n activeItemRef,\n tabListRef,\n onLeftArrowClick,\n onRightArrowClick,\n arrowLeftRef,\n arrowRightRef,\n };\n};\n","/* eslint-disable react/no-danger */\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useLayoutEffect, useRef } from 'react';\n\nimport { useTabSwitcher } from './TabSwitcher.hooks';\nimport type { TabItem, TabItemRenderer } from './TabSwitcher.types';\n\ntype AlignType = 'left' | 'center' | 'right';\n\nexport interface TabSwitcherProps<TData, TId extends string> {\n items: TabItem<TData, TId>[];\n align?: AlignType;\n wrapperClasses?: string;\n containerClasses?: string;\n itemClasses?: (isActive: boolean) => string;\n listClasses?: string;\n renderNextToTabs?: () => React.ReactNode;\n panelClasses?: string;\n handleClick: (tab: TabItem<TData, TId>) => void;\n renderTabItem?: TabItemRenderer<TData, TId>;\n activeTabId: TId;\n forcePanelRerenderOnTabChange?: boolean;\n panelSlot?: React.ReactNode;\n disableTabAnimation?: boolean;\n hidePanelsWithCss?: boolean /** Use when SEO is important - this will render all content up front and hide with css, making it crawlable */;\n noTabIndicator?: boolean;\n}\n\n/**\n * The TabSwitcher is always scrollable and animated\n * */\nconst TabSwitcher = <TData, TId extends string>(props: TabSwitcherProps<TData, TId>) => {\n const ref = useRef<HTMLDivElement>(null);\n const {\n indicatorRef,\n tabScrollableRef,\n activeItemRef: currentLinkRef,\n tabListRef,\n onLeftArrowClick,\n onRightArrowClick,\n arrowLeftRef,\n arrowRightRef,\n onItemClick,\n } = useTabSwitcher();\n\n useLayoutEffect(() => {\n onItemClick();\n }, [props.activeTabId, onItemClick]);\n\n const handleNavItemClick = (item: TabItem<TData, TId>) => {\n props.handleClick?.(item);\n };\n\n const activeTab = props.items.find((item) => item.id === props.activeTabId);\n\n const getAlignmentClass = (align?: AlignType) => {\n if (align === 'left') return 'u-textLeft';\n if (align === 'right') return 'u-textRight';\n return 'u-textCenter';\n };\n\n const renderDefaultTab: TabItemRenderer<TData, TId> = (\n { tab, handleClick: handleTabClick, isActive },\n _ref,\n ) => {\n const cssClasses = classNames(\n 'Tab-item',\n isActive && 'is-active',\n props.itemClasses && props.itemClasses(isActive),\n );\n\n return (\n <button\n ref={_ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n className={cssClasses}\n onClick={() => {\n handleTabClick(tab);\n }}\n aria-label={tab.ariaLabel}\n dangerouslySetInnerHTML={{ __html: tab.name }}\n />\n );\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n 'Tab',\n !props.disableTabAnimation && 'Tab--animated',\n 'Tab--scrollable',\n props.wrapperClasses,\n )}\n >\n <div\n ref={tabScrollableRef}\n className={classNames(\n 'Tab-container',\n getAlignmentClass(props.align),\n props.containerClasses,\n )}\n >\n <div ref={tabListRef} className={classNames('Tab-list', props.listClasses)}>\n {props.items.map((item) => {\n const isActive = props.activeTabId === item.id;\n return (\n <TabNavigationItem\n ref={isActive ? currentLinkRef : null}\n key={item.id}\n tabItem={item}\n isActive={isActive}\n renderTabItem={\n props.renderTabItem ? props.renderTabItem : renderDefaultTab\n }\n handleNavItemClick={() => handleNavItemClick(item)}\n additinalClasses={props.itemClasses}\n />\n );\n })}\n {props.noTabIndicator || <div ref={indicatorRef} className=\"Tab-indicator\" />}\n </div>\n {props.renderNextToTabs && props.renderNextToTabs()}\n </div>\n {props.hidePanelsWithCss\n ? props.items.map((item) => {\n const isActive = props.activeTabId === item.id;\n return (\n <TabPanel\n key={item.id}\n isActive={isActive}\n panelClasses={props.panelClasses}\n >\n {item.component}\n </TabPanel>\n );\n })\n : props.panelSlot || (\n <TabPanel\n key={props.forcePanelRerenderOnTabChange ? props.activeTabId : undefined}\n isActive={props.activeTabId === activeTab?.id}\n panelClasses={props.panelClasses}\n >\n {activeTab?.component}\n </TabPanel>\n )}\n <div\n ref={arrowLeftRef}\n className=\"Tab-arrow Tab-arrow--left\"\n style={{ display: 'none' }}\n onClick={onLeftArrowClick}\n onMouseOver={onLeftArrowClick}\n onFocus={onLeftArrowClick}\n />\n <div\n ref={arrowRightRef}\n className=\"Tab-arrow Tab-arrow--right\"\n style={{ display: 'none' }}\n onClick={onRightArrowClick}\n onMouseOver={onRightArrowClick}\n onFocus={onRightArrowClick}\n />\n </div>\n );\n};\n\nconst TabNavigationItemInner = <TData, TId>(\n props: {\n isActive: boolean;\n tabItem: TabItem<TData, TId>;\n handleNavItemClick: (tab: TabItem<TData, TId>) => void;\n additinalClasses?: (isActive: boolean) => string;\n renderTabItem: TabItemRenderer<TData, TId>;\n },\n ref: React.Ref<HTMLButtonElement>,\n) => {\n return (\n <>\n {props.renderTabItem(\n {\n tab: props.tabItem,\n handleClick: props.handleNavItemClick,\n isActive: props.isActive,\n },\n ref,\n )}\n </>\n );\n};\n\nconst TabNavigationItem = React.forwardRef(TabNavigationItemInner);\n\ninterface TabPanelProps {\n children: React.ReactNode;\n isActive: boolean;\n panelClasses?: string;\n}\n\nconst TabPanel = ({ children, isActive, panelClasses }: TabPanelProps) => {\n const cssClasses = classNames('Tab-panel ', isActive ? 'is-active' : null, panelClasses);\n\n return <div className={cssClasses}>{children}</div>;\n};\n\nexport default TabSwitcher;\n","import { useEffect, useState } from 'react';\n\nimport type { TabSwitcherProps } from './TabSwitcher';\nimport TabSwitcher from './TabSwitcher';\n\ntype StatefulTabSwitcherProps<T, TId extends string> = {\n initialActiveId?: TId;\n} & Omit<TabSwitcherProps<T, TId>, 'activeTabId' | 'setActiveTabId' | 'handleClick'> &\n Partial<Pick<TabSwitcherProps<T, TId>, 'handleClick'>>;\n\nconst StatefulTabSwitcher = <T, TId extends string>(props: StatefulTabSwitcherProps<T, TId>) => {\n const [activeTabId, setActiveTabId] = useState(props.initialActiveId ?? props.items[0].id);\n\n useEffect(() => {\n if (props.initialActiveId) {\n setActiveTabId(props.initialActiveId);\n }\n }, [props.initialActiveId]);\n\n const handleItemClick: (typeof props)['handleClick'] = (tab) => {\n setActiveTabId(tab.id);\n props.handleClick?.(tab);\n };\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <TabSwitcher {...props} activeTabId={activeTabId} handleClick={handleItemClick} />;\n};\n\nexport default StatefulTabSwitcher;\n","import classnames from 'classnames';\n\nimport styles from './BaseImageTextBlock.module.less';\n\ninterface BaseImageTextBlockProps {\n disableMinimumHeight: boolean;\n className?: string;\n disableRoundCorners?: boolean;\n}\n\nconst BaseImageTextBlock = (props: React.PropsWithChildren<BaseImageTextBlockProps>) => {\n return (\n <div\n className={classnames(\n props.className,\n styles.Container,\n !props.disableRoundCorners && styles.RoundedCorners,\n props.disableMinimumHeight && styles.NoMinHeight,\n )}\n >\n {props.children}\n </div>\n );\n};\n\nexport default BaseImageTextBlock;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"hrfQfmUQ\",\"MinHeight\":\"CY6tbW28\",\"NoMinHeight\":\"wKwuTcpr\",\"RoundedCorners\":\"PSiFG8T5\"};","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"Ypd0HvZh\",\"LinkWrapper\":\"UB_NKnuP\",\"ButtonWrapper\":\"clSqay92\",\"Content\":\"krz_Qx3J\",\"Content--horizontalCenter\":\"qCMRntMQ\",\"Content--verticalCenter\":\"QpI1gwuM\",\"Content--noVerticalCenter\":\"aW1pr0rh\",\"Content--contentLessPadding\":\"hIdzuq5u\",\"Content--contentLessHorizontalPadding\":\"MQ5LaEBg\",\"Image\":\"ZT2h_6Ah\",\"ImageContainer\":\"rZSamSNn\",\"ImageContainer--absolute\":\"FThob5tX\",\"ImageContainer--relative\":\"rX4dLvHh\",\"Image--noExplicitHeight\":\"Sj8KwF9F\",\"Heading\":\"dZ6aR3XU\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport type { Button } from '@coop/components';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\n\nimport usePromotionTracking from '../../../tracking/hooks/usePromotionTracking';\nimport type { IGaPromoData } from '../../../tracking/models/IGaPromoData';\nimport RawHtml from '../../atoms/RawHtml';\nimport RawPicture from '../../atoms/RawPicture';\nimport type Heading from '../../Heading';\nimport styles from './ImageTextPropertyBlock.module.scss';\n\nexport interface ImageTextPropertyBlockProps extends IGaPromoData {\n imageUrl?: string;\n imageHeight?: number;\n srcSet?: { srcSet: string; height?: number; minWidth: number }[];\n imageAltText?: string;\n\n centerBlockVertically: boolean;\n centerBlockHorizontally: boolean;\n contentLessPadding: boolean;\n contentLessHorizontalPadding: boolean;\n backgroundColor?:\n | 'u-bgWhite'\n | 'u-bgGreenDark'\n | 'u-bgGreen'\n | 'u-bgGreenLight2'\n | 'u-bgGrayLight';\n linkUrl?: string;\n target: '_self' | '_blank';\n isClickable: boolean;\n body?: string;\n textColor?: string;\n lazy?: boolean;\n ariaLabel: string;\n buttonProps?: React.ComponentPropsWithoutRef<typeof Button>;\n renderButton?: (props: React.ComponentPropsWithoutRef<typeof Button>) => React.ReactNode;\n secondaryButtonProps?: React.ComponentPropsWithoutRef<typeof Button>;\n renderSecondaryButton?: (\n props: React.ComponentPropsWithoutRef<typeof Button>,\n ) => React.ReactNode;\n headingProps?: React.ComponentPropsWithoutRef<typeof Heading>;\n renderHeading?: (props: React.ComponentPropsWithoutRef<typeof Heading>) => React.ReactNode;\n}\n\nconst ImageTextPropertyBlock = (props: ImageTextPropertyBlockProps) => {\n const { ref: trackingRef, click: trackClick } = usePromotionTracking({\n gaPromoCreative: props.gaPromoCreative,\n gaPromoId: props.gaPromoId,\n gaPromoName: props.gaPromoName,\n gaPromoPosition: props.gaPromoPosition,\n });\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n trackingRef(node);\n },\n [trackingRef],\n );\n\n const anchorRel = props.target?.includes('blank') ? 'noopener noreferrer' : undefined;\n\n // If whole banner is clickable, render is as anchor and dont render the button inside to not have nested interactive elements\n if (props.isClickable) {\n return (\n <a\n ref={ref}\n className={classNames(styles.Container, styles.LinkWrapper, props.backgroundColor)}\n href={props.linkUrl}\n target={props.target}\n rel={anchorRel}\n onClick={trackClick}\n aria-label={props.ariaLabel}\n >\n <Content {...props} />\n </a>\n );\n }\n return (\n <div ref={ref} className={classNames(styles.Container, props.backgroundColor)}>\n <Content\n {...props}\n belowTextSlot={\n !!props.buttonProps &&\n !!props.renderButton && (\n <BottomSlot\n onClick={trackClick}\n centerBlockHorizontally={props.centerBlockHorizontally}\n centerBlockVertically={props.centerBlockVertically}\n buttonProps={props.buttonProps}\n renderButton={props.renderButton}\n secondaryButtonProps={props.secondaryButtonProps}\n renderSecondaryButton={props.renderSecondaryButton}\n />\n )\n }\n />\n </div>\n );\n};\n\nconst Content = (props: ImageTextPropertyBlockProps & { belowTextSlot?: React.ReactNode }) => {\n const bannerPositionClassNames = classNames(\n styles.Content,\n props.centerBlockHorizontally && styles['Content--horizontalCenter'],\n props.centerBlockVertically\n ? styles['Content--verticalCenter']\n : styles['Content--noVerticalCenter'],\n props.contentLessPadding && styles['Content--contentLessPadding'],\n props.contentLessHorizontalPadding && styles['Content--contentLessHorizontalPadding'],\n );\n\n const hasContent =\n !!props.body ||\n React.isValidElement(props.belowTextSlot) ||\n (!!props.headingProps &&\n !!props.renderHeading &&\n React.isValidElement(props.renderHeading(props.headingProps)));\n\n return (\n <>\n {(props.imageUrl || !!props.srcSet?.length) && (\n <RawPicture\n altText={props.imageAltText}\n srcSet={props.srcSet}\n src={props.imageUrl}\n height={props.imageHeight}\n imgClassName={classNames(\n styles.Image,\n !props.imageHeight && styles['Image--noExplicitHeight'],\n )}\n className={classNames(\n styles.ImageContainer,\n hasContent && styles['ImageContainer--absolute'], // if there is any content, it should dictate the height of the block, so make image absolute to be positioned behind the content\n !hasContent && styles['ImageContainer--relative'], // no content - image is dictating the height of the block\n )}\n lazy={props.lazy}\n />\n )}\n {hasContent && (\n <div className={bannerPositionClassNames}>\n <div className=\"u-sizeFull\">\n {!!props.headingProps &&\n !!props.renderHeading &&\n props.renderHeading({\n ...props.headingProps,\n fontFamilySecondary: true,\n alignment: props.centerBlockHorizontally\n ? 'center'\n : props.headingProps.alignment,\n className: classNames(\n props.headingProps.className,\n styles.Heading,\n 'u-marginBsm',\n ),\n })}\n {props.body && (\n <div className={classNames('Editorial', props.textColor)}>\n <RawHtml html={props.body} />\n </div>\n )}\n </div>\n\n {props.belowTextSlot}\n </div>\n )}\n </>\n );\n};\n\nconst BottomSlot = (props: {\n centerBlockHorizontally: boolean;\n centerBlockVertically: boolean;\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n buttonProps: React.ComponentPropsWithoutRef<typeof Button>;\n renderButton: (props: React.ComponentPropsWithoutRef<typeof Button>) => React.ReactNode;\n secondaryButtonProps?: React.ComponentPropsWithoutRef<typeof Button>;\n renderSecondaryButton?: (\n props: React.ComponentPropsWithoutRef<typeof Button>,\n ) => React.ReactNode;\n}) => {\n const bothButtonsExist = props.buttonProps && props.secondaryButtonProps;\n\n const wrapperClassNames = classNames(\n styles.ButtonWrapper,\n bothButtonsExist && props.centerBlockHorizontally && 'u-flexJustifyCenter',\n );\n\n return (\n <div className={wrapperClassNames}>\n {props.renderButton({\n ...props.buttonProps,\n style:\n bothButtonsExist && props.centerBlockHorizontally\n ? {\n ...props.buttonProps.style,\n // when two buttons exist and are centered then they will be aligned not by themselves, but by the parent component\n margin: 0,\n }\n : props.buttonProps.style,\n onClick: (e) => {\n props.onClick?.(e);\n props.buttonProps?.onClick?.(e);\n },\n })}\n {/* Secondary is rendered only if primary already exists */}\n {!!props.buttonProps &&\n !!props.renderButton &&\n !!props.secondaryButtonProps &&\n props.renderSecondaryButton?.({\n ...props.secondaryButtonProps,\n style:\n bothButtonsExist && props.centerBlockHorizontally\n ? {\n ...props.secondaryButtonProps.style,\n // when two buttons exist and are centered then they will be aligned not by themselves, but by the parent component\n margin: 0,\n }\n : props.secondaryButtonProps.style,\n onClick: (e) => {\n props.onClick?.(e);\n props.secondaryButtonProps?.onClick?.(e);\n },\n })}\n </div>\n );\n};\n\nexport default ImageTextPropertyBlock;\n","import { Icon } from '@coop/components';\nimport { Info1Icon } from '@coop/icons';\n\nimport styles from './MissingItemBody.module.less';\n\nconst MissingItemInfo = (props: { text: string }) => {\n return (\n <div className={styles.MissingItemInfo}>\n <Icon icon={Info1Icon} width={16} height={16} color=\"red\" />\n <span>{props.text}</span>\n </div>\n );\n};\n\nexport default MissingItemInfo;\n","import { ChipIconButton } from '@coop/components';\nimport { TrashIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\nimport SharedBetweenRecipesTooltip from '../../../../recipe/components/SharedBetweenRecipesTooltip/SharedBetweenRecipesTooltip';\nimport type { RecipeItemState, RecipeSectionType } from '../../../../recipe/models';\nimport SubstituteTrigger from '../../atoms/SubstituteTrigger';\nimport styles from './MissingItemBody.module.less';\nimport MissingItemInfo from './MissingItemInfo';\n\ninterface MissingItemBodyProps {\n item: RecipeItemState;\n recipeSectionType: RecipeSectionType;\n hasActiveSubstitutes: boolean;\n handleSubsituteTriggerClick: (item: RecipeItemState) => void;\n handleRemoveItem: (item: RecipeItemState) => void;\n}\n\nconst MissingItemBody: FC<React.PropsWithChildren<MissingItemBodyProps>> = (props) => {\n return (\n <div className={styles.RecipeItemActionsContainer}>\n <MissingItemInfo text=\"Varan saknas i sortimentet.\" />\n <div className={styles.RecipeItemActions}>\n <div className={styles['RecipeItemActions-info']}>\n {props.item.belongsToRecipes && (\n <SharedBetweenRecipesTooltip\n sectionType={props.recipeSectionType}\n belongsToRecipes={props.item.belongsToRecipes}\n />\n )}\n </div>\n {props.item.substituteProductsAmount > 0 && (\n <SubstituteTrigger\n handleSubsituteTrigger={() => props.handleSubsituteTriggerClick(props.item)}\n theme=\"greenCta\"\n isActive={props.hasActiveSubstitutes}\n />\n )}\n {props.recipeSectionType !== 'common' && (\n <ChipIconButton\n icon={TrashIcon}\n label=\"Ta bort\"\n size={32}\n theme=\"green2\"\n onClick={() => props.handleRemoveItem(props.item)}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default MissingItemBody;\n","import type { FC } from 'react';\n\nimport SharedBetweenRecipesTooltip from '../../../../recipe/components/SharedBetweenRecipesTooltip/SharedBetweenRecipesTooltip';\nimport type { RecipeItemState, RecipeSectionType } from '../../../../recipe/models';\nimport SubstituteTrigger from '../../atoms/SubstituteTrigger';\nimport { QuantityStepper } from '../../QuantityStepper';\n\ninterface PurchasableItemBodyProps {\n item: RecipeItemState;\n sectionType: RecipeSectionType;\n hasActiveSubstitutes: boolean;\n handleQuantityChange: (item: RecipeItemState, newQuantity: number) => void;\n handleSubsituteTriggerClick: (item: RecipeItemState) => void;\n}\n\nconst PurchasableItemBody: FC<React.PropsWithChildren<PurchasableItemBodyProps>> = (props) => {\n return (\n <>\n {props.item.belongsToRecipes && (\n <SharedBetweenRecipesTooltip\n sectionType={props.sectionType}\n belongsToRecipes={props.item.belongsToRecipes}\n />\n )}\n {props.item.substituteProductsAmount > 0 && (\n <SubstituteTrigger\n handleSubsituteTrigger={() => props.handleSubsituteTriggerClick(props.item)}\n theme=\"whiteGreen\"\n isActive={props.hasActiveSubstitutes}\n />\n )}\n {(!!props.item.quantity || props.item.quantity === 0) && ( // 0 is allowed for good to have, !!0 = false, hence additional check for 0\n <QuantityStepper\n quantity={props.item.quantity}\n setQuantity={(newQuantity) => {\n props.handleQuantityChange(props.item, newQuantity);\n }}\n />\n )}\n </>\n );\n};\n\nexport default PurchasableItemBody;\n","import * as React from 'react';\n\nimport {\n getRecommendationUniqueIdentifier,\n isProductRecommendation,\n} from '../../../ecommerce/hooks/useDynamicYieldRecommendations';\nimport { useVerticalProductTeaserContainer } from '../../../ecommerce/hooks/useProductTeaserContainer';\nimport type {\n ProductRecommendationSlot,\n RecipeRecommendationSlot,\n RecommendationItem,\n} from '../../models/product/productDomainModels';\nimport type { ListBlockOptions } from '../ListBlock/ListBlock';\nimport ListBlock from '../ListBlock/ListBlock';\nimport { BuyableProductTeaserSkeleton } from '../molecules/BuyableProductTeaser';\nimport type { ImageTextPropertyBlockProps } from './ImageTextPropertyBlock/ImageTextPropertyBlock';\n\ntype RecommendationBlockProps = Omit<ListBlockOptions, 'lazyLoad'> & {\n headerSlot?: React.ReactNode;\n isLoading: boolean;\n items?: RecommendationItem[];\n renderProduct: (\n product: ProductRecommendationSlot,\n index: number,\n listPosition?: number,\n ) => React.ReactElement;\n\n renderRecipe: (\n recipe: RecipeRecommendationSlot,\n index: number,\n listPosition?: number,\n ) => React.ReactElement;\n banner?: ImageTextPropertyBlockProps;\n 'aria-labelledby'?: string;\n};\n\nconst RecommendationsBlock = React.forwardRef(\n (\n props: RecommendationBlockProps & { as?: React.ComponentProps<typeof ListBlock>['as'] },\n ref: React.ComponentProps<typeof ListBlock>['ref'],\n ) => {\n const { swiperOptions, gridAdditionalClasses, cellsInRow, swiperMainClass } =\n useVerticalProductTeaserContainer(props.useSwiper ? 'list' : 'grid', !!props.banner);\n\n return (\n <ListBlock\n aria-labelledby={props['aria-labelledby']}\n as={props.as}\n ref={ref}\n backgroundColor={props.backgroundColor}\n headerSlot={props.headerSlot}\n isLoading={props.isLoading}\n items={props.items}\n useSwiper={props.useSwiper}\n swiperMainClassName={swiperMainClass}\n swiperOptions={swiperOptions}\n cellsInRow={cellsInRow}\n gridClasses={gridAdditionalClasses}\n analyticsListName={props.analyticsListName}\n horizontalHidden={props.horizontalHidden}\n itemUniqueKey={getRecommendationUniqueIdentifier}\n renderItem={(item, index, listPosition) =>\n isProductRecommendation(item)\n ? props.renderProduct(item, index, listPosition)\n : props.renderRecipe(item, index, listPosition)\n }\n renderSkeleton={() => <BuyableProductTeaserSkeleton />}\n banner={props.banner}\n />\n );\n },\n);\n\nexport default RecommendationsBlock;\n","import BaseImageTextBlock from '../BaseImageTextBlock';\nimport type { ImageTextPropertyBlockProps } from '../ImageTextPropertyBlock/ImageTextPropertyBlock';\nimport ImageTextPropertyBlock from '../ImageTextPropertyBlock/ImageTextPropertyBlock';\n\ninterface SingleImageTextBlockProps extends ImageTextPropertyBlockProps {\n disableMinimumHeight: boolean;\n disableRoundCorners?: boolean;\n}\n\nconst SingleImageTextBlock = (props: SingleImageTextBlockProps) => {\n return (\n <BaseImageTextBlock\n disableMinimumHeight={props.disableMinimumHeight}\n disableRoundCorners={props.disableRoundCorners}\n >\n <ImageTextPropertyBlock\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n </BaseImageTextBlock>\n );\n};\n\nexport default SingleImageTextBlock;\n","import type { Dispatch, FC, Reducer } from 'react';\nimport { createContext, useCallback, useContext, useReducer } from 'react';\n\nimport { logMissingContext } from '../../../utility/logging';\n\ninterface BlockingContext {\n outsideClickBlocked: boolean;\n backBlocked: boolean;\n closeBlocked: boolean;\n}\n\ninterface StateContextType {\n block: BlockingContext;\n triedToBack: boolean;\n triedToClose: boolean;\n triedToOutsideClick: boolean;\n}\n\nconst StateContext = createContext<StateContextType | null>(null);\n\nconst DispatchContext = createContext<Dispatch<DispatchAction> | null>(null);\n\ntype DispatchAction =\n | { type: 'setTriedToClose'; payload: boolean }\n | { type: 'setTriedToBack'; payload: boolean }\n | { type: 'setTriedToOutsideClick'; payload: boolean }\n | { type: 'setBlockingContext'; payload: BlockingContext }\n | { type: 'blockAll' }\n | { type: 'unblockAll' }\n | { type: 'reset' };\n\nconst flyInContextReducer: Reducer<StateContextType, DispatchAction> = (state, action) => {\n switch (action.type) {\n case 'setTriedToClose':\n return {\n ...state,\n triedToClose: action.payload,\n };\n case 'setTriedToBack':\n return {\n ...state,\n triedToBack: action.payload,\n };\n case 'setTriedToOutsideClick':\n return {\n ...state,\n triedToOutsideClick: action.payload,\n };\n case 'setBlockingContext':\n return {\n ...state,\n block: action.payload,\n };\n case 'unblockAll':\n return {\n ...state,\n block: {\n outsideClickBlocked: false,\n backBlocked: false,\n closeBlocked: false,\n },\n };\n case 'blockAll':\n return {\n ...state,\n block: {\n outsideClickBlocked: true,\n backBlocked: true,\n closeBlocked: true,\n },\n };\n case 'reset':\n return {\n ...state,\n triedToClose: false,\n triedToBack: false,\n triedToOutsideClick: false,\n };\n default:\n return state;\n }\n};\n\nexport const FlyInContextProvider: FC<React.PropsWithChildren<unknown>> = (props) => {\n const [state, dispatch] = useReducer<Reducer<StateContextType, DispatchAction>>(\n flyInContextReducer,\n {\n block: {\n outsideClickBlocked: false,\n backBlocked: false,\n closeBlocked: false,\n },\n triedToBack: false,\n triedToClose: false,\n triedToOutsideClick: false,\n },\n );\n\n return (\n <DispatchContext.Provider value={dispatch}>\n <StateContext.Provider value={state}>{props.children}</StateContext.Provider>\n </DispatchContext.Provider>\n );\n};\n\nexport const useFlyInStateContext = () => {\n const state = useContext(StateContext);\n\n return state;\n};\n\nexport const useFlyInDispatchContext = () => {\n const dispatch = useContext(DispatchContext);\n\n const dispatchOrError = useCallback(\n (action: DispatchAction) => {\n if (dispatch) {\n dispatch(action);\n } else {\n logMissingContext('FlyIn');\n }\n },\n [dispatch],\n );\n\n const unblockAll = useCallback(() => {\n dispatchOrError({\n type: 'unblockAll',\n });\n }, [dispatchOrError]);\n\n const blockAll = useCallback(() => {\n dispatchOrError({\n type: 'blockAll',\n });\n }, [dispatchOrError]);\n\n const setTriedToOutsideClick = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToOutsideClick',\n payload: true,\n });\n }, [dispatchOrError]);\n\n const setTriedToClose = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToClose',\n payload: true,\n });\n }, [dispatchOrError]);\n\n const setTriedToBack = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToBack',\n payload: true,\n });\n }, [dispatchOrError]);\n\n const unsetTriedToClose = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToClose',\n payload: false,\n });\n }, [dispatchOrError]);\n\n const unsetTriedToBack = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToBack',\n payload: false,\n });\n }, [dispatchOrError]);\n\n const unsetTriedToOutsideClick = useCallback(() => {\n dispatchOrError({\n type: 'setTriedToOutsideClick',\n payload: false,\n });\n }, [dispatchOrError]);\n\n const reset = useCallback(() => {\n dispatchOrError({\n type: 'reset',\n });\n }, [dispatchOrError]);\n\n return {\n reset,\n setTriedToBack,\n setTriedToClose,\n unsetTriedToBack,\n unsetTriedToClose,\n setTriedToOutsideClick,\n unsetTriedToOutsideClick,\n blockAll,\n unblockAll,\n };\n};\n","import type { FC } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport const enum MicroAppContextType {\n Checkout,\n Start,\n Ecommerce,\n Stores,\n CnC,\n Recipes,\n MyCoop,\n}\n\ninterface IMicroAppContext {\n microAppContextType?: MicroAppContextType;\n}\n\nconst MicroAppContext = createContext<IMicroAppContext>({ microAppContextType: undefined });\n\nexport const useMicroAppContext = () => {\n const featureContext = useContext(MicroAppContext);\n return featureContext;\n};\n\nexport const useIsInCheckoutMicroApp = () => {\n const context = useContext(MicroAppContext);\n\n return context?.microAppContextType === MicroAppContextType.Checkout;\n};\n\nexport const useIsInEcommerceMicroApp = () => {\n const context = useContext(MicroAppContext);\n\n return context?.microAppContextType === MicroAppContextType.Ecommerce;\n};\n\nexport const useIsInCncMicroApp = () => {\n const context = useContext(MicroAppContext);\n\n return context?.microAppContextType === MicroAppContextType.CnC;\n};\n\nexport const MicroAppContextProvider: FC<\n React.PropsWithChildren<{ microAppType: MicroAppContextType }>\n> = (props) => {\n const value = useMemo<IMicroAppContext>(\n () => ({ microAppContextType: props.microAppType }),\n [props.microAppType],\n );\n\n return <MicroAppContext.Provider value={value}>{props.children}</MicroAppContext.Provider>;\n};\n","import type { FC } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport const enum SiteContextType {\n /** Whole visible page container (except the Header) */\n Global,\n\n /** Main content of a page */\n PageContent,\n\n /** Side content, i.e. sidebar menu */\n Side,\n\n Header,\n Footer,\n\n Modal,\n}\n\ninterface ISiteContext {\n siteContextType?: SiteContextType;\n}\n\nconst SiteContext = createContext<ISiteContext>({ siteContextType: undefined });\n\nexport const useSiteContext = () => {\n const featureContext = useContext(SiteContext);\n return featureContext;\n};\n\nexport const useIsInsideModalContext = () => {\n const context = useContext(SiteContext);\n\n return context?.siteContextType === SiteContextType.Modal;\n};\n\nexport const SiteContextProvider: FC<React.PropsWithChildren<{ siteContext: SiteContextType }>> = (\n props,\n) => {\n const value = useMemo<ISiteContext>(\n () => ({ siteContextType: props.siteContext }),\n [props.siteContext],\n );\n\n return <SiteContext.Provider value={value}>{props.children}</SiteContext.Provider>;\n};\n","import { appConfig } from '../../../appConfig';\nimport type {\n ApiBaseException,\n ApiCartException,\n ApiDefaultException,\n ApiException,\n ApiOpenIdException,\n ApiRedirectException,\n ApiValidationException,\n} from './exceptionDefinitions';\n\nexport const isLocalApiBaseException = (error: unknown): error is ApiBaseException => {\n return error\n ? (error as ApiBaseException).type !== undefined ||\n !!(error as ApiBaseException).friendlyMessage\n : false;\n};\n\nexport const isLocalApiDefaultException = (error: unknown): error is ApiDefaultException => {\n return error ? (error as ApiBaseException).type === 'Default' : false;\n};\n\nexport const isLocalApiOpenIdException = (error: unknown): error is ApiOpenIdException => {\n return error ? (error as ApiBaseException).type === 'OpenId' : false;\n};\n\nexport const isLocalApiValidationException = (error: unknown): error is ApiValidationException => {\n return error ? (error as ApiBaseException).type === 'Validation' : false;\n};\n\nexport const isLocalRedirectApiException = (error: unknown): error is ApiRedirectException => {\n return error ? (error as ApiBaseException).type === 'Redirect' : false;\n};\n\nexport const isCartException = (error: unknown): error is ApiCartException => {\n return (<ApiCartException>error)?.type === 'Cart';\n};\n\nexport const isLocalApiKnownException = (error: unknown): error is ApiException => {\n return isLocalApiDefaultException(error) || isLocalApiValidationException(error);\n};\n\nexport const extractLocalApiValidationErrors = (error: ApiBaseException) => {\n return isLocalApiValidationException(error) ? error.validationErrors : undefined;\n};\n\nexport const createDefaultException = (\n message?: string,\n code?: string,\n field?: string,\n): ApiException => {\n const defaultException: ApiDefaultException = {\n friendlyMessage: message || appConfig.coopSettings.ecommerce?.errorMessage?.general,\n code: code || null,\n field: field || null,\n type: 'Default',\n };\n\n return defaultException;\n};\n","export enum HybrisResponseFieldsType {\n Full = 'FULL',\n Default = 'DEFAULT',\n Basic = 'BASIC',\n}\n","/* eslint-disable @typescript-eslint/no-throw-literal */\nimport { appConfig } from '../../../../appConfig';\nimport type { ApiCartException } from '../../exceptions/exceptionDefinitions';\nimport type { HybrisCart } from '../../models/hybris/hybrisCart';\nimport type { HybrisCartModification } from '../../models/hybris/hybrisCartModification';\nimport { HybrisResponseFieldsType } from '../../models/hybris/hybrisConstants';\nimport type { HybrisSwitchStore } from '../../models/hybris/hybrisSwitchStore';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\n\nconst directCartApi = {\n addToCartFromOrder:\n (token: string) =>\n async (userId: string, cartId: string, orderId: string): Promise<HybrisCart> => {\n const response = await getDirectHybrisAxiosClient(token).post(\n `users/${userId}/carts/${cartId}/addfromorder/${orderId}`,\n );\n const resp = response.data;\n return resp;\n },\n\n updateCartItem:\n (token?: string) =>\n async (\n userId: string,\n cartId: string,\n item: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n itemReplaceable?: boolean;\n },\n ) => {\n const queryString = new URLSearchParams();\n queryString.set('qty', item.quantity.toString());\n queryString.set('code', item.productId);\n if (item.variantId) {\n queryString.set('varianceCode', item.variantId);\n }\n if (item.itemReplaceable !== undefined) {\n queryString.set('replaceable', item.itemReplaceable ? 'true' : 'false');\n }\n\n const response = await getDirectHybrisAxiosClient(token).post<HybrisCartModification>(\n `users/${encodeURIComponent(userId)}/carts/${encodeURIComponent(\n cartId,\n )}/products?${queryString.toString()}`,\n );\n\n if (response.data.statusCode !== 'success') {\n let errorMessage = appConfig.coopSettings.ecommerce.errorMessage.general;\n switch (response.data.statusCode) {\n case 'restrictedByUserGroupAndCategory':\n errorMessage = appConfig.coopUserSettings.punchout.isPunchout\n ? appConfig.coopSettings.ecommerce.errorMessage\n .productRestrictedForBusinessUnit\n : appConfig.coopSettings.ecommerce.errorMessage\n .productRestrictedForPrivateUser;\n break;\n case 'unavailable':\n errorMessage =\n appConfig.coopSettings.ecommerce.errorMessage.productNotFound;\n break;\n case 'foodBagOnly':\n break;\n default:\n break;\n }\n throw <ApiCartException>{ code: null, friendlyMessage: errorMessage, type: 'Cart' };\n }\n return response.data;\n },\n bulkEntries:\n (token?: string) =>\n async (\n userId: string,\n cartId: string,\n items: { productCode: string; varianceCode: string | undefined; quantity: number }[],\n ) => {\n const response = await getDirectHybrisAxiosClient(token).post<{\n CartModifications: {}[];\n }>(`users/${userId}/carts/${cartId}/bulkentries`, items);\n const resp = response.data.CartModifications;\n return resp;\n },\n\n createCart: async (shoppingUserId: string, token?: string) => {\n const response = await getDirectHybrisAxiosClient(token).post<HybrisCart>(\n `users/${encodeURIComponent(shoppingUserId)}/carts`,\n );\n\n return response.data;\n },\n getCart: async (shoppingUserId: string, cartId: string, token?: string) => {\n const response = await getDirectHybrisAxiosClient(token).get<HybrisCart>(\n `users/${encodeURIComponent(shoppingUserId)}/carts/${encodeURIComponent(\n cartId,\n )}?fields=${HybrisResponseFieldsType.Full}`,\n );\n\n return response.data;\n },\n updatePostCode: async (\n shoppingUserId: string,\n cartId: string,\n postCode: string,\n baseStoreId: string,\n confirmed: boolean,\n token?: string,\n ) => {\n const queryString = new URLSearchParams();\n queryString.set('postCode', postCode);\n queryString.set('confirmed', confirmed ? 'true' : 'false');\n queryString.set('basestoreCode', baseStoreId);\n\n const response = await getDirectHybrisAxiosClient(token).put<HybrisSwitchStore | undefined>(\n `users/${encodeURIComponent(\n shoppingUserId,\n )}/carts/${cartId}/postcode?${queryString.toString()}`,\n );\n // if we change to the already current store in the cart, we get 200ok with no response, thats why i added updateresult == null as success :E\n return response.data;\n },\n setPointOfService: async (\n shoppingUserId: string,\n cartId: string,\n pickupPointId: string,\n confirmed: boolean,\n token?: string,\n ) => {\n const queryString = new URLSearchParams();\n queryString.set('posName', pickupPointId);\n queryString.set('confirmed', confirmed ? 'true' : 'false');\n\n const response = await getDirectHybrisAxiosClient(token).put<HybrisSwitchStore | undefined>(\n `users/${encodeURIComponent(\n shoppingUserId,\n )}/carts/${cartId}/pointofservice?${queryString.toString()}`,\n );\n return response.data;\n },\n setDeliveryMode: async (\n shoppingUserId: string,\n cartId: string,\n deliveryModeId: string,\n token?: string,\n ) => {\n const queryString = new URLSearchParams();\n queryString.set('deliveryModeId', deliveryModeId);\n\n await getDirectHybrisAxiosClient(token).put(\n `users/${encodeURIComponent(\n shoppingUserId,\n )}/carts/${cartId}/deliverymode?${queryString.toString()}`,\n );\n },\n};\n\nexport default directCartApi;\n","import type {\n ApiFullCartItem,\n ApiSubstituteProductResponse,\n} from '../../api/cart/responses/cartResponses';\n\nconst getVariantName = (varianceCode: string, product: ApiProduct) => {\n if (product.variants && product.variants.length > 0) {\n const variantProduct = product.variants.find((variant) => variant.id === varianceCode);\n return variantProduct && variantProduct.name;\n }\n return undefined;\n};\n\nexport const mapProductToApiFullCartItem = (\n result: ApiSubstituteProductResponse,\n product: ApiProduct,\n): ApiFullCartItem => {\n const cartItem: ApiFullCartItem = {\n id: result.entryNumber.toString(),\n name: result.name,\n productId: result.productIdentifier,\n variantId: result.variantId,\n quantity: result.quantity,\n manufacturer: result.manufacturer,\n };\n\n if (product) {\n cartItem.image = product.image && product.image.url;\n cartItem.priceData = product.priceData;\n cartItem.productUrl = product.url;\n cartItem.variantName = getVariantName(result.variantId, product);\n }\n\n if (product && product.details) {\n cartItem.packageSizeInformation = `${product.details.size && product.details.size.size} ${\n product.details.size.unit && product.details.size.unit.toLowerCase()\n }`;\n }\n\n return cartItem;\n};\n","import { appConfig } from '../../../../appConfig';\nimport { Cookies } from '../../../../utility/cookies';\nimport { getAuthToken, getAuthTokenOrDefault } from '../../api/auth/getAuthToken';\nimport cartApi from '../../api/cart/cartApi';\nimport directCartApi from '../../api/cart/directCartApi';\nimport type { ApiAddMultipleRecipesRequest } from '../../api/recipe/recipeModels';\nimport savedCartsApi from '../../api/savedCarts/savedCartsApi';\nimport { directStoreApi } from '../../api/store/directStoreApi';\nimport { timeslotsApi } from '../../api/timeslots/timeslotsApi';\nimport { DeliveryMode } from '../../store/structureDefinitions/storeState';\nimport { productFlow } from '../product/productFlow';\nimport { mapProductToApiFullCartItem } from './mapCartResponses';\n\nconst CART_COOKIE_NAME = 'coop-cart';\nexport const HOME_DELIVERY_MODE = 'homedelivery';\nconst getCart = async () => {\n const cart = await cartApi.fetchCart();\n return cart;\n};\n\nconst getCartSimple = async () => {\n const cart = await cartApi.fetchCartSimple();\n return cart;\n};\n\nconst getCurrentCartId = () => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n return 'current';\n }\n const anonymousCartId = Cookies.read(CART_COOKIE_NAME);\n return anonymousCartId;\n};\n\nconst emptyCart = () => cartApi.emptyCart();\n\nconst buyMultipleRecipes = (request: ApiAddMultipleRecipesRequest) =>\n cartApi.recipes.buyMultipleRecipes(request);\n\nconst removeRecipe = (recipeId: string) => cartApi.recipes.removeRecipe(recipeId);\n\nconst changeRecipePortions = (recipeId: string, portions: number) =>\n cartApi.recipes.changeRecipePortions(recipeId, portions);\n\nconst getCurrentTimeslot = () => timeslotsApi.current();\n\nconst selectTimeslot = async (timeslotId: string) => {\n await timeslotsApi.select(timeslotId);\n const currentTimeslot = await timeslotsApi.current();\n return currentTimeslot;\n};\n\nconst changeItemVariant = (\n cartItemId: string,\n productId: string,\n quantity: number,\n newVariantId: string,\n) =>\n cartApi.changeCartItemVariant({\n id: cartItemId,\n productId,\n variantId: newVariantId,\n quantity,\n });\n\nconst updateItemQuantity = async (\n cartId: string,\n productId: string,\n variantId: string | undefined,\n quantity: number,\n itemReplaceable?: boolean,\n) => {\n const { token, shoppingUserId } = await getAuthTokenOrDefault();\n\n return directCartApi.updateCartItem(token)(shoppingUserId, cartId, {\n productId,\n variantId,\n quantity,\n itemReplaceable,\n });\n};\n\n/** Creates a new cart,\n * if syncWithStoreContext, we will try to update the cart with delivermode / zip / pickup-point\n * */\nconst createCartAsync = async (\n deliveryMode: DeliveryMode,\n currentZipCode?: string,\n currentPickupPointId?: string,\n) => {\n const { token, shoppingUserId } = await getAuthTokenOrDefault();\n const cart = await directCartApi.createCart(shoppingUserId, token);\n const cartId = cart.guid!;\n Cookies.create(CART_COOKIE_NAME, cartId, 70);\n\n if (deliveryMode === DeliveryMode.homedelivery && currentZipCode) {\n const store = await directStoreApi.getStoreByPostCode(currentZipCode!);\n await directCartApi.updatePostCode(\n shoppingUserId,\n cartId,\n currentZipCode!,\n store.code,\n true,\n token,\n );\n await directCartApi.setDeliveryMode(shoppingUserId, cartId, HOME_DELIVERY_MODE, token);\n }\n if (deliveryMode === DeliveryMode.pickup && currentPickupPointId) {\n const pointOfService = await directStoreApi.getPointOfService(currentPickupPointId!);\n if (!pointOfService?.pickupDeliveryModes?.length) {\n throw new Error('No deliverymodes!');\n }\n await directCartApi.setPointOfService(\n shoppingUserId,\n cartId,\n currentPickupPointId!,\n true,\n token,\n );\n await directCartApi.setDeliveryMode(\n shoppingUserId,\n cartId,\n pointOfService.pickupDeliveryModes[0].code,\n token,\n );\n }\n\n if (deliveryMode) {\n return directCartApi.getCart(shoppingUserId, cartId, token);\n }\n return cart;\n};\n\nconst getItemSubstitutes = async (rowNumber: string, storeId: string) => {\n const substituteProducts = await cartApi.recipes.getProductSubstitutes(rowNumber);\n\n const incompleteProductIds = substituteProducts.map((product) => {\n return product.id;\n });\n\n const products = await productFlow.getProductsByIds([...incompleteProductIds], storeId);\n return products;\n};\n\nconst substituteProduct = async (cartItemId: string, newProductId: string, storeId: string) => {\n const subsituteResponse = await cartApi.recipes.substituteProduct(cartItemId, newProductId);\n\n const fullProduct = await productFlow.getProductById(\n subsituteResponse.productIdentifier,\n storeId,\n );\n\n const cartItem = fullProduct\n ? mapProductToApiFullCartItem(subsituteResponse, fullProduct)\n : null;\n\n return cartItem;\n};\n\nconst applyVoucher = (id: string) => cartApi.voucher.add(id);\n\nconst removeVoucher = (id: string) => cartApi.voucher.remove(id);\n\nconst changeReplaceability = async (\n productId: string,\n variantId: string | undefined,\n quantity: number, // needs to be there since we have one endpoint that does not like empty quantity\n replaceable: boolean,\n) => {\n const cartId = await getCurrentCartId();\n if (!cartId) {\n throw new Error('No cart id');\n }\n const { token, shoppingUserId } = await getAuthTokenOrDefault();\n const updatedItem = await directCartApi.updateCartItem(token)(shoppingUserId, cartId, {\n productId,\n variantId,\n quantity,\n itemReplaceable: replaceable,\n });\n return updatedItem;\n};\n\nconst setItemsReplaceability = (replaceable: boolean) =>\n cartApi.setItemsReplaceability({ replaceAll: replaceable });\n\nconst addToCartFromOrder = async (orderId: string) => {\n const { token, shoppingUserId } = await getAuthToken();\n const cartId = await getCurrentCartId();\n if (!cartId) {\n throw new Error('No cart id');\n }\n const response = await directCartApi.addToCartFromOrder(token)(shoppingUserId, cartId, orderId);\n return response;\n};\n\nconst restoreSavedCart = async (savedCartId: string) => {\n const { token, shoppingUserId } = await getAuthToken();\n const cartId = await getCurrentCartId();\n if (!cartId) {\n throw new Error('No cart id');\n }\n const response = await savedCartsApi.restoreSavedCart(token)(\n shoppingUserId,\n cartId,\n savedCartId,\n );\n return response;\n};\n\nconst validateAssortment = async () => {\n const { token, shoppingUserId } = await getAuthToken();\n return cartApi.validateAssortment(token)(shoppingUserId);\n};\n\nconst addItemsBulk = async (\n cartId: string,\n items: {\n productId: string;\n variantId?: string;\n quantity: number;\n replaceable?: boolean;\n }[],\n) => {\n const { token, shoppingUserId } = await getAuthTokenOrDefault();\n const response = await directCartApi.bulkEntries(token)(\n shoppingUserId,\n cartId,\n items.map((item) => ({\n productCode: item.productId,\n varianceCode: item.variantId,\n quantity: item.quantity,\n replaceable: item.replaceable ?? true,\n })),\n );\n return response;\n};\n\nexport const currentCartFlow = {\n getCurrentCartId,\n getCart,\n getCartSimple,\n createCartAsync,\n emptyCart,\n removeRecipe,\n buyMultipleRecipes,\n addItemsBulk,\n changeRecipePortions,\n getCurrentTimeslot,\n selectTimeslot,\n changeItemVariant,\n updateItemQuantity,\n getItemSubstitutes,\n substituteProduct,\n applyVoucher,\n removeVoucher,\n changeReplaceability,\n setItemsReplaceability,\n restoreSavedCart,\n addToCartFromOrder,\n validateAssortment,\n};\n","import { HybrisResponseFieldsType } from '../../models/hybris/hybrisConstants';\nimport type { HybrisPointOfService } from '../../models/hybris/hybrisPointOfService';\nimport type { HybrisStoreSimple } from '../../models/hybris/hybrisStoreSimple';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\n\nconst getPointOfService = async (id: string) => {\n const queryString = new URLSearchParams();\n queryString.set('id', id);\n queryString.set('fields', HybrisResponseFieldsType.Default);\n\n const response = await getDirectHybrisAxiosClient(undefined).post<HybrisPointOfService>(\n `pointofservice/${encodeURIComponent(id)}?${queryString.toString()}`,\n );\n return response.data;\n};\n\nconst getStoreByPostCode = async (postCode: string) => {\n const queryString = new URLSearchParams();\n queryString.set('postCode', postCode);\n\n const response = await getDirectHybrisAxiosClient(undefined).get<HybrisStoreSimple>(\n `coopstore/?${queryString.toString()}`,\n );\n return response.data;\n};\n\nexport const directStoreApi = {\n getPointOfService,\n getStoreByPostCode,\n};\n","import getDirectAdobeCampaignAxiosClient from '../../../common/api/clients/directAdobeCampaignAxiosClient';\nimport type { CustomErrorInterceptor } from '../../../common/api/clients/localApiAxiosErrorInterceptors';\nimport { createDefaultException } from '../../../common/exceptions/exceptionUtils';\nimport type { EmailSubscriptionResponse } from '../models';\n\nconst baseUrl = '/external/ac/offers';\n\ntype EmailSubscriptionApiException = {\n status: number;\n title: string;\n};\n\nconst emailSubscriptionErrorInterceptor: CustomErrorInterceptor<EmailSubscriptionApiException> = (\n error,\n) => {\n const exception = createDefaultException(\n error.response.data.title,\n error.response.data.status.toString(),\n );\n return exception;\n};\n\nconst getSubscriptions = async (\n token?: string,\n neoId?: string,\n): Promise<EmailSubscriptionResponse | null> => {\n const url = `${baseUrl}/subscriptions`;\n\n try {\n const response = await getDirectAdobeCampaignAxiosClient(token, neoId, [\n emailSubscriptionErrorInterceptor,\n ]).get(url);\n\n return response.data;\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '404') {\n return null;\n }\n\n throw error;\n }\n};\n\nconst subscribe = async (services: string[], token?: string, neoId?: string, email?: string) => {\n const url = `${baseUrl}/subscriptions/services`;\n\n const axiosClient = await getDirectAdobeCampaignAxiosClient(token, neoId);\n const data = {\n email,\n services,\n };\n await axiosClient.post<void>(url, data);\n};\n\nconst unsubscribe = async (services: string[], token?: string, neoId?: string) => {\n const url = `${baseUrl}/subscriptions/services`;\n\n const axiosClient = await getDirectAdobeCampaignAxiosClient(token, neoId);\n await axiosClient.delete<void>(url, { data: services });\n};\n\nconst consentSubscriptionsApi = {\n getSubscriptions,\n subscribe,\n unsubscribe,\n};\n\nexport default consentSubscriptionsApi;\n","import { appConfig } from '../../../appConfig';\nimport consentSubscriptionsApi from '../../myCoop/emailSubscriptions/api/consentSubscriptionsApi';\nimport { getAuthToken } from '../api/auth/getAuthToken';\nimport { getNeoId } from '../utils/neoIdUtils';\n\nconst getSubscriptions = async (preferNeoId?: boolean) => {\n const neoId = (preferNeoId && getNeoId()) || undefined;\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n const response = await consentSubscriptionsApi.getSubscriptions(token, neoId);\n return response;\n};\n\nconst subscribe = async (services: string[], preferNeoId?: boolean, email?: string) => {\n const neoId = (preferNeoId && getNeoId()) || undefined;\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n const response = consentSubscriptionsApi.subscribe(services, token, neoId, email);\n return response;\n};\n\nconst unsubscribe = async (services: string[], preferNeoId?: boolean) => {\n const neoId = (preferNeoId && getNeoId()) || undefined;\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n const response = consentSubscriptionsApi.unsubscribe(services, token, neoId);\n return response;\n};\n\nexport const consentAdobeSubscriptionFlow = {\n getSubscriptions,\n subscribe,\n unsubscribe,\n};\n","import { GdprCookieVendors, hasAcceptedGdprCookieVendorsSync } from '../../../../utility/gdpr';\nimport type { ApiDyCookie } from '../../../tracking/api/trackingRequests';\nimport type {\n ApiDYBaseRequest,\n ApiDYPageContext,\n ApiDYProductRecommendationsRequest,\n} from '../../api/products/apiProductRequests';\nimport { productApi } from '../../api/products/productApi';\nimport persistance from '../../persistance/persistance';\nimport { mapProductRecommendations } from '../product/mapProductResponse';\nimport userFlow from '../userFlow';\n\nexport const getStaticPageContext = () => {\n if (window.DY) {\n return DY.recommendationContext;\n }\n\n return null;\n};\n\nexport const hasAcceptedDynamicYieldConsents = () => {\n return hasAcceptedGdprCookieVendorsSync([\n GdprCookieVendors.DynamicYield,\n GdprCookieVendors.GoogleAnalytics,\n ]);\n};\n\nexport const getDynamicYieldData = (): ApiDYBaseRequest => {\n const hasConsent = hasAcceptedDynamicYieldConsents();\n const dynamicYieldIds: ApiDYBaseRequest = {\n user: {\n active_consent_accepted: hasConsent,\n },\n };\n\n if (hasConsent) {\n const dyId = persistance.dynamicYield.getDyId();\n const dySession = persistance.dynamicYield.getSessionId();\n\n if (dyId) {\n dynamicYieldIds.user = {\n active_consent_accepted: true,\n dyid: dyId,\n };\n }\n\n if (dySession) {\n dynamicYieldIds.session = {\n dy: dySession,\n };\n }\n }\n\n return dynamicYieldIds;\n};\n\nexport interface AbTestCustomData<TTestValue> {\n isAbTest: boolean;\n chosenVariant?: TTestValue;\n}\n\ninterface RecommendationRequest {\n recommendationId: string;\n onlyPromotions: boolean;\n}\n\nconst syncCookies = (cookies: ApiDyCookie[]) => {\n cookies?.forEach((c) => persistance.dynamicYield.setCookies(c));\n};\n\nconst getProductRecommendations = async (\n recommendationRequests: Array<RecommendationRequest>,\n storeId: string,\n pageContext: ApiDYPageContext,\n pageAttributes?: unknown,\n) => {\n const dynamicYieldIds = getDynamicYieldData();\n const args = recommendationRequests.reduce((prev, curr) => {\n return { ...prev, [curr.recommendationId]: { promotions: curr.onlyPromotions } };\n }, {});\n\n const recommendationNames = recommendationRequests.map((x) => x.recommendationId);\n\n const request: ApiDYProductRecommendationsRequest = {\n ...dynamicYieldIds,\n selector: {\n names: recommendationNames,\n args,\n },\n context: {\n page: pageContext,\n pageAttributes,\n },\n options: {\n returnAnalyticsMetadata: true,\n },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n const response = await productApi.getRecommendations(storeId, request, customerGroups);\n const productRecommendatons = mapProductRecommendations(response);\n syncCookies(response.cookies);\n return productRecommendatons;\n};\n\nconst getProductRecommendation = async (\n recommendationRequest: RecommendationRequest,\n storeId: string,\n pageContext: ApiDYPageContext,\n pageAttributes?: unknown,\n) => {\n const productRecommendations = await getProductRecommendations(\n [recommendationRequest],\n storeId,\n pageContext,\n pageAttributes,\n );\n const productRecommendation = productRecommendations.find(\n (recommendation) => recommendation.selectorName === recommendationRequest.recommendationId,\n );\n\n if (!productRecommendation) return null;\n\n return productRecommendation;\n};\n\nconst dynamicYieldFlow = {\n getProductRecommendations,\n getProductRecommendation,\n syncCookies,\n};\n\nexport default dynamicYieldFlow;\n","import { mapLoopSearchRecipe } from '../../../search/flow/mapSearchResponse';\nimport type {\n ApiDYCustomCampaignResponse,\n ApiDYProductRecommendationsResponse,\n ApiDYRecommendationItem,\n ApiDYRecommendationItemWithType,\n} from '../../api/products/apiProductRequests';\nimport type {\n CustomCampaign,\n Recommendation,\n RecommendationItem,\n} from '../../models/product/productDomainModels';\nimport { RecommendationType } from '../../models/product/productDomainModels';\nimport { mapLoopProduct } from './mapProduct';\n\nexport const mapCustomCampaigns = <TCustomData>(campaignsResponse: ApiDYCustomCampaignResponse) => {\n const campaigns = campaignsResponse.choices.map(\n (campaign) =>\n <CustomCampaign<TCustomData>>{\n id: campaign.id,\n selectedVariationId: campaign.variations[0]?.id,\n selectorName: campaign.name,\n custom: campaign.variations[0]?.payload?.data,\n analyticsMetadata: campaign.variations[0]?.analyticsMetadata,\n },\n );\n\n return campaigns;\n};\n\nconst isProductRecommendation = (\n recommendationItem: ApiDYRecommendationItem,\n): recommendationItem is ApiDYRecommendationItemWithType<ApiLoopProduct> => {\n return recommendationItem.type === 'Product';\n};\n\nconst isRecipeRecommendation = (\n recommendationItem: ApiDYRecommendationItem,\n): recommendationItem is ApiDYRecommendationItemWithType<ApiLoopSearchRecipe> => {\n return recommendationItem.type === 'RecipesEntity';\n};\n\nexport const mapProductRecommendations = (\n apiRecommendations: ApiDYProductRecommendationsResponse,\n) => {\n const productRecommendations = apiRecommendations.choices.map((apiRecommendation) => {\n const recommendation: Recommendation = {\n recommendationId: apiRecommendation.id,\n selectedVariationId: apiRecommendation.variations[0]?.id,\n selectorName: apiRecommendation.name,\n items: (\n apiRecommendation.variations[0]?.payload?.data?.slots?.map<RecommendationItem | null>(\n (slot) => {\n if (isProductRecommendation(slot.productData)) {\n const mappedProduct = mapLoopProduct(slot.productData);\n return {\n ...mappedProduct,\n slotId: slot.slotId,\n type: RecommendationType.Product,\n };\n }\n if (isRecipeRecommendation(slot.productData)) {\n const mappedRecipe = mapLoopSearchRecipe(slot.productData);\n return {\n ...mappedRecipe,\n id: slot.sku,\n slotId: slot.slotId,\n type: RecommendationType.Recipe,\n isFoodBox: mappedRecipe.keywords?.includes('paketeringar') || false, // should be proper field but it would need to be exported by assortment team\n };\n }\n\n return null;\n },\n ) || []\n ).filter(Boolean),\n title: apiRecommendation.variations[0]?.payload?.data?.custom?.title || '',\n analyticsMetadata: apiRecommendation.variations[0]?.analyticsMetadata,\n };\n\n return recommendation;\n });\n\n return productRecommendations;\n};\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from './clientFactory';\nimport type { CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\n\nconst getDirectKimProxyAxiosClient = <TApiError = unknown>(\n accessToken?: string,\n neoId?: string,\n errorInterceptors?: CustomErrorInterceptor<TApiError>[],\n): AxiosInstance => {\n const directKimProxyAxiosClient = axiosClientFactory.createDirectApiClient(\n {\n baseURL: appConfig.coopSettings.serviceAccess.kimProxyApiUrl,\n headers: {\n Accept: 'application/json',\n 'Ocp-Apim-Trace': 'true',\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.kimProxyApiSubscriptionKey,\n Authorization: neoId ? `adobe ${btoa(neoId)}` : `Bearer ${accessToken}`,\n },\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.kimProxyApiVersion,\n },\n },\n errorInterceptors,\n );\n\n return directKimProxyAxiosClient;\n};\n\nexport default getDirectKimProxyAxiosClient;\n","import { createDefaultException } from '../../exceptions/exceptionUtils';\nimport type { CustomErrorInterceptor } from '../clients/localApiAxiosErrorInterceptors';\n\ntype ConsentApiException = {\n code: '404';\n details: string;\n status: number;\n title: string;\n};\n\nconst consentErrorInterceptor: CustomErrorInterceptor<ConsentApiException> = (error) => {\n const exception = createDefaultException(\n error.response.data.details,\n error.response.data.status.toString(),\n );\n return exception;\n};\n\nexport default consentErrorInterceptor;\n","import { appConfig } from '../../../appConfig';\nimport { getAuthToken } from '../api/auth/getAuthToken';\nimport { kimProxyDirectApi } from '../api/finance/kimProxyApi';\n\nconst kimProxyFlow = {\n getCustomerData: async () => {\n const identity = await getAuthToken();\n const details = await kimProxyDirectApi.getCustomerData(identity.token);\n return details;\n },\n getCustomerDataFull: async () => {\n const identity = await getAuthToken();\n const details = await kimProxyDirectApi.getCustomerDataFull(identity.token);\n return details;\n },\n deleteCustomerDataCache: async () => {\n const identity = await getAuthToken();\n await kimProxyDirectApi.deleteCustomerDataCache(identity.token);\n },\n changeEmail: async (email: string) => {\n const identity = await getAuthToken();\n await kimProxyDirectApi.changeEmail(identity.token, email);\n return true;\n },\n getConsents: async (neoId?: string) => {\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n try {\n const details = await kimProxyDirectApi.getConsents(token, neoId);\n return details;\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '404') {\n // If there is no user found, return empty array\n return [];\n }\n\n throw error;\n }\n },\n subscribeConsents: async (services: string[], neoId?: string) => {\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n const response = kimProxyDirectApi.subscribeConsents(services, token, neoId);\n return response;\n },\n unsubscribeConsent: async (service: string, neoId?: string) => {\n const { isAuthenticated } = appConfig.coopUserSettings;\n let token;\n if (isAuthenticated) {\n const spaToken = await getAuthToken();\n token = spaToken?.token;\n }\n\n const response = kimProxyDirectApi.unsubscribeConsent(service, token, neoId);\n return response;\n },\n};\n\nexport default kimProxyFlow;\n","import type { Consent } from '../../models/kimProxy/consentData';\nimport type { CustomerData, CustomerDataMinimized } from '../../models/kimProxy/customerData';\nimport getDirectKimProxyAxiosClient from '../clients/directKimProxyAxiosClient';\nimport consentErrorInterceptor from './consentErrorInterceptor';\n\nexport const kimProxyDirectApi = {\n getCustomerData: async (token: string): Promise<CustomerDataMinimized> => {\n const kimCustomerDataUrl = '/customer/data/me/';\n\n const response =\n await getDirectKimProxyAxiosClient(token).get<CustomerDataMinimized>(\n kimCustomerDataUrl,\n );\n\n const resp = response.data;\n return resp;\n },\n getCustomerDataFull: async (token: string): Promise<CustomerData> => {\n const kimCustomerDataUrl = '/customer/data/me/';\n\n const response =\n await getDirectKimProxyAxiosClient(token).get<CustomerData>(kimCustomerDataUrl);\n\n const resp = response.data;\n return resp;\n },\n deleteCustomerDataCache: async (token: string) => {\n const kimCustomerDataClearCacheUrl = '/customer/data/me/cache';\n\n await getDirectKimProxyAxiosClient(token).delete<boolean>(kimCustomerDataClearCacheUrl);\n },\n changeEmail: async (token: string, email: string) => {\n const kimCustomerEmailUrl = '/customer/change-email';\n await getDirectKimProxyAxiosClient(token).post(kimCustomerEmailUrl, {\n email,\n });\n },\n getConsents: async (token?: string, neoId?: string): Promise<Consent[]> => {\n const response = await getDirectKimProxyAxiosClient(token, neoId, [\n consentErrorInterceptor,\n ]).get<Consent[]>('/consent');\n\n const resp = response.data;\n return resp;\n },\n subscribeConsents: async (serviceIds: string[], token?: string, neoId?: string) => {\n const response = await getDirectKimProxyAxiosClient(token, neoId).put('/consent/selected', {\n identifiers: serviceIds,\n });\n\n const resp = response.data;\n return resp;\n },\n unsubscribeConsent: async (serviceId: string, token?: string, neoId?: string) => {\n const response = await getDirectKimProxyAxiosClient(token, neoId).delete('/consent', {\n data: {\n id: serviceId,\n },\n });\n\n const resp = response.data;\n return resp;\n },\n};\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from './clientFactory';\nimport type { CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\n\nexport type ApiLoyaltyException = {\n errorCode: number;\n status: string;\n};\nexport type ApiLoyaltyAutoCheckException = {\n detail: string;\n status: number;\n title: string;\n};\nexport type ApiLoyaltyMember20Exception = {\n title: string;\n status: number;\n detail: string;\n};\nexport type ApiHouseholdMemberException = {\n title: string;\n status: number;\n detail: string;\n error: string;\n};\n\nconst getDirectLoyaltyAxiosClient = <TApiError = unknown>(\n accessToken: string,\n errorInterceptors?: CustomErrorInterceptor<TApiError>[],\n): AxiosInstance => {\n const client = axiosClientFactory.createDirectApiClient(\n {\n baseURL: `${appConfig.coopSettings.serviceAccess.extApimUrl}loyalty/account`,\n params: {\n 'api-version': 'v1',\n },\n headers: {\n Accept: 'application/json',\n 'Ocp-Apim-Trace': 'true',\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.extApimSubscriptionKey,\n Authorization: accessToken ? `Bearer ${accessToken}` : undefined,\n },\n },\n errorInterceptors,\n );\n return client;\n};\n\nexport default getDirectLoyaltyAxiosClient;\n","/* eslint-disable @typescript-eslint/no-throw-literal */\nimport type {\n MonetaryTransactionHistory,\n TransactionHistoryApi,\n} from '../../../myCoop/myPoints/models';\nimport { createDefaultException } from '../../exceptions/exceptionUtils';\nimport type {\n ApiHouseholdMemberException,\n ApiLoyaltyAutoCheckException,\n ApiLoyaltyException,\n ApiLoyaltyMember20Exception,\n} from '../clients/directLoyaltyAxiosClient';\nimport getDirectLoyaltyAxiosClient from '../clients/directLoyaltyAxiosClient';\nimport getLocalApiAxiosClient from '../clients/localApiAxiosClient';\nimport type { CustomErrorInterceptor } from '../clients/localApiAxiosErrorInterceptors';\n\nexport const voucherApiUrl = '/voucher/automatic';\nexport const eligibleApiUrl = 'points/eligible';\nexport const previousPointsApiUrl = 'points/summary/previous';\n\n/**\n * Point that expires within the given number of months\n */\nconst getExpiringPoints = async (months: number, token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token).get<ExpiringPointsResponse[]>(\n `points/expiring/${months}`,\n {\n params: { 'api-version': 'v1' },\n },\n );\n return result.data;\n};\n\n/**\n * Household members, including self\n */\nconst getHouseholdMembers = async (token: string): Promise<HouseholdMember[]> => {\n const result =\n await getDirectLoyaltyAxiosClient(token).get<HouseholdResponse>('membership/household');\n return result.data?.members;\n};\n\n/**\n * Associations\n */\nconst getMembershipNames = async (token: string): Promise<MembershipNames> => {\n const response = await getDirectLoyaltyAxiosClient(token).get(`membership/associations/`);\n return response.data;\n};\n\n/**\n * Eligible for bonus - if user is ok to get and use bonus points\n */\nconst getEligibleForBonus = async (token: string): Promise<boolean> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(eligibleApiUrl);\n return result.data?.eligibleForPoints || false;\n};\n\n/**\n * Total bonus\n */\nconst getPointBalance = async (token: string): Promise<ApiBonus> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/balance', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Previouss Monthly Bonus\n */\nconst getPreviousMonthBonus = async (token: string): Promise<ApiBonusGroup> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(previousPointsApiUrl, {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Point matrix\n */\nconst getPointsMatrixStructureLevel = async (token: string): Promise<ApiPointsMatrix> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/matrix?levels=5', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Point summary / Current Month\n */\nconst getPointsSummary = async (token: string): Promise<ApiPointsSummary> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/summary/current', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Get transaction history by dates\n */\nconst getTransactionsHistoryByDates = async (\n token: string,\n request: DateTransactionsRequest,\n): Promise<TransactionHistoryApi[]> => {\n try {\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).post('points/transactions', request, {\n params: { 'api-version': 'v3' },\n });\n return result.data || [];\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '204') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\n/**\n * Get transaction history for entire month\n */\nconst getMonthTransactionsHistory = async (\n token: string,\n request: TransactionsRequest,\n fromDate: Date,\n): Promise<TransactionHistoryApi[]> => {\n try {\n const fromYear = fromDate.getFullYear();\n const fromMonth = fromDate.getMonth() + 1;\n\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).post(`points/transactions/${fromYear}/${fromMonth}`, request, {\n params: { 'api-version': 'v3' },\n });\n\n return result.data || [];\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '204') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\n/**\n * Purchase history - Köphistorik\n */\nconst getMonthMonetaryTransactionsHistory = async (\n token: string,\n fromDate: Date,\n page?: number,\n size?: number,\n): Promise<MonetaryTransactionHistory[]> => {\n try {\n const fromYear = fromDate.getFullYear();\n const fromMonth = fromDate.getMonth() + 1;\n\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).get(`points/purchasehistory/${fromYear}/${fromMonth}`, {\n params: { 'api-version': 'v3', size: size ?? 5, page: page ?? 0 },\n });\n\n return result.data;\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '404') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\nconst getPointsSummaryYearly = async (token: string): Promise<ApiPointsSummary> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/summary/yearly', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\nconst getVoucherDetails = async (id: string, token: string): Promise<VoucherDetailsResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(\n `/voucher/details/${encodeURI(id)}`,\n );\n return result.data;\n};\n\nconst purchaseOffer = async (\n offerId: number,\n specialCredentials: PurchaseOfferRequest,\n token: string,\n): Promise<PurchaseOfferResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token, [\n purchaseOfferResponseInterceptor,\n ]).post(`/voucher/purchase/${offerId}`, specialCredentials);\n\n try {\n await getLocalApiAxiosClient().delete('/myPoints/cache');\n // eslint-disable-next-line no-empty\n } catch {}\n return result.data;\n};\n\nconst transactionResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyMember20Exception> = (\n response,\n) => {\n if (response.response.data?.status === 404) {\n return createDefaultException(\n response.response.data.title,\n response.response.data.status.toString(),\n );\n }\n\n return createDefaultException('NÃ¥got gick fel när transaktionerna skulle hämtas', '500');\n};\n\nconst addMemberResponseInterceptor: CustomErrorInterceptor<ApiHouseholdMemberException> = (\n response,\n) => {\n let msg = null;\n\n if (response.response.data?.error) {\n switch (response.response.data.error) {\n case 'INVALID_INPUT_SSN':\n msg = 'Personnumret är felaktigt eller i fel format.';\n break;\n case 'INVALID_INPUT_AGE':\n msg = 'Personen är under 18 Ã¥r.';\n break;\n case 'INVALID_INPUT_HOUSEHOLD':\n msg =\n 'Den här medlemmen existerar redan i ett hushÃ¥ll. Vänligen kontakta kundtjänst.';\n break;\n case 'FORBIDDEN_NOT_OWNER':\n msg =\n 'NÃ¥got blev fel. HushÃ¥llstrukturen är felaktig. Vänligen kontakta kundservice om felet kvarstÃ¥r.';\n break;\n default:\n msg = 'NÃ¥got blev fel.';\n break;\n }\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data?.error);\n }\n\n return createDefaultException('NÃ¥got blev fel.');\n};\n\nconst purchaseOfferResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyException> = (\n response,\n) => {\n if (response.response.data?.errorCode) {\n let msg = null;\n\n switch (response.response.data.errorCode) {\n case 10:\n case 30:\n msg =\n 'NÃ¥got gick fel när kundbilden skulle hämtas, vänligen kontakta kundservice. Felkod LMS_1030';\n break;\n case 20:\n msg =\n 'Poängvaran kunde inte hittas i systemet. Vänligen kontakta kundservice. Felkod LMS_20';\n break;\n case 40:\n msg = 'Ej tillräckligt med poäng för att ta poängvaran.';\n break;\n case 50:\n case 60:\n msg =\n 'Koderna för den här poängvaran är tillfälligt slut, vänligen försök igen senare.';\n break;\n case 70:\n msg =\n 'NÃ¥got gick fel med sas-växlilngen, vänligen kontakta kundservice. Felkod SAS_70';\n break;\n case 190:\n msg = 'NÃ¥got gick fel med växlingen, vänligen försök igen senare. Felkod SAS_190';\n break;\n case 80:\n msg = 'Max antal köp av denna poängvara är redan uppnÃ¥dd.';\n break;\n case 90:\n msg =\n 'NÃ¥got gick fel med växlingen. Se över ditt Nordic Choice konto. Felkod NORDIC_90';\n break;\n case 130:\n case 200:\n msg =\n 'NÃ¥got gick fel med växlingen, vänligen försök igen senare. Felkod NORDIC_130';\n break;\n case 100:\n msg = 'Kvitto pÃ¥ uttaget kunde inte skickas.';\n break;\n case 110:\n msg = 'NÃ¥got gick fel, vänligen försök igen senare. Felkod ADOB_110';\n break;\n case 120:\n case 140:\n case 150:\n case 170:\n case 180:\n case 210:\n case 220:\n case 230:\n case 240:\n msg = 'NÃ¥got gick fel, vänligen försök igen senare. Felkod LMS_120';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.errorCode.toString());\n }\n }\n\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.status) {\n case 400:\n msg = 'Felaktiga uppgifter.';\n break;\n case 404:\n msg = 'Produkten finns för tillfället inte pÃ¥ lager.';\n break;\n case 504:\n msg = 'Tjänsten kunde inte nÃ¥s för tillfället. Försök igen senare.';\n break;\n default:\n msg = 'NÃ¥got gick fel, vänligen försök igen senare.';\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.errorCode.toString());\n }\n }\n\n return null;\n};\n\nconst getAutoVoucherStatus = async (token: string): Promise<AutoVoucherStatusResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token, [autoStatusResponseInterceptor]).get(\n voucherApiUrl,\n );\n\n return result.data;\n};\n\nconst autoStatusResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyAutoCheckException> = (\n response,\n) => {\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.data.status) {\n case 400:\n msg = 'Felaktiga uppgifter';\n break;\n case 401:\n msg = 'Accessproblem.';\n break;\n case 404:\n msg = 'Autocheck är avstängd'; // THIS IS OK, NOT AN ERROR\n break;\n case 504:\n msg = 'Tjänsten kunde inte nÃ¥s för tillfället.';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.status.toString());\n }\n }\n\n return null;\n};\n\nconst activateAutoVoucher = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token, [toggleCheckResponseInterceptor]).post(\n voucherApiUrl,\n );\n return result.data;\n};\n\nconst deactivateAutoVoucher = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token, [\n toggleCheckResponseInterceptor,\n ]).delete(voucherApiUrl);\n return result.data;\n};\n\nconst toggleCheckResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyAutoCheckException> = (\n response,\n) => {\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.data.status) {\n case 400:\n msg = 'Felaktiga uppgifter';\n break;\n case 401:\n msg = 'Accessproblem.';\n break;\n case 403:\n msg = 'Accessproblem (bankid).';\n break;\n case 404:\n case 504:\n msg = 'Tjänsten kunde inte nÃ¥s för tillfället.';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.status.toString());\n }\n }\n\n return null;\n};\n\nconst getConnectedCards = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token).get<CardResponse[]>(\n 'membership/connected-cards',\n );\n return result.data;\n};\n\nconst deleteConnectedCard = async (id: string, token: string) => {\n await getDirectLoyaltyAxiosClient(token).delete(`membership/connected-cards/${id}`);\n return true;\n};\n\n/**\n * Add household member\n * (Order extracard)\n */\nconst addHouseholdMember = async (personalNumber: string, token: string) => {\n const request: AddHouseholdMemberRequest = { socialSecurityNumber: personalNumber };\n await getDirectLoyaltyAxiosClient(token, [addMemberResponseInterceptor]).post(\n 'membership/household',\n request,\n {\n params: { 'api-version': 'v1' },\n },\n );\n\n return true;\n};\n\nexport interface AutoVoucherStatusResponse {\n // householdmmid: number;\n mmid: number;\n // lastPurchasedVoucherValue: number;\n // createdAt: Date;\n // updatedAt: Date;\n}\n\nexport interface AutoVoucherStatus {\n status: 'On' | 'Off';\n}\nexport interface ApiBonusGroup {\n pointEarnings: number;\n monetaryEarnings: number;\n}\n\nexport interface ApiBonus {\n points: number;\n monetaryWorth: number;\n}\n\nexport interface ApiAutoCheckStatus {\n mmid: number;\n}\n\nexport const externalLoyaltyApi = {\n getExpiringPoints,\n getVoucherDetails,\n getPreviousMonthBonus,\n getPointsMatrixStructureLevel,\n getPointsSummary,\n getPointsSummaryYearly,\n getTransactionsHistoryByDates,\n getMonthTransactionsHistory,\n getMonthMonetaryTransactionsHistory,\n getPointBalance,\n purchaseOffer,\n getHouseholdMembers,\n getMembershipNames,\n getEligibleForBonus,\n getAutoVoucherStatus,\n activateAutoVoucher,\n deactivateAutoVoucher,\n getConnectedCards,\n deleteConnectedCard,\n addHouseholdMember,\n};\n","import type { TransactionHistory, TransactionHistoryApi } from '../../myCoop/myPoints/models';\nimport { getAuthToken } from '../api/auth/getAuthToken';\nimport { externalLoyaltyApi } from '../api/loyalty/externalLoyaltyApi';\n\nconst getExpiringPoints = async (months: number) => {\n const identity = await getAuthToken();\n return externalLoyaltyApi.getExpiringPoints(months, identity.token);\n};\n\nconst getEligibleForBonus = async () => {\n const identity = await getAuthToken();\n const result = await externalLoyaltyApi.getEligibleForBonus(identity.token);\n return result;\n};\n\nconst getHouseholdMembers = async () => {\n const identity = await getAuthToken();\n const details = await externalLoyaltyApi.getHouseholdMembers(identity.token);\n return details;\n};\n\nconst getPointBalance = async () => {\n const identity = await getAuthToken();\n const pointBalance = await externalLoyaltyApi.getPointBalance(identity.token);\n return pointBalance;\n};\n\nconst getPreviousMonthBonus = async () => {\n const identity = await getAuthToken();\n const previousMonthBonus = await externalLoyaltyApi.getPreviousMonthBonus(identity.token);\n return previousMonthBonus;\n};\n\nconst getPointsMatrixStructureLevel = async () => {\n const identity = await getAuthToken();\n const pointsMatrixStructureLevel = await externalLoyaltyApi.getPointsMatrixStructureLevel(\n identity.token,\n );\n return pointsMatrixStructureLevel;\n};\n\nconst getPointsSummary = async () => {\n const identity = await getAuthToken();\n const pointsSummary = await externalLoyaltyApi.getPointsSummary(identity.token);\n return pointsSummary;\n};\n\nconst getPointTypeTranslated = (pointType: number) => {\n if (pointType === 1) {\n return 'CoopStorePointsEarned';\n }\n if (pointType === 2) {\n return 'PaymentPointsInternal';\n }\n if (pointType === 3) {\n return 'CampaignPoints';\n }\n if (pointType === 4) {\n return 'GamificationPoints';\n }\n if (pointType === 5) {\n return 'PartnerPoints';\n }\n if (pointType === 6) {\n return 'ManualPoints';\n }\n if (pointType === 7) {\n return 'HouseholdChangeMerge';\n }\n if (pointType === 8) {\n return 'CoopStorePointsSpent';\n }\n if (pointType === 9) {\n return 'PartnerPointsSpent';\n }\n if (pointType === 10) {\n return 'ExpirePoints';\n }\n if (pointType === 11) {\n return 'HouseholdChangeSplit';\n }\n if (pointType === 12) {\n return 'PaymentPointsExternal';\n }\n if (pointType === 13) {\n return 'ExchangePoints';\n }\n if (pointType === 14) {\n return 'CoopXtraPoints';\n }\n\n return 'NotSet';\n};\n\n// Poänguttag\nconst getPointWithdrawalTransactionsHistory = async (\n fromDate: Date,\n toDate?: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n\n if (toDate) {\n const request: DateTransactionsRequest = {\n from: fromDate,\n to: toDate,\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_USAGES',\n };\n\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getTransactionsHistoryByDates(identity.token, request)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n }\n\n const request: TransactionsRequest = {\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_USAGES',\n };\n const monthTrans: TransactionHistory[] = (\n await externalLoyaltyApi.getMonthTransactionsHistory(identity.token, request, fromDate)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return monthTrans;\n};\n\nconst getPointTransactionsHistory = async (\n fromDate: Date,\n toDate?: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n if (toDate) {\n const request: DateTransactionsRequest = {\n from: fromDate,\n to: toDate,\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_PURCHASE_HISTORY',\n };\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getTransactionsHistoryByDates(identity.token, request)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n }\n\n // If no toDate, then this current month\n const request: TransactionsRequest = {\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_PURCHASE_HISTORY',\n };\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getMonthTransactionsHistory(identity.token, request, fromDate)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n};\n\n// Köphistorik\nconst getMonetaryPurchaseTransactionsHistory = async (\n fromDate: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n return externalLoyaltyApi.getMonthMonetaryTransactionsHistory(\n identity.token,\n fromDate,\n page,\n size,\n );\n};\n\nconst getPointsSummaryYearly = async () => {\n const identity = await getAuthToken();\n const pointsSummaryYearly = await externalLoyaltyApi.getPointsSummaryYearly(identity.token);\n return pointsSummaryYearly;\n};\n\nconst cachedVouchers: { [key: string]: VoucherDetailsResponse } = {};\n\nconst getVoucherDetails = async (id: string) => {\n if (cachedVouchers[id]) {\n return cachedVouchers[id];\n }\n\n const identity = await getAuthToken();\n const voucher = await externalLoyaltyApi.getVoucherDetails(id, identity.token);\n cachedVouchers[id] = voucher;\n return voucher;\n};\n\nconst purchaseOffer = async (offerId: number, specialCredentials: PurchaseOfferRequest) => {\n const identity = await getAuthToken();\n const offer = await externalLoyaltyApi.purchaseOffer(\n offerId,\n specialCredentials,\n identity.token,\n );\n return offer;\n};\n\nconst autoVoucherStatus = async () => {\n const identity = await getAuthToken();\n // If voucher has mmid, then it is on\n const voucherResult = await externalLoyaltyApi.getAutoVoucherStatus(identity.token);\n return voucherResult?.mmid !== 0 ? 'On' : 'Off';\n};\n\nconst activateAutoVoucher = async () => {\n const identity = await getAuthToken();\n await externalLoyaltyApi.activateAutoVoucher(identity.token);\n return true;\n};\n\nconst deactivateAutoVoucher = async () => {\n const identity = await getAuthToken();\n await externalLoyaltyApi.deactivateAutoVoucher(identity.token);\n return true;\n};\n\nconst getConnectedCards = async () => {\n const identity = await getAuthToken();\n const cards = await externalLoyaltyApi.getConnectedCards(identity.token);\n if (cards === null) {\n return [];\n }\n return cards;\n};\n\nconst deleteConnectedCard = async (id: string) => {\n const identity = await getAuthToken();\n const success = await externalLoyaltyApi.deleteConnectedCard(id, identity.token);\n return success;\n};\n\nconst addHouseholdMember = async (personalNumber: string) => {\n const identity = await getAuthToken();\n const success = await externalLoyaltyApi.addHouseholdMember(personalNumber, identity.token);\n return success;\n};\n\nconst getMembershipNames = async () => {\n const identity = await getAuthToken();\n const membershipNames = await externalLoyaltyApi.getMembershipNames(identity.token);\n return membershipNames?.associations;\n};\n\nconst pointshopFlow = {\n getExpiringPoints,\n getEligibleForBonus,\n getHouseholdMembers,\n getPointBalance,\n getPreviousMonthBonus,\n getPointsMatrixStructureLevel,\n getPointsSummary,\n getPointsSummaryYearly,\n getPointWithdrawalTransactionsHistory,\n getPointTransactionsHistory,\n getMonetaryPurchaseTransactionsHistory,\n getVoucherDetails,\n purchaseOffer,\n autoVoucherStatus,\n activateAutoVoucher,\n deactivateAutoVoucher,\n getConnectedCards,\n deleteConnectedCard,\n addHouseholdMember,\n getMembershipNames,\n};\n\nexport default pointshopFlow;\n","import type { VarianceData } from '../hybris/hybrisOrder';\nimport type { HybrisProduct } from '../hybris/hybrisProduct';\nimport type { PriceData } from '../priceData/priceData';\n\nexport interface Order {\n actualDeliveryDate?: Date;\n code: string;\n subtotalPriceData: PriceData;\n subtotalWithoutDiscountPriceData: PriceData;\n totalProductPriceWithDiscounts: PriceData;\n totalDiscountsPriceData: PriceData;\n totalPriceData: PriceData;\n productDiscountsPriceData: PriceData;\n appliedOrderPromotions: PromotionResult[];\n appliedVouchers: Voucher[];\n totalPriceWithExtraAmountToReservePriceData: PriceData;\n extraAmountToBeReserved: number;\n deliveryCostPriceData: PriceData;\n deliveryMode: OrderDeliveryMode;\n totalTaxValues: TaxValue[];\n totalTax: Price;\n productIds: string[];\n isPartOfSubscription: boolean;\n editable: boolean;\n cancellable: boolean;\n driverMessage?: string;\n timeWindow?: TimeWindow;\n deliveryAddress: Address;\n status: OrderStatus;\n paymentMode: HybrisPaymentName;\n subPaymentInfo: HybrisSubPaymentInfo;\n paymentModeFormatted: string;\n store: string;\n entries: OrderEntry[];\n totalQuantity: number;\n recipeList?: OrderRecipeEntry[];\n stopTime?: Date;\n created: Date;\n subscription?: OrderSubscription | null;\n pointOfService?: OrderPointOfService;\n /**\n * Order code of the first order edited in chain (edit order can be done multiple times whoich creates a chain)\n */\n originalOrderCode?: string;\n\n /**\n * Previous order id in the chain to the current one - the one that was edited to create this order.\n */\n editedOrderCode?: string;\n user?: OrderUser;\n trackingId?: string;\n}\n\ninterface OrderUser {\n name: string;\n uid: string;\n}\nexport interface OrderRecipeEntry {\n calculation: string;\n code: string;\n imageUrl: string;\n name: string;\n portions: number;\n recipeEntries: RecipeEntry[];\n}\n\nexport interface RecipeEntry {\n common: boolean;\n orderEntry: RecipeOrderEntry;\n recipeQuantity: number;\n substituteId: string;\n substituteProductsAmount: string;\n}\n\nexport interface RecipeOrderEntry {\n basePriceData: PriceData;\n // depositData;\n entryNumber: number;\n originalQuantity: number;\n partOfRecipe: boolean;\n pickBasePriceData: PriceData;\n // product: OrderEntry;\n product: HybrisProduct;\n quantity: number;\n recipeQuantity: number;\n replace: boolean;\n totalPriceData: PriceData;\n updateable: boolean;\n}\n\nexport interface OrderEntryPrices {\n // basePriceData: PriceData; // do NOT use this price as it does not take weights into account\n /** Price taking weights into account, before promotion */\n piecePrice: PriceData; //\n // total price including discount if any\n totalPrice?: PriceData;\n // total price without discount\n totalPriceWithoutDiscount?: PriceData;\n discount?: PriceData;\n /** Total piece deposit */\n recycleFeePiecePrice?: PriceData;\n /** Total deposit for orderentry */\n recycleFeeTotalPrice?: PriceData;\n}\n\nexport interface OrderEntry extends OrderEntryPrices {\n entryNumber: number;\n replaceable: boolean;\n promo?: EcomPromotion;\n\n /**\n * The quantity that was actually delivered, might be les than originalQUantity (i.e. due to availability)\n */\n quantity: number;\n\n /**\n * The quantity that user initailly wanted when creating the order\n */\n originalQuantity: number;\n\n /** The quantity shipped with the correct unit, so is orderentry unit grams, this will be in grams */\n shippedUnitQuanity: number;\n\n product: HybrisProduct;\n variance?: VarianceData;\n\n /** If this item has replaced another item in the order, if so, this is the entrynumber of the replaced item */\n replacesEntryNumber?: number;\n unit: OrderEntryUnit;\n}\nexport type OrderEntryUnit = 'pieces' | 'gram';\nexport interface OrderDeliveryMode {\n code: DeliveryModeCode;\n deliveryCostPriceData: PriceData;\n description?: string;\n name: string;\n}\n\nexport interface Voucher {\n voucherCode: string;\n freeShipping: boolean;\n compensationVoucher: boolean;\n externalReason?: string;\n priceData: PriceData;\n name?: string;\n triggeredPromotion: boolean;\n notAppliedHint?: string;\n}\n\n// common domain?\nexport interface Price {\n value: number;\n valueWithoutTax?: number;\n}\n\n// common domain?\nexport interface PromotionResult {\n description: string;\n totalDiscountPriceData: PriceData;\n}\n\nexport interface PromotionOrderEntryConsumed {\n adjustedUnitPrice?: number;\n adjustedUnitPriceWithoutTax?: number;\n code?: string;\n orderEntryNumber?: number;\n quantity?: number;\n}\n\nexport interface TimeWindow {\n stopTime?: Date;\n startTime?: Date; // actual time when timeslot is starting from, i.e. in 12:00 - 15:00, its 12:00\n endTime?: Date; // actual time when timeslot is ending, i.e. in 12:00 - 15:00, its 15:00\n timeSlotTime: string;\n}\n\nexport interface Address {\n companyName?: string;\n phoneNumber: string;\n town: string;\n postalCode: string;\n doorCode?: string;\n street: string;\n lastName: string;\n firstName: string;\n stairs?: string;\n email?: string;\n}\n\nexport type WeekInterval =\n | 'EVERY_WEEK'\n | 'EVERY_SECOND_WEEK'\n | 'EVERY_THIRD_WEEK'\n | 'EVERY_FOURTH_WEEK';\n\nexport interface OrderSubscription {\n frequency?: WeekInterval;\n}\n\nexport interface OrderPointOfService {\n name?: string; // more like id than a name different than storeId\n storeId?: string;\n displayName?: string;\n address: StoreAddress;\n}\n\nexport interface StoreAddress {\n id?: string;\n line1?: string;\n postalCode?: string;\n town?: string;\n}\n\nexport const UnknownPaymentType = 'Okänt betalsätt';\n\nexport const enum PaymentType {\n Klarna_INVOICE = 'FÃ¥ först. Betala sen.',\n Klarna_INVOICE_BUSINESS = 'FÃ¥ först. Betala sen.',\n Klarna_CARD = 'Kort',\n Klarna_ACCOUNT = 'Klarna konto',\n Klarna_FIXED_AMOUNT = 'Dela upp',\n Klarna_DIRECT_DEBIT = 'Betala direkt',\n Klarna_PAY_IN_X = 'Betala senare',\n Klarna_BANK_TRANSFER = 'Banköverföring',\n Klarna_SWISH = 'Swish',\n Klarna_PAY_BY_CARD = 'Kort',\n Klarna_FIXED_SUM_CREDIT = 'Dela upp',\n Punchout_INVOICE = 'Faktura',\n}\n","import type { IExceptionTelemetry } from '@microsoft/applicationinsights-web';\nimport { parseISO } from 'date-fns';\n\nimport { appInsights } from '../../../../appInsights';\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {\n Address,\n Order,\n OrderDeliveryMode,\n OrderEntry,\n OrderRecipeEntry,\n OrderSubscription,\n PromotionResult,\n TimeWindow,\n Voucher,\n} from '../../models/domain/order';\nimport { PaymentType, UnknownPaymentType } from '../../models/domain/order';\nimport type { OrderHistory } from '../../models/domain/orderHistory';\nimport type { HybrisAddress } from '../../models/hybris/hybrisAddress';\nimport type {\n HybrisOrder,\n HybrisOrderDeliveryMode,\n HybrisOrderEntry,\n HybrisOrderSubscription,\n HybrisOrderUnit,\n} from '../../models/hybris/hybrisOrder';\nimport type { HybrisOrderHistory, HybrisTimeWindow } from '../../models/hybris/hybrisOrderHistory';\nimport type { HybrisOrderRecipeEntry } from '../../models/hybris/hybrisOrderRecipeEntry';\nimport type { HybrisPrice } from '../../models/hybris/hybrisPrice';\nimport type {\n HybrisPromotion,\n HybrisPromotionResult,\n} from '../../models/hybris/hybrisPromotionResult';\nimport type { HybrisTaxValue } from '../../models/hybris/hybrisTaxValue';\nimport type { HybrisVoucher } from '../../models/hybris/hybrisVoucher';\nimport type { PriceData } from '../../models/priceData/priceData';\n\nconst mapDeliveryMode = (hDeliveryMode: HybrisOrderDeliveryMode): OrderDeliveryMode => {\n return {\n code: hDeliveryMode.code === 'homedelivery' ? 'homedelivery' : 'pickup',\n deliveryCostPriceData: mapPrice(hDeliveryMode.deliveryCost),\n description: hDeliveryMode.description,\n name: hDeliveryMode.name,\n };\n};\n\nconst mapTimeWindow = (hTimeWindow: HybrisTimeWindow): TimeWindow => {\n return {\n stopTime: hTimeWindow.stopTime ? parseISO(hTimeWindow.stopTime) : undefined,\n startTime: hTimeWindow.startTime ? parseISO(hTimeWindow.startTime) : undefined,\n endTime: hTimeWindow.endTime ? parseISO(hTimeWindow.endTime) : undefined,\n timeSlotTime: hTimeWindow.timeSlotTime,\n };\n};\n\nconst mapAddress = (hAddress: HybrisAddress): Address => {\n return {\n lastName: hAddress.lastName,\n firstName: hAddress.firstName,\n town: hAddress.town,\n postalCode: hAddress.postalCode,\n doorCode: hAddress.doorCode,\n street: hAddress.line1,\n phoneNumber: hAddress.phone,\n companyName: hAddress.companyName,\n stairs: hAddress.stairs,\n email: hAddress.email,\n };\n};\n\nconst mapTax = (hTaxes: HybrisTaxValue): TaxValue => {\n return {\n appliedValue: hTaxes.appliedValue?.value || 0,\n rate: Math.trunc(hTaxes.value),\n };\n};\n\nexport const mapPaymentMode = (\n hPaymentMode: HybrisPaymentName,\n hSubPaymentInfo: HybrisSubPaymentInfo,\n): PaymentType | string => {\n if (hPaymentMode.toLocaleLowerCase() === 'Klarna Checkout'.toLocaleLowerCase()) {\n const klarnaTypes: Record<HybrisSubPaymentInfo, PaymentType> = {\n INVOICE: PaymentType.Klarna_INVOICE,\n INVOICE_BUSINESS: PaymentType.Klarna_INVOICE_BUSINESS,\n CARD: PaymentType.Klarna_CARD,\n ACCOUNT: PaymentType.Klarna_ACCOUNT,\n FIXED_AMOUNT: PaymentType.Klarna_FIXED_AMOUNT,\n DIRECT_DEBIT: PaymentType.Klarna_DIRECT_DEBIT,\n PAY_IN_X: PaymentType.Klarna_PAY_IN_X,\n BANK_TRANSFER: PaymentType.Klarna_BANK_TRANSFER,\n SWISH: PaymentType.Klarna_SWISH,\n PAY_BY_CARD: PaymentType.Klarna_PAY_BY_CARD,\n FIXED_SUM_CREDIT: PaymentType.Klarna_FIXED_SUM_CREDIT,\n };\n return klarnaTypes[hSubPaymentInfo] || UnknownPaymentType;\n }\n if (hPaymentMode === 'Punchout Invoice') {\n return PaymentType.Punchout_INVOICE;\n }\n\n return hPaymentMode || UnknownPaymentType;\n};\n\n/**\n * Mapper from Hybris promotion model to domain one\n */\nconst mapOrderPromoToEcomPromotion = (\n hPromo: HybrisPromotion,\n unit: HybrisOrderUnit,\n { productId, variantId }: { productId: string; variantId?: string },\n) => {\n const base: BaseEcomPromotion = {\n identifier: hPromo.code,\n description: hPromo.description,\n isMemberPrice: hPromo.medmera,\n productId,\n variantId,\n };\n\n if (hPromo.promotionType === 'PERCENTAGE') {\n return {\n ...base,\n type: 'PERCENTAGE',\n percentageDiscount: hPromo.percentageDiscount,\n } as PercentageEcomPromotion;\n }\n\n if (hPromo.promotionType === 'MULTIBUY') {\n return {\n ...base,\n type: 'MULTIBUY',\n numberOfProductRequired: hPromo.numberOfProductRequired,\n bundlePrice: {\n inclTaxPrice: hPromo.bundlePrice,\n exclTaxPrice: undefined, // missing in Hybris\n },\n } as MultiBuyEcomPromotion;\n }\n\n if (hPromo.promotionType === 'FIXED_PRICE') {\n return {\n ...base,\n type: 'FIXED_PRICE',\n fixedPrice: {\n inclTaxPrice:\n unit?.code === 'gram' ? hPromo.fixedUnitPrice * 1000 : hPromo.fixedUnitPrice,\n exclTaxPrice: undefined, // missing in Hybris\n },\n unit: unit?.code === 'gram' ? 'kg' : undefined,\n } as FixedEcomPromotion;\n }\n\n if (hPromo.promotionType === undefined) {\n return undefined;\n }\n\n appInsights.trackException({\n exception: new Error(`Unknown promotion type. Hybris promo: ${hPromo}`),\n } as IExceptionTelemetry);\n\n return undefined;\n};\n\nconst mapOrderEntry = (hEntry: HybrisOrderEntry, order: HybrisOrder) => {\n const ecomPromo = hEntry.appliedPromotions?.length\n ? mapOrderPromoToEcomPromotion(hEntry.appliedPromotions[0].promotion, hEntry.unit, {\n productId: hEntry.product.code,\n variantId: hEntry.variance?.code,\n })\n : undefined;\n\n const totalPrice = mapPrice(hEntry.totalPrice);\n const totalPriceWithoutDiscount = mapPrice(hEntry.totalPriceWithoutDiscount);\n const recycleFeePiecePrice = mapPrice(hEntry.depositData?.deposit);\n const recycleFeeTotalPrice = mapPrice(hEntry.depositData?.totalDeposit);\n const discount = hEntry.discount ? mapPrice(hEntry.discount) : undefined;\n\n const mapped: OrderEntry = {\n entryNumber: hEntry.entryNumber,\n quantity: hEntry.quantity,\n originalQuantity: hEntry.originalQuantity,\n shippedUnitQuanity: mapShippedQuantity(hEntry.entryNumber, order),\n product: hEntry.product,\n variance: hEntry.variance,\n replacesEntryNumber: hEntry.replacesEntryNumber,\n replaceable: hEntry.replace,\n promo: ecomPromo,\n discount,\n totalPriceWithoutDiscount,\n totalPrice,\n piecePrice: mapPrice(hEntry.pickBasePrice),\n recycleFeePiecePrice,\n recycleFeeTotalPrice,\n unit: hEntry.unit.code,\n };\n\n return mapped;\n};\n\nconst mapShippedQuantity = (entryNumber: number, order: HybrisOrder) => {\n if (!order?.consignments?.length) {\n return 0;\n }\n for (let i = 0; i < order.consignments.length; i += 1) {\n const entry = order.consignments[i].entries.find(\n (e) => e.orderEntry.entryNumber === entryNumber,\n );\n if (entry) {\n return entry.shippedQuantity || 0;\n }\n }\n return 0;\n};\n\nexport const mapOrderSubscription = (\n hSubscription?: HybrisOrderSubscription,\n): OrderSubscription | null => {\n if (!hSubscription) {\n return null;\n }\n\n return {\n frequency: hSubscription.frequency,\n };\n};\n\nexport const mapRecipeList = (hRecipeList?: HybrisOrderRecipeEntry[]) => {\n if (!hRecipeList) {\n return undefined;\n }\n\n return hRecipeList.map<OrderRecipeEntry>((hRecipeEntry) => {\n return {\n calculation: hRecipeEntry.calculation,\n code: hRecipeEntry.code,\n imageUrl: hRecipeEntry.imageUrl,\n name: hRecipeEntry.name,\n portions: hRecipeEntry.portions,\n recipeEntries: hRecipeEntry.recipeEntries.map((entry) => {\n return {\n common: entry.common,\n orderEntry: {\n basePriceData: mapPrice(entry.orderEntry?.basePrice),\n entryNumber: entry.orderEntry?.entryNumber,\n originalQuantity: entry.orderEntry?.originalQuantity,\n partOfRecipe: entry.orderEntry?.partOfRecipe,\n pickBasePriceData: mapPrice(entry.orderEntry?.pickBasePrice),\n product: entry.orderEntry?.product,\n quantity: entry.orderEntry?.quantity,\n recipeQuantity: entry.orderEntry?.recipeQuantity,\n replace: entry.orderEntry?.replace,\n totalPriceData: mapPrice(entry.orderEntry?.totalPrice),\n updateable: entry.orderEntry?.updateable,\n },\n recipeQuantity: entry.recipeQuantity,\n substituteId: entry.substituteId,\n substituteProductsAmount: entry.substituteProductsAmount,\n };\n }),\n };\n });\n};\n\nconst mapOrder = (hOrder: HybrisOrder): Order => {\n const appliedOrderPromotions = hOrder.appliedOrderPromotions.filter(\n (promo) => !promo.fromVoucher,\n );\n return {\n actualDeliveryDate: hOrder.actualDeliveryDate\n ? parseISO(hOrder.actualDeliveryDate)\n : undefined,\n code: hOrder.code,\n appliedOrderPromotions: appliedOrderPromotions?.map((promo) =>\n mapOrderPromotionResult(promo),\n ),\n appliedVouchers: hOrder.appliedVouchers?.map((voucher) =>\n mapVouchersResult(voucher, hOrder.appliedOrderPromotions),\n ),\n extraAmountToBeReserved: hOrder.extraAmountToBeReserved?.value,\n deliveryCostPriceData: mapPrice(hOrder.deliveryCost),\n deliveryMode: mapDeliveryMode(hOrder.deliveryMode),\n deliveryAddress: mapAddress(hOrder.deliveryAddress),\n productDiscountsPriceData: mapPrice(hOrder.productDiscounts),\n totalProductPriceWithDiscounts: mapPrice(hOrder.totalProductPriceWithDiscounts),\n subtotalWithoutDiscountPriceData: mapPrice(hOrder.subtotalWithoutDiscount),\n totalDiscountsPriceData: mapPrice(hOrder.totalDiscounts),\n totalPriceData: mapPrice(hOrder.totalPrice),\n subtotalPriceData: mapPrice(hOrder.subTotal),\n totalPriceWithExtraAmountToReservePriceData: mapPrice(\n hOrder.totalPriceWithExtraAmountToReserve,\n ),\n totalTaxValues: hOrder.totalTaxValues?.map(mapTax) || [],\n totalTax: hOrder.totalTax,\n editable: hOrder.editable,\n driverMessage: hOrder.driverMessage,\n cancellable: hOrder.cancellable,\n isPartOfSubscription: hOrder.isPartOfSubscription,\n timeWindow: hOrder.timeWindow ? mapTimeWindow(hOrder.timeWindow) : undefined,\n status: mapOrderStatus(hOrder.statusDisplay),\n paymentModeFormatted: mapPaymentMode(hOrder.paymentMode, hOrder.subPaymentInfo),\n paymentMode: hOrder.paymentMode, // needed for ga in OrderCompletePage\n subPaymentInfo: hOrder.subPaymentInfo, // needed for ga in OrderCompletePage\n store: hOrder.store,\n entries: hOrder.entries.filter(Boolean).map((item) => mapOrderEntry(item, hOrder)),\n totalQuantity: hOrder.totalQuantity,\n productIds: hOrder.entries?.map((x) => x.product.code) ?? [],\n recipeList: mapRecipeList(hOrder.orderRecipeList),\n created: new Date(hOrder.created),\n subscription: mapOrderSubscription(hOrder.subscription),\n pointOfService: hOrder.pointOfService,\n originalOrderCode: hOrder.originalOrderCode,\n editedOrderCode: hOrder.editedOrderCode,\n user: hOrder.user,\n trackingId: hOrder?.consignments?.length ? hOrder.consignments[0].trackingID : undefined,\n stopTime: hOrder.stopTime ? parseISO(hOrder.stopTime) : undefined,\n };\n};\n\nconst mapPrice = (hybrisPrice?: Pick<HybrisPrice, 'value' | 'valueWithoutTax'>): PriceData => {\n return {\n inclTaxPrice: hybrisPrice?.value,\n exclTaxPrice: hybrisPrice?.valueWithoutTax,\n };\n};\n\nconst mapVouchersResult = (\n hybrisVocher: HybrisVoucher,\n hybrisOrderPromotions: HybrisPromotionResult[],\n): Voucher => {\n const orderPromotion = hybrisOrderPromotions.find(\n (o) =>\n o.fromVoucher &&\n Array.isArray(o.voucherCodes) &&\n o.voucherCodes.includes(hybrisVocher.voucherCode),\n );\n return {\n voucherCode: hybrisVocher.voucherCode,\n freeShipping: hybrisVocher.freeShipping,\n compensationVoucher: hybrisVocher.compensationVoucher,\n externalReason: hybrisVocher.externalReason,\n priceData: {\n exclTaxPrice: orderPromotion?.totalDiscountWithoutTax,\n inclTaxPrice: hybrisVocher.value,\n },\n name: hybrisVocher.name,\n triggeredPromotion: true,\n notAppliedHint: hybrisVocher.notAppliedHint,\n };\n};\n\nconst mapOrderPromotionResult = (hybrisPromotion: HybrisPromotionResult): PromotionResult => {\n return {\n description: hybrisPromotion.description || '',\n totalDiscountPriceData: {\n inclTaxPrice: hybrisPromotion.totalDiscount,\n exclTaxPrice: hybrisPromotion.totalDiscountWithoutTax,\n },\n };\n};\n\nexport const mapOrderStatus = (status: string): OrderStatus => {\n switch (status) {\n case 'ordered':\n return 'ordered';\n case 'planning':\n return 'planning';\n case 'picking':\n return 'picking';\n case 'picked':\n return 'picked';\n case 'cancelled':\n case 'cancelling':\n return 'cancelled';\n default:\n return 'unknown';\n }\n};\n\nexport const mapOrderHistory = (hOrder: HybrisOrderHistory): OrderHistory | null => {\n if (!hOrder || hOrder.status === 'MIGRATED') return null;\n\n try {\n return {\n active: hOrder.active,\n actualDeliveryDate: parseISO(hOrder.actualDeliveryDate),\n code: hOrder.code,\n editable: hOrder.editable,\n status: mapOrderStatus(hOrder.statusDisplay),\n deliveryMode: {\n code: hOrder.deliveryMode?.code === 'homedelivery' ? 'homedelivery' : 'pickup',\n },\n deliveryWindow: {\n startTime: hOrder.deliveryWindow?.startTime\n ? parseISO(hOrder.deliveryWindow.startTime)\n : undefined,\n endTime: hOrder.deliveryWindow?.endTime\n ? parseISO(hOrder.deliveryWindow.endTime)\n : undefined,\n },\n stopTime: hOrder.stopTime ? parseISO(hOrder.stopTime) : undefined,\n placed: parseISO(hOrder.placed),\n deliveryAddress: hOrder.deliveryAddress,\n pointOfService: hOrder.pointOfService,\n editedOrderCode: hOrder.editedOrderCode,\n partOfSubscription: !!hOrder.partOfSubscription,\n totalPriceData: mapPrice(hOrder.total),\n totalPriceWithExtraAmountToReserve: mapPrice(hOrder.totalPriceWithExtraAmountToReserve),\n cancellable: hOrder.cancellable,\n trackingID: hOrder.trackingID,\n };\n } catch (err) {\n appInsights.trackException(err as IExceptionTelemetry);\n return null;\n }\n};\n\nexport default mapOrder;\n","import { getAuthToken } from '../api/auth/getAuthToken';\nimport mapOrder, { mapOrderHistory } from '../api/order/mapOrder';\nimport type { CreateOrderOptions } from '../api/order/orderApi';\nimport { orderApi, orderDirectApi } from '../api/order/orderApi';\nimport type { SubscriptionFrequency } from '../store/structureDefinitions/checkoutState';\n\nconst orderFlow = {\n createForCurrentCart: async (\n transactionCode: string | null = null,\n subscriptionFrequency: SubscriptionFrequency | null = null,\n ) => {\n const request: CreateOrderOptions = {\n transaction: transactionCode || undefined,\n subscriptionFrequency,\n };\n const order = await orderApi.createForCurrentCart(request);\n return order;\n },\n getOrderHistory: async (currentPage: number, pageSize: number) => {\n const { token, shoppingUserId } = await getAuthToken();\n const resp = await orderDirectApi.getOrderHistory(token)(\n shoppingUserId,\n currentPage,\n pageSize,\n );\n\n const mapped = resp.map(mapOrderHistory).filter(Boolean);\n\n return mapped;\n },\n getOrderById: async (orderId: string, fields?: 'FULL') => {\n const { token, shoppingUserId } = await getAuthToken();\n const resp = await orderDirectApi.getOrderById(token, fields)(shoppingUserId, orderId);\n const mapped = mapOrder(resp);\n return mapped;\n },\n cancelOrder: async (orderId: string) => {\n const { token, shoppingUserId } = await getAuthToken();\n const resp = await orderDirectApi.cancelOrder(token)(shoppingUserId, orderId);\n return resp;\n },\n getOrderCount: async () => {\n const { token, shoppingUserId } = await getAuthToken();\n const resp = await orderDirectApi.getOrderCount(token)(shoppingUserId);\n return resp;\n },\n // used when completing an editorder\n orderEdited: async (cartId: string) => {\n const { token, shoppingUserId } = await getAuthToken();\n const resp = await orderDirectApi.orderEdited(token)(shoppingUserId, cartId);\n return resp;\n },\n};\n\nexport default orderFlow;\n","/* eslint-disable max-classes-per-file */\nimport * as _ from 'underscore';\n\ninterface Deffered<T> {\n resolve?: (value: T | PromiseLike<T>) => void;\n reject?: (reason?: unknown) => void;\n promise: Promise<T>;\n}\n\nconst createDeferred = <T>(): Deffered<T> => {\n let resolveFunc: ((value: T | PromiseLike<T>) => void) | undefined;\n let rejectFunc: ((reason?: unknown) => void) | undefined;\n\n const promise = new Promise<T>((resolve, reject) => {\n resolveFunc = resolve;\n rejectFunc = reject;\n });\n\n return {\n resolve: resolveFunc,\n reject: rejectFunc,\n promise,\n };\n};\n\nconst MAX_CHUNK_IDS_SIZE = 200;\n\nconst constructFullCacheKey = (id: string, productionUnit: string) => `${id}___${productionUnit}`;\n\nexport class ResourceProvider<TItem, TParams extends unknown[] = unknown[]> {\n private ongoingFetchCalls: FetchContext<TItem>[];\n\n private cachedItems: Map<string, TItem>;\n\n private getItems: (\n ids: string[],\n productionUnit: string,\n ...params: TParams\n ) => Promise<TItem[]>;\n\n protected itemUniqueKey: (item: TItem) => string;\n\n constructor(\n getItems: (ids: string[], productionUnit: string, ...params: TParams) => Promise<TItem[]>,\n itemUniqueKey: (item: TItem) => string,\n ) {\n this.ongoingFetchCalls = [];\n this.itemUniqueKey = itemUniqueKey;\n this.getItems = getItems;\n this.cachedItems = new Map();\n }\n\n protected getItemsById(\n _ids: string[],\n productionUnit: string,\n ...params: TParams\n ): Promise<TItem[]> {\n const self = this;\n const deferred = createDeferred<TItem[]>();\n if (!_ids || !_ids.length) {\n return Promise.resolve(<TItem[]>[]);\n }\n\n const ids = _.uniq(_ids);\n\n const { resolvedFromCacheIds, idsToFetch } = self.splitItemsToFetch(ids, productionUnit);\n\n // there is no items to fetch, return cached ones\n if (!idsToFetch.length)\n return Promise.resolve(this.getItemsFromCache(resolvedFromCacheIds, productionUnit));\n\n const pendingFetchPromise = self.getOrGreateItemFetchpromise(\n idsToFetch,\n productionUnit,\n ...params,\n );\n\n pendingFetchPromise.deferred.promise.then(\n (items: TItem[]) => {\n self.insertItems(items, productionUnit);\n self.removeFetchPromise(pendingFetchPromise);\n deferred.resolve?.(this.getItemsFromCache(ids, productionUnit));\n },\n () => {\n self.removeFetchPromise(pendingFetchPromise);\n deferred.resolve?.(this.getItemsFromCache(resolvedFromCacheIds, productionUnit));\n },\n );\n\n // eslint-disable-next-line no-plusplus\n pendingFetchPromise.queuePosition++;\n // debounce this baby to minimize number of calls\n pendingFetchPromise.debouncedFetch.apply(self);\n return deferred.promise;\n }\n\n insertItems(items: TItem[], productionUnit: string) {\n const self = this;\n if (!items || !items.length) return;\n\n _.each(items, (item) => {\n self.cachedItems.set(\n constructFullCacheKey(this.itemUniqueKey(item), productionUnit),\n item,\n );\n });\n }\n\n getItemsFromCache(itemIds: string[], productionUnit: string) {\n return itemIds.map((id) => this.getItemFromCache(id, productionUnit)).filter(Boolean);\n }\n\n getItemFromCache(id: string, productionUnit: string) {\n return this.cachedItems.get(constructFullCacheKey(id, productionUnit));\n }\n\n private splitItemsToFetch(ids: string[], productionUnit: string) {\n const self = this;\n\n const result = ids.reduce(\n (acc, id) => {\n const cachedItem = self.cachedItems.get(constructFullCacheKey(id, productionUnit));\n if (cachedItem) {\n return {\n ...acc,\n resolvedFromCacheIds: [...acc.resolvedFromCacheIds, id],\n };\n }\n return {\n ...acc,\n idsToFetch: [...acc.idsToFetch, id],\n };\n },\n { resolvedFromCacheIds: [], idsToFetch: [] } as {\n resolvedFromCacheIds: string[];\n idsToFetch: string[];\n },\n );\n\n return result;\n }\n\n private getOrGreateItemFetchpromise(\n idsToFetch: string[],\n productionUnit: string,\n ...params: TParams\n ): FetchContext<TItem> {\n const self = this;\n\n if (!self.ongoingFetchCalls) {\n self.ongoingFetchCalls = [];\n }\n\n let pendingFetchPromise = self.ongoingFetchCalls.find((ongoingFetchCall) => {\n return ongoingFetchCall.started === false;\n });\n if (!pendingFetchPromise) {\n pendingFetchPromise = new FetchContext<TItem>();\n pendingFetchPromise.debouncedFetch = _.debounce(() => {\n if (pendingFetchPromise) {\n pendingFetchPromise.started = true;\n if (!pendingFetchPromise.itemIds.length) {\n pendingFetchPromise.deferred.resolve?.([]);\n return;\n }\n\n const chunks = _.chunk(pendingFetchPromise.itemIds, MAX_CHUNK_IDS_SIZE);\n const promises = chunks.reduce(\n (acc, chunkedIds) => [\n ...acc,\n self.getItems(chunkedIds, productionUnit, ...params),\n ],\n [] as Promise<TItem[]>[],\n );\n\n Promise.all(promises)\n .then((items) => {\n if (pendingFetchPromise)\n pendingFetchPromise.deferred.resolve?.(items.flat());\n })\n .catch(() => {\n if (pendingFetchPromise) {\n pendingFetchPromise.deferred.reject?.([]);\n }\n });\n }\n }, 30);\n self.ongoingFetchCalls.push(pendingFetchPromise);\n }\n _.each(idsToFetch, (itemId) => {\n if (pendingFetchPromise) {\n pendingFetchPromise.itemIds.push(itemId);\n }\n });\n return pendingFetchPromise;\n }\n\n private removeFetchPromise(pendingFetchPromise: FetchContext<TItem>) {\n const self = this;\n // eslint-disable-next-line no-plusplus, no-param-reassign\n pendingFetchPromise.queuePosition--;\n if (pendingFetchPromise.queuePosition <= 0) {\n self.ongoingFetchCalls = _.reject(self.ongoingFetchCalls, (ongoingFetchCall) => {\n return ongoingFetchCall === pendingFetchPromise;\n });\n }\n }\n}\n\nclass FetchContext<T> {\n deferred: Deffered<T[]>;\n\n itemIds: string[];\n\n started: boolean;\n\n debouncedFetch: Function;\n\n queuePosition: number;\n\n constructor() {\n this.queuePosition = 0;\n this.started = false;\n this.itemIds = [];\n this.deferred = createDeferred<T[]>();\n this.debouncedFetch = () => {};\n }\n}\n","import getDirectPersonalizationSearchAxiosClient, {\n prepareRequestParams,\n} from '../../../search/api/directPersonalizationAxiosClient';\n\nexport const getProductsByIds = async (\n ids: string[],\n storeId: string,\n customerGroups?: string[],\n device?: string,\n) => {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/entities/by-id',\n ids,\n { params: prepareRequestParams(storeId, customerGroups, device, false) },\n );\n return response.data?.results?.items || [];\n};\n\nexport const directProductApi = {\n getProductsByIds,\n};\n","import { ResourceProvider } from '../../../../utility/resourceProvider';\nimport { getProductsByIds } from '../../api/products/directProductApi';\nimport { mapLoopProduct } from './mapProduct';\n\ntype GetProductsbyIdsRestParams = ExtractParamsSkipTwo<Parameters<typeof getProductsByIds>>;\n\nexport class DirectProductProvider extends ResourceProvider<\n ApiLoopProduct,\n GetProductsbyIdsRestParams\n> {\n private static singleInstance: DirectProductProvider;\n\n static get instance(): DirectProductProvider {\n const i =\n this.singleInstance ||\n (this.singleInstance = new this(getProductsByIds, (item) => item.id));\n\n return i;\n }\n\n getItemsById(ids: string[], productionUnit: string, ...params: GetProductsbyIdsRestParams) {\n return super.getItemsById(ids, productionUnit, ...params);\n }\n\n async getItemsMap(\n ids: string[],\n productionUnit: string,\n ...params: GetProductsbyIdsRestParams\n ) {\n const items = await super.getItemsById(ids, productionUnit, ...params);\n const map = new Map<string, ApiProduct>();\n items.forEach((x) => map.set(this.itemUniqueKey(x), mapLoopProduct(x)));\n return map;\n }\n}\n","import { Cloudinary } from '../../../../utility/cloudinary';\nimport { buildProductUrl } from '../../../ecommerce/utils/urlEcommerceUtils';\nimport { isAttributeNicotine } from '../../utils/productUtils';\nimport { urlFriendlySlug } from '../../utils/sanitizeUtils';\nimport { trimEnd } from '../../utils/stringUtils';\n\nconst mapNavCategory = (navCategory: ApiLoopNavCategory): ApiProductSection[] => {\n const categories: ApiProductSection[] = [];\n\n if (navCategory) {\n // since the categories are upside down, recurse into children first\n if (navCategory.superCategories && navCategory.superCategories.length) {\n const childCategories = mapNavCategory(navCategory.superCategories[0]);\n for (let i = 0; i < childCategories.length; i += 1) {\n categories.push({\n id: childCategories[i].id,\n name: childCategories[i].name,\n escapedName: childCategories[i].escapedName,\n });\n }\n }\n categories.push({\n id: parseInt(navCategory.code, 10),\n name: navCategory.name,\n escapedName: urlFriendlySlug(navCategory.name),\n });\n }\n\n return categories;\n};\n\nconst resolveSections = (navCategories: ApiLoopNavCategory[]): ApiProductSection[][] => {\n const categoryList: ApiProductSection[][] = [];\n\n if (navCategories) {\n for (let i = 0; i < navCategories.length; i += 1) {\n const categories = mapNavCategory(navCategories[i]);\n categoryList.push(categories);\n }\n }\n\n categoryList.sort((a, b) => {\n if (a.length > b.length) return -1;\n if (a.length === b.length) return 0;\n return 1;\n });\n\n return categoryList;\n};\n\nconst resolveProductUrl = (\n productData: { name: string; id: string },\n categoryList: ApiProductSection[][],\n) => {\n if (\n categoryList &&\n categoryList.length > 0 &&\n categoryList[0].some((category) => !category.escapedName)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n `Incomplete navCategory, product id: ${productData.id}, product name: ${productData.name}`,\n );\n }\n\n const productUrl = buildProductUrl(\n productData,\n categoryList[0]?.map((category) => ({\n escapedName: category.escapedName,\n id: category.id.toString(),\n })),\n );\n\n return productUrl;\n};\n\nconst resolveNutritionFacts = (loopNutritionFacts?: ApiLoopNutritionFact[]): ApiNutritionFact[] => {\n let nutritionFacts: ApiNutritionFact[] = [];\n if (loopNutritionFacts) {\n nutritionFacts = loopNutritionFacts.map((nutFact) => ({\n name: nutFact.description,\n value: nutFact.amount?.[0],\n unit: nutFact.unit,\n percentageOfDailyIntake: nutFact.percentageOfDailyIntake,\n }));\n }\n\n return nutritionFacts;\n};\n\nconst filterBadge = (attr: ApiLoopAccreditedTag) => {\n if (!attr.imageUrl || !attr.code) {\n return false;\n }\n\n if (attr.code.toLowerCase() === 'NO_PICTOGRAM'.toLowerCase()) {\n return false;\n }\n\n return true;\n};\n\nconst resolveBadges = (searchProduct: ApiLoopProduct): ApiProductAttribute[] => {\n const mapAccreditedTag = (attr: ApiLoopAccreditedTag) => ({\n identifier: attr.code,\n name: attr.description,\n priority: attr.priority,\n image: {\n url: attr.imageUrl,\n identifier: Cloudinary.imageIdentifier(attr.imageUrl),\n path: Cloudinary.imagePath(attr.imageUrl),\n },\n });\n\n const badges: ApiLoopAccreditedTag[] = [];\n\n if (searchProduct.localProduct) {\n // \"local product\" badge is directly on product for some reason\n badges.push(searchProduct.localProduct);\n }\n\n if (searchProduct.newItem) {\n // \"ny\" badge is directly on product for some reason\n badges.push(searchProduct.newItem);\n }\n\n if (searchProduct.ageRestriction) {\n // \"age restricted\" badge is directly on product for some reason\n badges.push(searchProduct.ageRestriction);\n }\n\n if (\n searchProduct.consumerInformationSymbolCodes &&\n searchProduct.consumerInformationSymbolCodes.length > 0\n ) {\n const consumerInformationBadges = searchProduct.consumerInformationSymbolCodes.filter(\n (badge) => !isAttributeNicotine(badge.code),\n );\n badges.push(...consumerInformationBadges);\n }\n\n if (searchProduct.accreditedTags && searchProduct.accreditedTags.length > 0) {\n badges.push(...searchProduct.accreditedTags);\n }\n\n const mappedBadges = badges\n .sort((a, b) => b.priority - a.priority)\n .filter(filterBadge) // descending by priority, highest priority will be rendered first\n .map(mapAccreditedTag);\n\n return mappedBadges;\n};\n\nconst resolveHealthBadges = (searchProduct: ApiLoopProduct): ApiProductAttribute[] => {\n const mapAccreditedTag = (attr: ApiLoopAccreditedTag) => ({\n identifier: attr.code,\n name: attr.description,\n priority: attr.priority,\n image: {\n url: attr.imageUrl,\n identifier: Cloudinary.imageIdentifier(attr.imageUrl),\n path: Cloudinary.imagePath(attr.imageUrl),\n },\n });\n\n if (!searchProduct.healthSafetyLabels) {\n return [];\n }\n\n return searchProduct.healthSafetyLabels.filter(filterBadge).map(mapAccreditedTag);\n};\n\nconst resolveVariants = (searchProductVariants?: ApiLoopProductVariant[]) => {\n const variances =\n searchProductVariants?.map<ApiProductVariant>((variant) => ({\n id: variant.code,\n name: variant.name,\n priceData: resolvePriceData(variant.priceData),\n promotionPriceData:\n variant.promotionPriceData && resolvePriceData(variant.promotionPriceData),\n weight: undefined,\n })) || [];\n\n return variances;\n};\n\nconst resolvePriceData = (loopPrice?: ApiLoopPriceData) => {\n if (!loopPrice) {\n return undefined;\n }\n\n const mapped: ApiPriceData = {\n inclTaxPrice: loopPrice?.b2cPrice,\n exclTaxPrice: loopPrice?.b2bPrice,\n };\n\n return mapped;\n};\n\nconst resolveConsumerInstructions = (loopConsumerInstructions?: ApiLoopConsumerInstructions) => {\n if (!loopConsumerInstructions) {\n return undefined;\n }\n\n return {\n storageInstructions: loopConsumerInstructions.storageInstructions,\n usageInstructions: loopConsumerInstructions.usageInstructions,\n } as ApiConsumerInstructions;\n};\n\nconst resolveReplacementCountries = (loopReplacementCountries?: ApiLoopCountry[]) => {\n if (!loopReplacementCountries) {\n return undefined;\n }\n\n return loopReplacementCountries.map((country) => {\n return {\n code: country.code,\n value: country.value,\n };\n });\n};\n\nconst resolveMultiBuyPromoDetails = (\n loopOnlinePromotion: ApiLoopProductPromotion,\n searchProduct: ApiLoopProduct,\n) => {\n if (!loopOnlinePromotion.numberOfProductRequired) {\n return undefined;\n }\n\n const mapped: MultiBuyEcomPromotion = {\n type: 'MULTIBUY',\n productId: searchProduct.id,\n variantId: undefined,\n description: loopOnlinePromotion.message,\n maxUseText: loopOnlinePromotion.maxNumberOfUseWithUnit?.value\n ? loopOnlinePromotion.maxNumberOfUseWithUnit.value +\n (loopOnlinePromotion.maxNumberOfUseWithUnit.unit\n ? ` ${loopOnlinePromotion.maxNumberOfUseWithUnit.unit.toLowerCase()}`\n : '')\n : undefined,\n identifier: loopOnlinePromotion.id,\n numberOfProductRequired: loopOnlinePromotion.numberOfProductRequired,\n bundlePrice: {\n inclTaxPrice: loopOnlinePromotion.priceData.b2cPrice,\n exclTaxPrice: loopOnlinePromotion.priceData.b2bPrice,\n },\n isMemberPrice: loopOnlinePromotion.medMeraRequired,\n };\n\n return mapped;\n};\nconst resolveFixedPricePromoDetails = (\n loopOnlinePromotion: ApiLoopProductPromotion,\n searchProduct: ApiLoopProduct,\n) => {\n let unit: 'st' | 'kg' | undefined;\n\n switch (searchProduct.salesUnit) {\n case 'pieces':\n case 'Styck':\n unit = 'st';\n break;\n case 'Vikt':\n case 'kg':\n unit = 'kg';\n break;\n default:\n break;\n }\n\n const mapped: FixedEcomPromotion = {\n type: 'FIXED_PRICE',\n identifier: loopOnlinePromotion.id,\n productId: searchProduct.id,\n variantId: undefined,\n isMemberPrice: loopOnlinePromotion.medMeraRequired,\n fixedPrice: {\n inclTaxPrice: loopOnlinePromotion.priceData?.b2cPrice,\n exclTaxPrice: loopOnlinePromotion.priceData?.b2bPrice,\n },\n fixedPiecePrice: {\n inclTaxPrice: loopOnlinePromotion.piecePriceData?.b2cPrice,\n exclTaxPrice: loopOnlinePromotion.piecePriceData?.b2bPrice,\n },\n maxUseText: loopOnlinePromotion.maxNumberOfUseWithUnit?.value\n ? loopOnlinePromotion.maxNumberOfUseWithUnit.value +\n (loopOnlinePromotion.maxNumberOfUseWithUnit.unit\n ? ` ${loopOnlinePromotion.maxNumberOfUseWithUnit.unit.toLowerCase()}`\n : '')\n : undefined,\n unit,\n };\n\n return mapped;\n};\nconst resolvePercantagePromoDetails = (\n loopOnlinePromotion: ApiLoopProductPromotion,\n searchProduct: ApiLoopProduct,\n) => {\n if (!loopOnlinePromotion.percentageDiscount) {\n return undefined;\n }\n\n const mapped: PercentageEcomPromotion = {\n type: 'PERCENTAGE',\n identifier: loopOnlinePromotion.id,\n productId: searchProduct.id,\n variantId: undefined,\n isMemberPrice: loopOnlinePromotion.medMeraRequired,\n percentageDiscount: loopOnlinePromotion.percentageDiscount,\n maxUseText: loopOnlinePromotion.maxNumberOfUseWithUnit?.value\n ? loopOnlinePromotion.maxNumberOfUseWithUnit.value +\n (loopOnlinePromotion.maxNumberOfUseWithUnit.unit\n ? ` ${loopOnlinePromotion.maxNumberOfUseWithUnit.unit.toLowerCase()}`\n : '')\n : undefined,\n };\n\n return mapped;\n};\n\nconst parsePromoDetails = (\n loopOnlinePromotion: ApiLoopProductPromotion,\n searchProduct: ApiLoopProduct,\n) => {\n switch (loopOnlinePromotion.type) {\n case 'MULTI_BUY_FIXED_PRICE':\n return resolveMultiBuyPromoDetails(loopOnlinePromotion, searchProduct);\n case 'PERCENTAGE_DISCOUNT':\n return resolvePercantagePromoDetails(loopOnlinePromotion, searchProduct);\n case 'FIXED_PRICE':\n return resolveFixedPricePromoDetails(loopOnlinePromotion, searchProduct);\n default:\n return undefined;\n }\n};\n\nconst resolvePromotions = (searchProduct: ApiLoopProduct) => {\n const promos =\n searchProduct.onlinePromotions\n ?.map((loopPromo) => {\n const promoDetails = parsePromoDetails(loopPromo, searchProduct);\n if (promoDetails) {\n return {\n ...promoDetails,\n priority: loopPromo.priority,\n };\n }\n\n return undefined;\n })\n .filter(Boolean) || [];\n\n return promos;\n};\n\nconst resolveProductBrand = (searchProduct: ApiLoopProduct) => {\n let brand = '';\n\n if (searchProduct.manufacturerName) {\n brand += `${searchProduct.manufacturerName}.`;\n }\n\n if (searchProduct.class) {\n brand += ` ${searchProduct.class}.`;\n }\n\n if (searchProduct.originCountry?.value) {\n brand += ` ${searchProduct.originCountry.value}.`;\n }\n\n brand = trimEnd(brand, '.');\n\n return brand;\n};\nexport const isWeightSalesUnit = (salesUnitCode: string) =>\n salesUnitCode === 'gram' || salesUnitCode === 'kilogram';\n\nexport const mapLoopProduct = (searchProduct: ApiLoopProduct): ApiProduct => {\n const sections = resolveSections(searchProduct.navCategories);\n const productName = searchProduct.variety\n ? `${searchProduct.name} ${searchProduct.variety}`\n : searchProduct.name;\n const productUrl = resolveProductUrl({ name: productName, id: searchProduct.id }, sections);\n\n return {\n id: searchProduct.id,\n ean: searchProduct.ean,\n name: productName,\n url: productUrl,\n manufacturer: resolveProductBrand(searchProduct),\n comparativePriceData: resolvePriceData(searchProduct.comparativePriceData),\n comparativeText: searchProduct.comparativePriceText,\n priceUnit: searchProduct.packageSizeUnit,\n priceData: resolvePriceData(searchProduct.piecePriceData),\n promotionPriceData: resolvePriceData(searchProduct.promotionPriceData),\n promos: resolvePromotions(searchProduct),\n details: {\n content: searchProduct.listOfIngredients,\n description: searchProduct.description,\n size: {\n unit: searchProduct.packageSizeUnit,\n packageSizeInformation: searchProduct.packageSizeInformation,\n size: searchProduct.packageSize,\n },\n nutrientInformation: searchProduct.nutrientInformation,\n nutritionFacts: resolveNutritionFacts(searchProduct.nutrientLinks),\n consumerInformationText: searchProduct.consumerInformationText,\n attributes: resolveBadges(searchProduct),\n healthAttributes: resolveHealthBadges(searchProduct),\n healthSafetySignalWordsCode: searchProduct.healthSafetySignalWordsCode || [],\n healthSafetyPrecautionaryStatementText:\n searchProduct.healthSafetyPrecautionaryStatementText || [],\n healthSafetySignalStatementText: searchProduct.healthSafetySignalStatementText || [],\n maximumStorageTemperature: searchProduct.maxStorageTemperature,\n isAgeLimited: !!searchProduct.ageRestriction,\n isNicotineProduct:\n searchProduct.consumerInformationSymbolCodes?.some((badge) =>\n isAttributeNicotine(badge.code),\n ) || false,\n recycleFeeData: {\n inclTaxPrice:\n searchProduct.depositData?.b2cPrice > 0\n ? searchProduct.depositData?.b2cPrice\n : undefined,\n exclTaxPrice:\n searchProduct.depositData?.b2bPrice > 0\n ? searchProduct.depositData?.b2bPrice\n : undefined,\n },\n alcoholPercentage: searchProduct.percentageOfAlcoholByVolume,\n fromSweden: searchProduct.fromSweden,\n declarationOfOrigin: searchProduct.declarationOfOrigin,\n countryOfOriginCodes: searchProduct.countryOfOriginCodes?.map((item) => item.value),\n catchData: searchProduct.catchData,\n storageStateCode: searchProduct.storageStateCode,\n nonFoodIngredientStatement: searchProduct.nonFoodIngredientStatement,\n pharmaceuticalData: searchProduct.pharmaceuticalData,\n sustainabilityInfo: searchProduct.sustainabilityInfo?.[0],\n sustainabilityInfoApplicable: searchProduct.sustainabilityInfoApplicable,\n },\n historicalPriceData: resolvePriceData(searchProduct.historicalPriceData),\n variants: resolveVariants(searchProduct.variances),\n identifier: searchProduct.id,\n taxRate: 0, // TODO: map\n sections,\n image: {\n url: searchProduct.imageUrl,\n identifier: Cloudinary.imageIdentifier(searchProduct.imageUrl),\n path: Cloudinary.imagePath(searchProduct.imageUrl),\n },\n promotionProductsEans: searchProduct.promotionProductsEans,\n isMagazine: searchProduct.isMagazine,\n consumerInstructions: resolveConsumerInstructions(searchProduct.consumerInstructions),\n compulsoryAdditiveLabelInformation: searchProduct.compulsoryAdditiveLabelInformation,\n replacementCountries: resolveReplacementCountries(searchProduct.replacementCountries),\n originCountry: searchProduct.originCountry,\n variety: searchProduct.variety,\n class: searchProduct.class,\n preparationInstructionsList: searchProduct.preparationInstructionsList || [],\n regulatedProductName: searchProduct.regulatedProductName,\n animalFoodData: searchProduct.animalFoodData,\n regulatedArticleDescription: searchProduct.regulatedArticleDescription,\n };\n};\n","import type {\n ApiLoopCurrentPromotionsRequest,\n ApiLoopRelatedProductsMultipleRequest,\n ApiLoopRelatedProductsRequest,\n} from '../../../search/api/searchRequests';\nimport { productApi } from '../../api/products/productApi';\nimport userFlow from '../userFlow';\nimport { DirectProductProvider } from './directProductProvider';\nimport { mapLoopProduct } from './mapProduct';\n\nconst getProductById = async (productId: string, storeId: string): Promise<ApiProduct | null> => {\n const directResponse = await getProductsByIds([productId], storeId);\n return directResponse?.[0] || null;\n};\n\nconst getProductsByIds = async (productIds: string[], storeId: string): Promise<ApiProduct[]> => {\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n const response = await DirectProductProvider.instance.getItemsById(\n productIds,\n storeId,\n customerGroups,\n );\n const mapped = response?.map(mapLoopProduct);\n return mapped;\n};\n\nconst getProductsByIdsMap = async (productIds: string[], storeId: string) => {\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const response = await DirectProductProvider.instance.getItemsMap(\n productIds,\n storeId,\n customerGroups,\n );\n return response;\n};\n\nconst getProductsForPromotion = async (\n promotionId: string,\n pageSize: number,\n storeId: string,\n overwritePersonalizeCampaigns?: boolean,\n) => {\n const loopRequest: ApiLoopCurrentPromotionsRequest = {\n promotionId,\n resultsOptions: {\n skip: 0,\n take: pageSize,\n },\n customData: {\n personalizeCampaigns: !!overwritePersonalizeCampaigns,\n },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const response = await productApi.getProductsForPromotionLoop(\n loopRequest,\n storeId,\n customerGroups,\n );\n const products = response.results.items?.map(mapLoopProduct) || [];\n\n return {\n products,\n totalItems: response.results.count,\n };\n};\n\nconst getSustainabilityDeclaration = async (productId: string) => {\n const response = await productApi.getSustainabilityDeclaration(productId);\n return response;\n};\n\nconst getRelatedProducts = async (productId: string, storeId: string, pageSize: number = 10) => {\n const requestBody: ApiLoopRelatedProductsRequest = {\n entity: {\n id: productId,\n type: 'Product',\n },\n resultsOptions: {\n skip: 0,\n take: pageSize,\n },\n };\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const response = await productApi.getRelatedProducts(requestBody, storeId, customerGroups);\n return response;\n};\n\nconst getRelatedProductsMultiple = async (\n productIds: string[],\n storeId: string,\n pageSize: number = 10,\n) => {\n const requestBody: ApiLoopRelatedProductsMultipleRequest = productIds.map((productId) => ({\n entity: {\n id: productId,\n type: 'Product',\n },\n resultsOptions: {\n skip: 0,\n take: pageSize,\n },\n }));\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const response = await productApi.getRelatedProductsMultiple(\n requestBody,\n storeId,\n customerGroups,\n );\n return response;\n};\n\nexport const productFlow = {\n getProductById,\n getProductsByIds,\n getProductsByIdsMap,\n getProductsForPromotion,\n getRelatedProducts,\n getSustainabilityDeclaration,\n getRelatedProductsMultiple,\n};\n","import type { ApiDYBaseRequest } from '../../common/api/products/apiProductRequests';\nimport getDirectPersonalizationSearchAxiosClient from '../../search/api/directPersonalizationAxiosClient';\nimport type {\n ApiAnoymousPageviewRequest,\n ApiAnoymousPageviewResponse,\n ApiEventsRequest,\n} from './trackingRequests';\n\nconst prepareEventRequestParams = (\n storeId: string | undefined,\n customerGroups: string[],\n device: string,\n) => {\n const requestParams = {\n store: storeId,\n groups: customerGroups && !!customerGroups.length ? customerGroups.join(',') : null,\n device,\n };\n\n return requestParams;\n};\n\nconst trackingDirectApi = {\n track: async (\n eventRequest: ApiEventsRequest | (ApiEventsRequest & ApiDYBaseRequest),\n device: string,\n ) => {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n await client.post('/events', eventRequest, {\n params: prepareEventRequestParams(undefined, [], device),\n });\n },\n trackAnonymousPageView: async (eventRequest: ApiAnoymousPageviewRequest, device: string) => {\n try {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n const response = await client.post<ApiAnoymousPageviewResponse>(\n '/search/choose',\n eventRequest,\n {\n params: prepareEventRequestParams('', [], device),\n },\n );\n return response.data;\n } catch {\n return { cookies: [] };\n }\n },\n trackPageView: async (eventRequest: ApiAnoymousPageviewRequest, device: string) => {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n const response = await client.post<ApiAnoymousPageviewResponse>(\n '/events/pageview',\n eventRequest,\n {\n params: prepareEventRequestParams(undefined, [], device),\n },\n );\n return response.data;\n },\n};\n\nexport default trackingDirectApi;\n","import { appConfig } from '../../../appConfig';\nimport { Browser } from '../../../utility/browser';\nimport type { TrackPurchaseRequest } from '../../search/models/models';\nimport trackingDirectApi from '../../tracking/api/trackingApi';\nimport type {\n ApiAnoymousPageviewRequest,\n ApiEventEntity,\n ApiEventsRequest,\n ApiTrackEvent,\n} from '../../tracking/api/trackingRequests';\nimport persistance from '../persistance/persistance';\nimport { failSilently } from '../tracking/utils/failSilently';\nimport dynamicYieldFlow, { getDynamicYieldData } from './dynamicYield/dynamicYieldFlow';\n\n/** Sync dynamic yield context, needed for sending events to dynamic yield */\nconst trackPageView = (data: DynamicYieldPageContext, url: string) => {\n failSilently(async () => {\n const dynamicYieldIds = getDynamicYieldData();\n const request: ApiAnoymousPageviewRequest = {\n ...dynamicYieldIds,\n context: {\n page: {\n location: url,\n type: data.type,\n data: data.data,\n },\n },\n };\n const device = Browser.platformType();\n\n const response =\n dynamicYieldIds.user.dyid && dynamicYieldIds.session?.dy\n ? await trackingDirectApi.trackPageView(request, device)\n : await trackingDirectApi.trackAnonymousPageView(request, device);\n\n // Keep session in sync with user\n const sessionId = persistance.dynamicYield.getSessionId();\n dynamicYieldFlow.syncCookies(response.cookies);\n const updatedSessionId = persistance.dynamicYield.getSessionId();\n if (sessionId !== updatedSessionId) {\n if (appConfig.coopUserSettings.isAuthenticated) {\n identify(appConfig.coopUserSettings.shoppingUserId, 'id'); // id is also used as cuidType in the mobile app, thats why its used\n profile(appConfig.coopUserSettings.isCompany);\n }\n }\n })();\n};\n\nconst recipeClick = (clickEvent: RecipeClickTrackingData) => {\n const eventEntity: ApiEventEntity = {\n id: clickEvent.recipeId,\n type: 'RecipesEntity',\n };\n\n const eventsRequest: ApiEventsRequest = {\n events: [\n {\n type: 'click',\n entity: eventEntity,\n },\n ],\n };\n\n const device = Browser.platformType();\n failSilently(() => {\n trackingDirectApi.track(eventsRequest, device);\n })();\n};\n\n/** Use to track if any interaction is used on product inside DY campaign\n * https://dy.dev/docs/engagement\n */\nconst slotClick = (clickEvent: SlotClickTrackingData) => {\n const eventEntity: ApiEventEntity = {\n id: clickEvent.productId,\n slotId: clickEvent.slotId,\n type: 'Product',\n };\n\n const event: ApiTrackEvent = {\n type: 'slotclick',\n entity: eventEntity,\n };\n defaultTrackEvent(event);\n};\n\n/** Use to track click event to personalization api (will go to loop54) */\nconst click = (clickEvent: ClickTrackingData) => {\n const eventEntity: ApiEventEntity = {\n id: clickEvent.productId,\n type: 'Product',\n };\n\n const eventsRequest: ApiEventsRequest = {\n events: [\n {\n type: 'click',\n entity: eventEntity,\n },\n ],\n };\n const device = Browser.platformType();\n failSilently(() => {\n trackingDirectApi.track(eventsRequest, device);\n })();\n};\n\nconst addToCart = (productData: ProductTrackingData[]) => {\n const events = productData.map((data) => {\n const { price, quantity } = calculateTrackingData(data);\n const event: ApiTrackEvent = {\n type: 'addtocart',\n entity: {\n id: data.identifier,\n type: 'Product',\n },\n quantity,\n revenue: price,\n };\n return event;\n });\n defaultTrackEvent(...events);\n};\n\nconst removeFromCart = (productData: ProductTrackingData) => {\n const { price, quantity } = calculateTrackingData(productData);\n\n const event: ApiTrackEvent = {\n type: 'removefromcart',\n entity: {\n id: productData.identifier,\n type: 'Product',\n },\n quantity,\n revenue: price,\n };\n defaultTrackEvent(event);\n};\n\nconst profile = (isCompany: boolean) => {\n const event: ApiTrackEvent = {\n type: 'profile',\n b2bUser: isCompany,\n };\n defaultTrackEvent(event);\n};\n\nconst identify = (cuid: string, cuidType: string) => {\n const event: ApiTrackEvent = {\n type: 'identifyuser',\n cuid,\n cuidType,\n };\n defaultTrackEvent(event);\n};\n\nconst login = () => {\n const event: ApiTrackEvent = {\n type: 'login',\n };\n defaultTrackEvent(event);\n};\n\nconst purchase = (purchaseEvent: TrackPurchaseRequest) => {\n const event: ApiTrackEvent = {\n type: 'purchase',\n orderId: purchaseEvent.orderId,\n revenue: purchaseEvent.revenue,\n cart: purchaseEvent.products.map((e) => ({\n productId: e.productId,\n quantity: e.quantity,\n itemPrice: e.itemPrice,\n })),\n };\n\n defaultTrackEvent(event);\n};\n\nconst calculateTrackingData = (productData: ProductTrackingData) => {\n let { quantity } = productData;\n if (productData.previousQuantity) {\n quantity = Math.abs(productData.quantity - productData.previousQuantity);\n }\n\n const trackedPrice = productData.promotionPrice\n ? productData.promotionPrice\n : productData.price || 0;\n const price = trackedPrice && (quantity * (trackedPrice * 100)) / 100;\n\n return {\n price,\n quantity,\n };\n};\n\nconst defaultTrackEvent = (...events: ApiTrackEvent[]) => {\n const dynamicYieldIds = getDynamicYieldData();\n const eventsRequest: ApiEventsRequest = {\n ...dynamicYieldIds,\n events,\n };\n\n const device = Browser.platformType();\n failSilently(() => {\n trackingDirectApi.track(eventsRequest, device);\n })();\n};\n\nconst trackingFlow = {\n slotClick,\n click,\n addToCart,\n purchase,\n recipeClick,\n trackPageView,\n profile,\n identify,\n removeFromCart,\n login,\n};\n\nexport default trackingFlow;\n","import type { UserAddress, UserAddresses } from '../../store/structureDefinitions/userState';\nimport getDirectHybrisAxiosClient from '../clients/directHybrisAxiosClient';\nimport hybrisAxiosClient from '../clients/hybrisAxiosClient';\nimport type { ApiModifyUserAddressRequest } from './userAddressModels';\n\nconst userAddressApi = {\n // Fetches valid addresses that this user has and is valid for the current cart, user must have zip selected\n fetchForCurrentCart: async (): Promise<UserAddresses[]> => {\n const response = await hybrisAxiosClient.get(\n '/api/hybris/carts/current/addresses/delivery/valid',\n );\n return response.data;\n },\n\n // Fetches all addresses, does not matter what zipcode is used on a cart\n fetchAll: async (): Promise<UserAddress[]> => {\n const response = await hybrisAxiosClient.get('/user/address/current');\n return response.data;\n },\n\n // Fetches all addresses, does not matter what zipcode is used on a cart\n fetchAllPunchout:\n (accessToken: string) =>\n async (\n unitId: string,\n ): Promise<{\n addresses: UserAddress[];\n }> => {\n const response = await getDirectHybrisAxiosClient(accessToken).get(\n `/b2b/unit/${unitId}/addresses`,\n );\n return response.data;\n },\n\n create: async (address: ApiModifyUserAddressRequest): Promise<UserAddress> => {\n const response = await hybrisAxiosClient.post('/user/address/current', address);\n return response.data;\n },\n\n update: async (address: ApiModifyUserAddressRequest): Promise<void> => {\n await hybrisAxiosClient.put('/user/address/current', address);\n },\n\n remove: async (id: string): Promise<void> => {\n return hybrisAxiosClient.delete(`/user/address/current/${id}`);\n },\n};\n\nexport { userAddressApi };\n","import { SeverityLevel } from '@microsoft/applicationinsights-web';\n\nimport { appConfig } from '../../../appConfig';\nimport { appInsights } from '../../../appInsights';\nimport { getAuthToken } from '../api/auth/getAuthToken';\nimport { SyncronQueue } from '../api/SyncronQueue';\nimport { userAddressApi } from '../api/user/userAddressApi';\nimport type { ApiModifyUserAddressRequest } from '../api/user/userAddressModels';\nimport { userApi } from '../api/user/userApi';\nimport userProfileApi from '../api/userProfile/userProfileApi';\nimport persistance from '../persistance/persistance';\nimport type { AppAsyncThunk } from '../store';\nimport { municipalUserInfoActions } from '../store/slices/user/municipalUserInfoSlice';\nimport { userAddressActions } from '../store/slices/user/userAddressesSlice';\nimport { userInfoActions } from '../store/slices/user/userInfoSlice';\nimport { userTypeActions } from '../store/slices/user/userTypeSlice';\nimport type {\n MunicipalUserInfo,\n UserAddress,\n UserInfo,\n UserType,\n} from '../store/structureDefinitions/userState';\nimport { isB2BWindowLocation, isInB2BCrossContext } from '../utils/b2bUtils';\nimport { type CustomerGroup, getAnonymousCustomerGroups } from '../utils/customerGroupsUtils';\n\nconst userFlowQueue = new SyncronQueue();\nconst userInfoQueue = new SyncronQueue();\nconst customersGroupQueue = new SyncronQueue();\nconst userAddressesQueue = new SyncronQueue();\n\nconst createAddress = (request: ApiModifyUserAddressRequest): AppAsyncThunk<UserAddress> => {\n return async (dispatch) => {\n dispatch(userAddressActions.fetching());\n try {\n const userAddress = await userAddressApi.create(request);\n dispatch(userAddressActions.create(userAddress));\n return userAddress;\n } finally {\n dispatch(userAddressActions.idle());\n }\n };\n};\n\nconst editAddress = (address: UserAddress): AppAsyncThunk<UserAddress> => {\n return async (dispatch) => {\n dispatch(userAddressActions.fetching());\n try {\n await userAddressApi.update(address);\n dispatch(userAddressActions.update(address));\n return address;\n } finally {\n dispatch(userAddressActions.idle());\n }\n };\n};\n\nconst deleteAddress = (addressId: string): AppAsyncThunk<string> => {\n return async (dispatch) => {\n dispatch(userAddressActions.fetching());\n try {\n await userAddressApi.remove(addressId);\n dispatch(userAddressActions.remove(addressId));\n return addressId;\n } finally {\n dispatch(userAddressActions.idle());\n }\n };\n};\n\nconst getUserType = (): AppAsyncThunk<UserType> => {\n return async (dispatch) => {\n return userFlowQueue.run(\n async () => {\n const resultAction = await userApi.getTypeOfUser();\n dispatch(userTypeActions.set(resultAction));\n return resultAction;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'getUserType' },\n );\n };\n};\n\nconst customerGroupsMap: Record<string, CustomerGroup> = {\n businessgroup: 'CUSTOMER_COMPANY',\n b2bgroup: 'CUSTOMER_COMPANY',\n privatecustomergroup: 'CUSTOMER_PRIVATE',\n // this is being used in search - if search does not know this value it will break,\n // talk with others/loop if you want to uncomment this\n // ikpgroup: 'CUSTOMER_IKP',\n};\n\nconst loadCustomerGroups = async () => {\n const userId = appConfig.coopUserSettings.shoppingUserId;\n try {\n const { token } = await getAuthToken();\n const result = await userApi.getCustomerGroups(token)(userId);\n const hybrisCustomerGroups =\n result?.userGroups?.filter((x) => !!x.uid).map((x) => x.uid) ?? [];\n const customersGroup = hybrisCustomerGroups.reduce((groups, hGroup) => {\n if (customerGroupsMap[hGroup]) {\n return [...groups, customerGroupsMap[hGroup]];\n }\n return groups;\n }, [] as CustomerGroup[]);\n\n // this information is still unreliable in hybris, so we still take it from login\n if (\n !appConfig.coopUserSettings.isShoppingForAnother &&\n appConfig.coopUserSettings.isMedmeraCustomer\n ) {\n customersGroup.push('CUSTOMER_MEDMERA');\n }\n\n return customersGroup;\n } catch (error) {\n const exError: Error = {\n name: 'Frontend - customer groups load fail',\n message: `Frontend - unable to load customer groups for user: ${userId}`,\n stack: undefined,\n };\n\n appInsights.trackException({\n exception: exError,\n severityLevel: SeverityLevel.Error,\n });\n\n // fallback to local customer groups\n return getAnonymousCustomerGroups();\n }\n};\n\nconst getUserCustomerGroups = (userId: string | null, isAuthenticated: boolean) =>\n customersGroupQueue.run(\n async () => {\n if (!isAuthenticated || !userId) {\n return getAnonymousCustomerGroups();\n }\n\n let customerGroups = persistance.customerGroupsSession.get(userId);\n\n if (customerGroups === undefined) {\n customerGroups = await loadCustomerGroups();\n persistance.customerGroupsSession.add(customerGroups, userId);\n }\n\n return customerGroups;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'getCustomerGroups' },\n );\n\nconst getUserInfo = (noCache = false): AppAsyncThunk<UserInfo> => {\n return async (dispatch) => {\n return userInfoQueue.run(\n async () => {\n const resultAction = await userApi.getUserInfo(noCache);\n dispatch(userInfoActions.set(resultAction));\n return resultAction;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'getUserInfo' },\n );\n };\n};\n\nconst getMunicipalUserInfo = (): AppAsyncThunk<MunicipalUserInfo> => {\n return async (dispatch) => {\n return userInfoQueue.run(\n async () => {\n const resultAction = await userApi.getMunicipalUserInfo();\n dispatch(municipalUserInfoActions.set(resultAction));\n return resultAction;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'getMunicipalUserInfo' },\n );\n };\n};\n\nconst getPunchoutUnit = async () => {\n const { token, shoppingUserId } = await getAuthToken();\n const punchoutUnit = await userApi.getUserPunchoutUnit(token)(shoppingUserId);\n return punchoutUnit;\n};\n\nconst fetchPunchoutAddresses = async () => {\n const { token, shoppingUserId } = await getAuthToken();\n const punchoutUnit = await userApi.getUserPunchoutUnit(token)(shoppingUserId);\n const punchoutAddresses = await userAddressApi.fetchAllPunchout(token)(\n punchoutUnit.orgUnit.uid,\n );\n return punchoutAddresses.addresses;\n};\n\nconst fetchAddresses = (isPunchout: boolean): AppAsyncThunk<UserAddress[]> => {\n return async (dispatch) => {\n return userAddressesQueue.run(\n async () => {\n dispatch(userAddressActions.fetching());\n try {\n let userAddresses: UserAddress[] = [];\n if (isPunchout) {\n userAddresses = await fetchPunchoutAddresses();\n } else {\n userAddresses = await userAddressApi.fetchAll();\n }\n\n dispatch(userAddressActions.setAll(userAddresses));\n return userAddresses;\n } finally {\n dispatch(userAddressActions.idle());\n }\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'fetchUserAddresses' },\n );\n };\n};\n\nconst fetchUserAddresses = async (take?: number, removeDublicateAddresses?: boolean) => {\n let userAddresses: UserAddress[] = [];\n userAddresses = await userAddressApi.fetchAll();\n\n userAddresses.reverse();\n\n if (removeDublicateAddresses) {\n // Function to check if two addresses are the same\n const areAddressesEqual = (address1: UserAddress, address2: UserAddress) => {\n return (\n address1.firstName === address2.firstName &&\n address1.lastName === address2.lastName &&\n address1.town === address2.town &&\n address1.postalCode === address2.postalCode &&\n address1.line1 === address2.line1\n );\n };\n\n // Remove duplicate addresses\n userAddresses = userAddresses.filter((address, index, self) => {\n return self.findIndex((a) => areAddressesEqual(address, a)) === index;\n });\n }\n\n if (take) {\n userAddresses = userAddresses.slice(0, take);\n }\n\n return userAddresses;\n};\n\nconst fetchProfile = async () => {\n const response = await userProfileApi.getCurrentUserProfile();\n\n return response;\n};\n\nconst updateFoodRegisteredCompany = async (foodRegisteredCompany: 'TRUE' | 'FALSE' | 'NOT_SET') => {\n const { token, shoppingUserId } = await getAuthToken();\n return userApi.updateProfile(token)(shoppingUserId, foodRegisteredCompany);\n};\n\nconst getCompensationVochers = async () => {\n const { token, shoppingUserId } = await getAuthToken();\n return userApi.getCompensationVochers(token, shoppingUserId);\n};\n\n/**\n * Get customer groups for the user.\n * If called inside B2B context, it will return fake customer groups so that cross-context mode feels like anonymous mode.\n */\nconst getB2BContextCustomerGroups = async (): Promise<CustomerGroup[]> => {\n if (appConfig.coopSettings.featureFlags.enableB2B) {\n const { privateUserOnCompanySite, companyUserOnPrivateSite } = isInB2BCrossContext({\n isB2BRoute: isB2BWindowLocation(),\n isUserCompany: appConfig.coopUserSettings.isCompany,\n isAuthenticated: appConfig.coopUserSettings.isAuthenticated,\n });\n if (privateUserOnCompanySite) {\n return ['CUSTOMER_COMPANY'];\n }\n if (companyUserOnPrivateSite) {\n return ['CUSTOMER_PRIVATE', 'CUSTOMER_MEDMERA'];\n }\n }\n\n return userFlow.getUserCustomerGroups(\n appConfig.coopUserSettings.shoppingUserId,\n appConfig.coopUserSettings.isAuthenticated,\n );\n};\n\nconst userFlow = {\n createAddress,\n updateAddress: editAddress,\n removeAddress: deleteAddress,\n fetchAddresses,\n fetchUserAddresses,\n getUserType,\n getUserInfo,\n getUserCustomerGroups,\n getB2BContextCustomerGroups,\n fetchProfile,\n getMunicipalUserInfo,\n updateFoodRegisteredCompany,\n getCompensationVochers,\n getPunchoutUnit,\n};\n\nexport default userFlow;\n","import type { ApiException } from '../exceptions/exceptionDefinitions';\n\nexport class AsyncDispatcherError implements Error {\n constructor(error: ApiException) {\n this.exception = error;\n this.name = 'ApiException';\n this.message = error.friendlyMessage;\n }\n\n exception: ApiException;\n\n name: string;\n\n message: string;\n\n stack?: string;\n}\n","import { useInView } from 'react-intersection-observer';\n\nimport type { AnalyticsListOptions } from '../../../../analytics/analyticsHandler';\nimport { storeSelectors } from '../../selectors/storeSelectors';\nimport { ga4ItemsTracking } from '../../tracking/ga4/items';\nimport { useAppSelector } from '../useThunkDispatch';\n\nexport const useBuyableItemGATracking = (\n product: ApiProduct,\n variantId: string | undefined,\n analyticsOptions: AnalyticsListOptions | null,\n) => {\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const [ref] = useInView({\n threshold: 0.5,\n triggerOnce: true,\n onChange: (inView) => {\n if (inView && analyticsOptions) {\n ga4ItemsTracking.viewItemList(product, analyticsOptions);\n }\n },\n });\n\n const handleGaProductClick = () => {\n if (analyticsOptions) {\n ga4ItemsTracking.selectItem(\n product.identifier,\n variantId,\n currentProductionUnit,\n analyticsOptions?.position,\n analyticsOptions,\n );\n }\n };\n\n return { ref, handleGaProductClick };\n};\n","import { useCallback, useEffect } from 'react';\n\nimport { debugSelectors } from '../selectors/debugSelectors';\nimport { useAppSelector } from './useThunkDispatch';\n\nexport const useA11yLogInConsole = () => {\n const { a11yLogsInConsole } = useAppSelector(debugSelectors.selectDebug);\n\n const log = useCallback(\n (...params: Parameters<typeof console.log>) => {\n if (a11yLogsInConsole) {\n // eslint-disable-next-line no-console\n console.log('A11Y logger:', ...params);\n }\n },\n [a11yLogsInConsole],\n );\n\n return log;\n};\n\nexport const useA11yLogInConsoleEffect = (...text: Parameters<typeof console.log>) => {\n const log = useA11yLogInConsole();\n\n useEffect(() => {\n if (text) {\n log(text);\n }\n }, [log, text]);\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nconst useEventCallback = <R = unknown, Args extends unknown[] = unknown[]>(\n cb: (...args: Args) => R,\n) => {\n const ref = useRef(cb);\n useEffect(() => {\n ref.current = cb;\n });\n return useCallback((...args: Args) => ref.current(...args), [ref]);\n};\n\nexport default useEventCallback;\n","import AwesomeDebouncePromise from 'awesome-debounce-promise';\nimport type { AsyncState, AsyncStateStatus, UseAsyncOptions } from 'react-async-hook';\nimport { useAsyncAbortable } from 'react-async-hook';\n\nimport type { ApiException } from '../exceptions/exceptionDefinitions';\nimport { AsyncDispatcherError } from './AsyncDispatcherError';\nimport type { AsyncDispatcherOptions } from './useAsyncDispatcher';\nimport useConstant from './useConstant';\nimport useEventCallback from './useEventCallback';\n\ninterface AsyncAbortableDispatcherOptions<R> extends AsyncDispatcherOptions<R> {\n debounced?: boolean;\n debounceTime?: number;\n}\n\nconst useAsyncAbortableDispatcher = <R = unknown, Args extends unknown[] = unknown[]>(\n func: (abortSignal: AbortSignal, ...args: Args) => Promise<R>,\n params: Args,\n options: AsyncAbortableDispatcherOptions<R>,\n) => {\n const asyncFunction = useConstant(() => {\n if (options.debounced && options.debounceTime) {\n return AwesomeDebouncePromise(func, options.debounceTime);\n }\n return func;\n });\n\n const {\n result,\n error: asyncError,\n execute: asyncExecute,\n reset,\n loading,\n status,\n } = useAsyncAbortable(\n asyncFunction,\n [...params] as Args,\n {\n executeOnMount: options.executeOnMount,\n initialState: (opt) => {\n return {\n ...(opt?.initialState || null),\n result: options?.initialResultState,\n loading: options?.initialLoadingState,\n error: options?.initialErrorState,\n } as AsyncState<R>;\n },\n setLoading: options.keepPreviousResult\n ? (state) => ({ ...state, loading: true })\n : () => ({ loading: true }),\n setError: (error: unknown): AsyncState<R> => {\n // this is the default in react-hook-async\n return {\n status: <AsyncStateStatus>'error',\n loading: false,\n result: undefined,\n error: new AsyncDispatcherError(error as ApiException),\n };\n },\n } as UseAsyncOptions<R>,\n );\n\n const execute = useEventCallback((...args: Args) => {\n return asyncExecute(...args);\n });\n\n return {\n execute,\n result,\n status,\n isLoading: loading,\n error: (asyncError as AsyncDispatcherError | undefined)?.exception,\n clearError: reset,\n };\n};\n\nexport default useAsyncAbortableDispatcher;\n","import { useCallback, useEffect, useRef } from 'react';\nimport type {\n AsyncState,\n AsyncStateStatus,\n UseAsyncOptionsNormalized,\n UseAsyncReturn,\n} from 'react-async-hook';\nimport { useAsyncCallback } from 'react-async-hook';\n\nimport type { ApiException } from '../exceptions/exceptionDefinitions';\nimport { AsyncDispatcherError } from './AsyncDispatcherError';\n\nexport interface AsyncDispatcherOptions<Result> {\n initialLoadingState?: boolean;\n initialErrorState?: Error;\n keepPreviousResult?: boolean;\n executeOnMount?: boolean;\n initialResultState?: Result;\n}\n\nexport type AsyncDispatcherStatus = 'not-requested' | 'loading' | 'success' | 'error';\n\nexport interface AsyncDispatcher<Result, Args extends unknown[] = unknown[]> {\n execute: UseAsyncReturn<Result, Args>['execute'];\n result?: Result;\n error: ApiException;\n clearError: () => void;\n reset: () => void;\n isLoading: boolean;\n status: AsyncDispatcherStatus;\n}\n\n// TODO waiting for memoization in react-async-hook, for now this is a workaround:\nconst useEventCallback = <R = unknown, Args extends unknown[] = unknown[]>(\n cb: (...args: Args) => R,\n) => {\n const ref = useRef(cb);\n useEffect(() => {\n ref.current = cb;\n });\n return useCallback((...args: Args) => ref.current(...args), [ref]);\n};\n\nexport const useAsyncDispatcher = <R = unknown, Args extends unknown[] = unknown[]>(\n asyncFun: (...args: Args) => Promise<R>,\n options?: AsyncDispatcherOptions<R>,\n): AsyncDispatcher<R, Args> => {\n const asyncCall: UseAsyncReturn<R, Args> = useAsyncCallback<R, Args>(\n async (...args: Args) => asyncFun(...args),\n {\n executeOnMount: options && options.executeOnMount,\n initialState: (opt) => {\n if (!opt) {\n return opt;\n }\n\n return {\n ...opt.initialState,\n result: options?.initialResultState,\n loading: options?.initialLoadingState,\n error: options?.initialErrorState,\n };\n },\n setLoading:\n options && options.keepPreviousResult\n ? (state) => ({ ...state, loading: true })\n : () => ({ loading: true }),\n setError: (error: unknown, _asyncState: AsyncState<R>): AsyncState<R> => {\n // this is the default in react-hook-async\n return {\n status: <AsyncStateStatus>'error',\n loading: false,\n result: undefined,\n error: new AsyncDispatcherError(error as ApiException),\n };\n },\n } as UseAsyncOptionsNormalized<R>,\n );\n const execute = useEventCallback(asyncCall.execute);\n\n const resetState = useCallback(() => {\n asyncCall.reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n status: asyncCall.status,\n result: asyncCall.result,\n execute,\n error: (asyncCall.error as AsyncDispatcherError)?.exception,\n reset: resetState,\n clearError: resetState,\n isLoading: asyncCall.loading,\n };\n};\n","import type { ProductAttributeLabel, ProductBadgeProps } from '../models/props/itemTeaserProps';\nimport { filterProductAttributes } from '../utils/productUtils';\n\nexport const useBadges = (labels?: ProductAttributeLabel[]) => {\n const getAppliedBadges = (): ProductBadgeProps[] => {\n if (!labels?.length) {\n return [];\n }\n\n const attributes = filterProductAttributes(labels);\n const badges = attributes.map<ProductBadgeProps>((attribute) => {\n return { alt: attribute.name, url: attribute.image ? attribute.image.url : undefined };\n });\n\n return badges || [];\n };\n\n return getAppliedBadges();\n};\n","import { Helpers } from '../../../utility/helpers';\nimport type { PriceData } from '../models/priceData/priceData';\nimport { PriceType } from '../models/priceData/priceData';\nimport { personalizationTracking } from '../tracking/contextAware/personalizationEvents';\n\ninterface QuantityChangeData extends Omit<ProductTrackingData, 'promotionPrice' | 'price'> {\n promotionPriceData?: PriceData;\n priceData?: PriceData;\n}\n\nconst { trackCartItemQuantityUpdate, trackSlotClick, trackRemoveFromCart, trackAddToCart } =\n personalizationTracking;\n\nconst buyableProductEventsTrackingPriceType = PriceType.IncludeTax; // leave b2c prices for tracking\n\nconst onAddToCartTrack = (quantityChangeData: QuantityChangeData) => {\n trackAddToCart([\n mapToProductTrackingData(quantityChangeData, buyableProductEventsTrackingPriceType),\n ]);\n};\n\nconst onQuantityUpdateTrack = (quantityChangeData: QuantityChangeData) => {\n if (quantityChangeData.quantity > quantityChangeData.previousQuantity) {\n trackCartItemQuantityUpdate(\n mapToProductTrackingData(quantityChangeData, buyableProductEventsTrackingPriceType),\n );\n }\n};\n\nconst onSlotClickTrack = (identifier: string, slotId: string) => {\n trackSlotClick(identifier, slotId);\n};\n\nconst onRemoveFromCartTrack = (quantityChangeData: QuantityChangeData) => {\n trackRemoveFromCart(\n mapToProductTrackingData(quantityChangeData, buyableProductEventsTrackingPriceType),\n );\n};\n\nexport const buyableProductEventsTracking = {\n onAddToCartTrack,\n onQuantityUpdateTrack,\n onRemoveFromCartTrack,\n onSlotClickTrack,\n};\n\nconst mapToProductTrackingData = (\n quantityChangeData: QuantityChangeData,\n priceType: PriceType,\n): ProductTrackingData => {\n return {\n identifier: quantityChangeData.identifier,\n price:\n quantityChangeData?.priceData &&\n Helpers.getPrice(quantityChangeData.priceData, priceType),\n quantity: quantityChangeData.quantity,\n previousQuantity: quantityChangeData.previousQuantity,\n promotionPrice:\n quantityChangeData?.promotionPriceData &&\n Helpers.getPrice(quantityChangeData.promotionPriceData, priceType),\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport _ from 'underscore';\n\nimport type { AnalyticsListOptions } from '../../../analytics/analyticsHandler';\nimport cartItemsSelectors from '../../cart/selectors/cartItemsSelectors';\nimport { storeSelectors } from '../selectors/storeSelectors';\nimport { unsyncedCartItemsSelectors } from '../selectors/unsyncedCartItemsSelectors';\nimport { unsyncedCartItemsActions } from '../store/slices/unsyncedCartItemsSlice';\nimport { CncStep } from '../store/structureDefinitions/uiState';\nimport { cartThunks } from '../thunks/cartThunks';\nimport { sendGaModifyCartEvent } from '../tracking/gaEventCreators';\nimport { useAsyncDispatcher } from './useAsyncDispatcher';\nimport { buyableProductEventsTracking } from './useBuyableProductEventsTracking';\nimport { dispatchSetTo } from './useCncFlyInState';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\nconst initialVariant = (productVariants: ProductDataVariant[]) => {\n if (productVariants && productVariants.length > 0) {\n return productVariants[0];\n }\n\n return null;\n};\n\nconst useExistingCartItemState = (productId: string, variants: ProductDataVariant[]) => {\n const [currentVariant, setCurrentVariant] = useState(initialVariant(variants));\n\n const unsyncedCartItem = useAppSelector((state) =>\n unsyncedCartItemsSelectors.selectUnsyncedCartItemByUniqueId(state, {\n productId,\n variantId: currentVariant?.id,\n }),\n );\n\n const cartItem = useAppSelector((state) =>\n cartItemsSelectors.selectById(state, {\n productId,\n variantId: currentVariant?.id,\n }),\n );\n\n const handleVariantChange = (variantId: string) => {\n const variant = variants?.find((x) => x.id === variantId) || null;\n setCurrentVariant(variant);\n };\n\n useEffect(() => {\n setCurrentVariant(initialVariant(variants));\n }, [setCurrentVariant, variants, productId]);\n\n return {\n cartItem,\n unsyncedCartItem,\n currentVariant,\n handleVariantChange,\n };\n};\n\nexport const useCartDispatchers = (options: UseBuyableProductStateOptions) => {\n const dispatch = useAppDispatch();\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const addToCartDispatcher = useAsyncDispatcher(\n async (\n _productId: string,\n _variantId: string | undefined,\n _quantity: number,\n _onAddToCart?: Function,\n ) => {\n if (!hasActiveStoreSelection) {\n dispatch(\n unsyncedCartItemsActions.addUnsyncedCartItem({\n productId: _productId,\n variantId: _variantId,\n quantity: _quantity,\n analyticsOptions: options?.analyticsOptions,\n }),\n );\n dispatch(dispatchSetTo({ step: CncStep.MiniCart }));\n } else {\n await dispatch(\n cartThunks.updateQuantity(_productId, _variantId, _quantity, options?.isSilent),\n );\n\n sendGaModifyCartEvent(\n _productId,\n _variantId,\n _quantity,\n 0,\n currentProductionUnit,\n options?.analyticsOptions,\n );\n\n if (_onAddToCart) _onAddToCart();\n }\n },\n );\n\n const updateQuantityDispatcher = useAsyncDispatcher(\n async (\n _productId: string,\n _variantId: string | undefined,\n _newQuantity: number,\n _previousQuantity: number,\n _onCartItemQuantityUpdate?: Function,\n ) => {\n await dispatch(\n cartThunks.updateQuantity(_productId, _variantId, _newQuantity, options?.isSilent),\n );\n\n sendGaModifyCartEvent(\n _productId,\n _variantId,\n _newQuantity,\n _previousQuantity,\n currentProductionUnit,\n options?.analyticsOptions,\n );\n\n if (_onCartItemQuantityUpdate) _onCartItemQuantityUpdate();\n },\n );\n\n const removeFromCartDispatcher = useAsyncDispatcher(\n async (\n _productId: string,\n _variantId: string | undefined,\n _previousQuantity: number,\n _onRemoveFromCart?: Function,\n ) => {\n await dispatch(cartThunks.updateQuantity(_productId, _variantId, 0, options?.isSilent));\n\n sendGaModifyCartEvent(\n _productId,\n _variantId,\n 0,\n _previousQuantity,\n currentProductionUnit,\n options?.analyticsOptions,\n );\n\n if (_onRemoveFromCart) _onRemoveFromCart();\n },\n );\n\n return {\n addToCartDispatcher,\n removeFromCartDispatcher,\n updateQuantityDispatcher,\n };\n};\n\nexport const useBuyableState = (\n product: ApiProduct,\n options: UseBuyableProductStateOptions,\n onAddToCartDone?: (previousQuantity: number, newQuantity: number) => void,\n onQuantityUpdateDone?: (previousQuantity: number, newQuantity: number) => void,\n onRemoveFromCartDone?: (previousQuantity: number, newQuantity: number) => void,\n) => {\n const { currentVariant, quantity, handleVariantChange, handleQuantityUpdate } =\n useBuyableProductState(product, {\n isSilent: options.isSilent,\n analyticsOptions: options.analyticsOptions,\n });\n\n const onQuantityUpdate = useCallback(\n (newQuantity: number) => {\n const addToCartDone = () => {\n buyableProductEventsTracking.onAddToCartTrack({\n identifier: product.identifier,\n priceData: product.priceData,\n quantity: newQuantity,\n previousQuantity: quantity,\n promotionPriceData: product.promotionPriceData,\n });\n onAddToCartDone?.(0, newQuantity);\n };\n\n const removeFromCartDone = () => {\n buyableProductEventsTracking.onRemoveFromCartTrack({\n identifier: product.identifier,\n priceData: product.priceData,\n quantity: newQuantity,\n previousQuantity: quantity,\n promotionPriceData: product.promotionPriceData,\n });\n onRemoveFromCartDone?.(quantity, newQuantity);\n };\n\n const quantityUpdateDone = () => {\n buyableProductEventsTracking.onQuantityUpdateTrack({\n identifier: product.identifier,\n priceData: product.priceData,\n quantity: newQuantity,\n previousQuantity: quantity,\n promotionPriceData: product.promotionPriceData,\n });\n onQuantityUpdateDone?.(quantity, newQuantity);\n };\n\n handleQuantityUpdate(\n newQuantity,\n addToCartDone,\n quantityUpdateDone,\n removeFromCartDone,\n );\n },\n [\n onAddToCartDone,\n onQuantityUpdateDone,\n onRemoveFromCartDone,\n handleQuantityUpdate,\n product.identifier,\n product.priceData,\n product.promotionPriceData,\n quantity,\n ],\n );\n\n return {\n currentVariant,\n quantity,\n handleVariantChange,\n onQuantityUpdate,\n };\n};\n\nexport const useBuyableProductState = (\n productData: ProductData,\n options: UseBuyableProductStateOptions,\n) => {\n const { cartItem, unsyncedCartItem, currentVariant, handleVariantChange } =\n useExistingCartItemState(productData.identifier, productData.variants);\n\n const { addToCartDispatcher, removeFromCartDispatcher, updateQuantityDispatcher } =\n useCartDispatchers(options);\n\n const { execute: addToCartDispatcherExecute } = addToCartDispatcher;\n const { execute: removeFromCartDispatcherExecute } = removeFromCartDispatcher;\n const { execute: updateQuantityDispatcherExecute } = updateQuantityDispatcher;\n\n const handleQuantityUpdate = useMemo(\n () =>\n _.debounce(\n (\n _newQuantity: number,\n addToCartCallback?: () => void,\n onQuantityUpdateCallback?: () => void,\n onRemoveFromCartCallback?: () => void,\n ) => {\n if (!cartItem) {\n addToCartDispatcherExecute(\n productData.identifier,\n currentVariant?.id,\n _newQuantity,\n addToCartCallback,\n );\n return;\n }\n\n if (_newQuantity === 0) {\n removeFromCartDispatcherExecute(\n cartItem.productId,\n cartItem.variantId,\n cartItem.quantity,\n onRemoveFromCartCallback,\n );\n } else {\n updateQuantityDispatcherExecute(\n cartItem.productId,\n cartItem.variantId,\n _newQuantity,\n cartItem.quantity,\n onQuantityUpdateCallback,\n );\n }\n },\n 500,\n ),\n [\n addToCartDispatcherExecute,\n cartItem,\n currentVariant?.id,\n productData.identifier,\n removeFromCartDispatcherExecute,\n updateQuantityDispatcherExecute,\n ],\n );\n\n return {\n addToCartDispatcher,\n updateQuantityDispatcher,\n removeFromCartDispatcher,\n currentVariant,\n quantity: cartItem?.quantity || unsyncedCartItem?.quantity || 0,\n handleVariantChange,\n handleQuantityUpdate,\n };\n};\n\ninterface UseBuyableProductStateOptions {\n isSilent: boolean;\n analyticsOptions: AnalyticsListOptions | null;\n}\n\ninterface ProductDataVariant {\n id: string;\n name: string;\n priceData?: ApiPriceData;\n promotionPriceData?: ApiPriceData;\n}\n\ninterface ProductData {\n identifier: string;\n variants: ProductDataVariant[];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback } from 'react';\n\nimport type { IApiStore } from '../../../models/ecommerce/store/storeModel';\nimport { useNavigationTracking } from '../../cnc/hooks/tracking/useCncNavigationTracking';\nimport { storeSelectors } from '../selectors/storeSelectors';\nimport type { AppThunk } from '../store';\nimport { cncUiActions } from '../store/slices/ui/cncUiSlice';\nimport { unsyncedCartItemsActions } from '../store/slices/unsyncedCartItemsSlice';\nimport type {\n StoreChangeNotificationType,\n WeeklyMenuModalType,\n} from '../store/structureDefinitions/modalState';\nimport { FlyInType } from '../store/structureDefinitions/modalState';\nimport { CncStep } from '../store/structureDefinitions/uiState';\nimport { useTopLevelModal } from './useModal';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\nexport type MiniCartNotificationType =\n | StoreChangeNotificationType.deliveryTimeslotSelected\n | StoreChangeNotificationType.pickupTimeslotSelected\n | WeeklyMenuModalType.addToCart;\n\nexport type MiniCartStepNavigationParams = {\n notification: MiniCartNotificationType;\n};\n\nexport type TimeslotsStepNavigationParams = {\n expressStore?: IApiStore;\n};\n\ntype NavigateSetPayload<TParam> =\n | { step: CncStep.MiniCart; param?: MiniCartStepNavigationParams }\n | { step: CncStep.TimeSlots; param?: TimeslotsStepNavigationParams }\n | { step: Exclude<CncStep, CncStep.MiniCart | CncStep.TimeSlots>; param?: TParam };\n\nexport const dispatchNavigateTo =\n <TOutgoingParams>(\n arg: NavigateSetPayload<TOutgoingParams>,\n previewPostalCode: string | null,\n ): AppThunk =>\n (dispatch, getState) => {\n const hasActiveStoreSelection = storeSelectors.hasActiveStoreSelection(getState());\n if (hasActiveStoreSelection || previewPostalCode || arg.step === CncStep.Map) {\n dispatch(cncUiActions.navigateTo({ step: arg.step, param: arg.param }));\n } else {\n dispatch(\n cncUiActions.navigateTo({ step: CncStep.PostalCodeSelector, param: arg.param }),\n );\n }\n };\n\nexport const dispatchSetTo =\n <TOutgoingParams>(arg: NavigateSetPayload<TOutgoingParams>): AppThunk =>\n (dispatch, getState) => {\n const hasActiveStoreSelection = storeSelectors.hasActiveStoreSelection(getState());\n if (!hasActiveStoreSelection) {\n dispatch(cncUiActions.setTo({ step: CncStep.PostalCodeSelector, param: arg.param }));\n return;\n }\n dispatch(cncUiActions.setTo({ step: arg.step, param: arg.param }));\n };\n\nexport const useCncFlyInState = <TIncomingParams = any, TOutgoingParams = any>() => {\n const dispatch = useAppDispatch();\n const { sendGaCloseTrackingEvent } = useNavigationTracking();\n\n const reloadOnClose = useAppSelector((state) => state.ui.cnc.reloadOnClose);\n const previewPostalCode = useAppSelector((state) => state.ui.cnc.previewPostalCode);\n\n const navigationParams: TIncomingParams = useAppSelector(\n (state) => state.ui.cnc.currentStepNavigationParams,\n );\n\n const { isOpen, close } = useTopLevelModal(FlyInType.CncFlyIn);\n\n const afterClose = useCallback(() => {\n sendGaCloseTrackingEvent();\n dispatch(unsyncedCartItemsActions.removeUnsyncedCartItems());\n if (reloadOnClose) {\n window.location.reload();\n }\n }, [dispatch, reloadOnClose, sendGaCloseTrackingEvent]);\n\n const navigateTo = useCallback(\n (args: NavigateSetPayload<TOutgoingParams>) => {\n dispatch(dispatchNavigateTo(args, previewPostalCode));\n },\n [dispatch, previewPostalCode],\n );\n\n const setTo = useCallback(\n (args: NavigateSetPayload<TOutgoingParams>) => {\n dispatch(dispatchSetTo(args));\n },\n [dispatch],\n );\n\n const initCnc = useCallback(() => {\n dispatch(\n dispatchSetTo({\n step: CncStep.MiniCart,\n }),\n );\n }, [dispatch]);\n\n const forceReloadOnClose = useCallback(() => {\n dispatch(cncUiActions.forceReloadOnClose(true));\n }, [dispatch]);\n\n return {\n isOpen,\n close,\n afterClose,\n navigateTo,\n setTo,\n initCnc,\n forceReloadOnClose,\n navigationParams,\n };\n};\n","import { useRef } from 'react';\n\ntype F<T> = { value: T };\n\nexport default function useConstant<T>(callback: () => T): T {\n const ref = useRef<F<T>>();\n\n if (!ref.current) {\n ref.current = { value: callback() };\n }\n\n return ref.current.value;\n}\n","import { useCallback } from 'react';\n\nimport { appConfig } from '../../../appConfig';\nimport { PriceType } from '../models/priceData/priceData';\nimport persistance from '../persistance/persistance';\nimport { sharedUiActions } from '../store/slices/ui/sharedUiSlice';\nimport { useIsB2BRoute } from '../utils/b2bUtils';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\nconst getPriceTypeForContext = (\n preferredPriceType: PriceType | undefined,\n isB2BRoute: boolean,\n isPunchout: boolean,\n) => {\n if (appConfig.coopSettings.featureFlags.enableB2B && !isB2BRoute) {\n return PriceType.IncludeTax;\n }\n\n // Punchout users cant set preferred price type in a toggle\n if (isPunchout) {\n return PriceType.ExcludeTax;\n }\n\n if (preferredPriceType) {\n return preferredPriceType;\n }\n\n return PriceType.IncludeTax;\n};\n\nexport const useCurrentPriceType = () => {\n const preferredPriceType = useAppSelector((state) => state.ui.shared.preferredPriceType);\n const isPunchout = useAppSelector((state) => state.user.punchout?.isPunchout);\n const isB2BRoute = useIsB2BRoute();\n\n const currentPriceType = getPriceTypeForContext(preferredPriceType, isB2BRoute, isPunchout);\n\n const dispatch = useAppDispatch();\n const setPricesWithoutTax = useCallback(() => {\n const userId = appConfig.coopUserSettings.shoppingUserId;\n persistance.priceTypeStorage.setPricesWithoutTax(userId);\n dispatch(sharedUiActions.setPriceType({ preferredPriceType: PriceType.ExcludeTax }));\n }, [dispatch]);\n\n const setPricesWithTax = useCallback(() => {\n const userId = appConfig.coopUserSettings.shoppingUserId;\n persistance.priceTypeStorage.setPricesWithTax(userId);\n dispatch(sharedUiActions.setPriceType({ preferredPriceType: PriceType.IncludeTax }));\n }, [dispatch]);\n\n return {\n currentPriceType,\n setPricesWithTax,\n setPricesWithoutTax,\n };\n};\n","import { useEffect } from 'react';\n\nimport { storeApi } from '../api/store/storeApi';\nimport { unsyncedCartItemsSelectors } from '../selectors/unsyncedCartItemsSelectors';\nimport { storeActions } from '../store/slices/store/storeSlice';\nimport { unsyncedCartItemsActions } from '../store/slices/unsyncedCartItemsSlice';\nimport { cartThunks } from '../thunks/cartThunks';\nimport { useAsyncDispatcher } from './useAsyncDispatcher';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\n/**\n * Use this if you want to keep in sync Store context cookie with Redux store, usually should be used once in an active component tree\n * If you want only the current values, get them directly from Redux store\n */\nconst useCurrentStoreSync = () => {\n const dispatch = useAppDispatch();\n\n const unsyncedCartItems = useAppSelector(unsyncedCartItemsSelectors.selectUnsyncedCartItems);\n\n const setPickupStore = async (pickupPointId: string) => {\n const store = await storeApi.fetchStoreById(pickupPointId);\n dispatch(storeActions.selectPickupStore({ store, pickupPointId }));\n if (unsyncedCartItems?.length) {\n await dispatch(cartThunks.addItems(unsyncedCartItems));\n dispatch(unsyncedCartItemsActions.removeUnsyncedCartItems());\n }\n };\n\n const setDeliveryStore = async (postalCode: string, baseStoreId: string) => {\n const store = await storeApi.fetchStoreById(baseStoreId);\n dispatch(\n storeActions.selectHomeDeliveryStore({\n store,\n postalCode,\n }),\n );\n if (unsyncedCartItems?.length) {\n await dispatch(cartThunks.addItems(unsyncedCartItems));\n dispatch(unsyncedCartItemsActions.removeUnsyncedCartItems());\n }\n };\n\n const { execute: setPickupStoreExecute } = useAsyncDispatcher((pickupPointId: string) =>\n setPickupStore(pickupPointId),\n );\n\n const { execute: setDeliveryStoreExecute } = useAsyncDispatcher(\n (postalCode: string, baseStoreId: string) => setDeliveryStore(postalCode, baseStoreId),\n );\n\n const { selectedPickupPointId, selectedZipCode, productionUnitId } = useAppSelector(\n (state) => state.store,\n );\n\n useEffect(() => {\n if (selectedPickupPointId) {\n setPickupStoreExecute(selectedPickupPointId);\n }\n }, [setPickupStoreExecute, selectedPickupPointId]);\n\n useEffect(() => {\n if (selectedZipCode && productionUnitId) {\n setDeliveryStoreExecute(selectedZipCode, productionUnitId);\n }\n }, [setDeliveryStoreExecute, selectedZipCode, productionUnitId]);\n};\n\nexport default useCurrentStoreSync;\n","import { useEffect, useState } from 'react';\n\ninterface ElementsToUpdate {\n [tag: string]: { property: string; value: string }[];\n}\n\n/**\n * React helmet only handles elements inside the head tag that contain data-react-helmet=\"true\"\n */\nconst useDocumentHeadIsPreparedForReactHelmet = (elementsToUpdateByTag: ElementsToUpdate) => {\n const [readyForReactHelmet, setReadyForReactHelmet] = useState(false);\n\n const stringifiedElements = JSON.stringify(elementsToUpdateByTag);\n\n useEffect(() => {\n const parsedElementsToUpdateByTag = JSON.parse(stringifiedElements) as ElementsToUpdate;\n if (parsedElementsToUpdateByTag) {\n const childrenOfHead = Array.from(document.getElementsByTagName('head')[0].children);\n\n childrenOfHead.forEach((child) => {\n const tagName = child?.tagName?.toLowerCase();\n\n parsedElementsToUpdateByTag[tagName]?.forEach((tagEl) => {\n if (child.getAttribute(tagEl.property) === tagEl.value) {\n child.setAttribute('data-react-helmet', 'true');\n }\n });\n });\n\n setReadyForReactHelmet(true);\n }\n }, [stringifiedElements]);\n\n return readyForReactHelmet;\n};\n\nexport default useDocumentHeadIsPreparedForReactHelmet;\n","import { useElementEvent } from '@coop/hooks';\nimport _ from 'underscore';\n\nexport const useDocumentPropertyHeightSetter = (\n htmlPropertyNameToSet: `--${string}`,\n ref: React.RefObject<HTMLElement>,\n enabled: boolean = true,\n) => {\n const handleResize = _.throttle(() => {\n if (ref.current) {\n const { height } = ref.current.getBoundingClientRect();\n document.documentElement.style.setProperty(htmlPropertyNameToSet, `${height}px`);\n }\n }, 200);\n\n useElementEvent(window, 'resize', handleResize, true, undefined, enabled);\n};\n","import { Cookies } from '../../../../utility/cookies';\nimport { FAVORITE_RECIPE_COOKIE_NAME } from './cookieKeys';\n\nconst CACHE_TIME_DAYS = 365;\n\n/** Stores favourite recipe as EXTERNAL IDs in cookie */\nconst favouriteRecipesAnonymousCookie = {\n get: (): string[] => {\n const rawCookie = Cookies.read(FAVORITE_RECIPE_COOKIE_NAME);\n return (rawCookie && (JSON.parse(rawCookie) as string[])?.map((i) => i.toString())) || [];\n },\n\n add: (externalRecipeId: string): boolean => {\n const state = favouriteRecipesAnonymousCookie.get();\n if (state.includes(externalRecipeId)) {\n return false;\n }\n\n Cookies.create(\n FAVORITE_RECIPE_COOKIE_NAME,\n JSON.stringify([...state, externalRecipeId]),\n CACHE_TIME_DAYS,\n );\n return true;\n },\n\n remove: (externalRecipeId: string): boolean => {\n const state = favouriteRecipesAnonymousCookie.get();\n\n const newState = state.filter((item) => item !== externalRecipeId);\n\n Cookies.create(FAVORITE_RECIPE_COOKIE_NAME, JSON.stringify([...newState]), CACHE_TIME_DAYS);\n return true;\n },\n};\n\nexport default favouriteRecipesAnonymousCookie;\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useEffect } from 'react';\n\nimport { appConfig } from '../../../appConfig';\nimport recipeFlow from '../../recipe/flow/recipeFlow';\nimport { savedFavoriteRecipeKey } from '../../recipe/recipeQueries';\nimport favouriteRecipesAnonymousCookie from '../persistance/cookie/favouriteRecipesAnonymous';\nimport { ErrorGroup } from '../store/structureDefinitions/errorsState';\nimport { ga4RecipesTracking } from '../tracking/ga4/recipes';\nimport { useGroupErrorEffect } from './useGroupError';\n\nexport const fetchFavoriteRecipeIds = async () => {\n let favoriteExternalRecipeIds: string[];\n if (appConfig.coopUserSettings.isAuthenticated) {\n const favoriteRecipes = await recipeFlow.getFavouriteRecipes();\n favoriteExternalRecipeIds =\n favoriteRecipes?.map((i) => i.externalRecipeId.toString()) || [];\n } else {\n favoriteExternalRecipeIds = favouriteRecipesAnonymousCookie.get();\n }\n return favoriteExternalRecipeIds;\n};\n\nexport const useFavoriteRecipeIds = (enabled: boolean = true) => {\n const query = useQuery({\n queryKey: savedFavoriteRecipeKey,\n queryFn: fetchFavoriteRecipeIds,\n staleTime: 5000,\n gcTime: 30000,\n enabled,\n });\n return query;\n};\n\n/**\n * Hook for a single teaser.Must be injected with \"all favorite recipes\" data, either by useFavouriteRecipes or FavoriteRecipeContext\n */\n\nexport const useFavouriteSingleRecipe = (externalRecipeId: string) => {\n const { data: favouriteRecipeExternalIds, isLoading, isError } = useFavoriteRecipeIds();\n useGroupErrorEffect(ErrorGroup.Global, isError);\n const queryClient = useQueryClient();\n\n const save = useMutation({\n mutationFn: (id: string) => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n return saveRecipes(id);\n }\n favouriteRecipesAnonymousCookie.add(externalRecipeId);\n return Promise.resolve(true);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: savedFavoriteRecipeKey });\n },\n });\n useGroupErrorEffect(ErrorGroup.Global, save.isError);\n\n const remove = useMutation({\n mutationFn: (id: string) => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n return removeRecipes(id);\n }\n favouriteRecipesAnonymousCookie.remove(externalRecipeId);\n return Promise.resolve(true);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: savedFavoriteRecipeKey });\n },\n });\n\n useGroupErrorEffect(ErrorGroup.Global, remove.isError);\n\n const isFavourite = !!favouriteRecipeExternalIds?.find((id) => id === externalRecipeId);\n const saveRecipes = async (_externalRecipeId: string) => {\n const res = await recipeFlow.saveFavouriteRecipe(_externalRecipeId);\n return res;\n };\n\n const removeRecipes = async (_externalRecipeId: string) => {\n const res = await recipeFlow.removeFavouriteRecipe(_externalRecipeId);\n return res;\n };\n\n const saveFavouriteRecipe = () => {\n save.mutate(externalRecipeId);\n };\n\n const removeFavouriteRecipe = () => {\n remove.mutate(externalRecipeId);\n };\n\n const onFavouriteRecipeToggleClick = () => {\n if (isFavourite) {\n removeFavouriteRecipe();\n } else {\n saveFavouriteRecipe();\n }\n };\n\n return {\n isFavourite,\n onFavouriteRecipeToggleClick,\n save,\n remove,\n isLoading,\n };\n};\n\nexport const useSingleFavorite = (id: string, name: string) => {\n const {\n isFavourite,\n onFavouriteRecipeToggleClick,\n remove: removeResult,\n save: saveResult,\n isLoading,\n } = useFavouriteSingleRecipe(id);\n\n useEffect(() => {\n if (removeResult.isSuccess && !isFavourite) {\n ga4RecipesTracking.favoriteRecipe.remove(id, name);\n }\n }, [removeResult.isSuccess, isFavourite, id, name]);\n\n useEffect(() => {\n if (saveResult.isSuccess && isFavourite) {\n ga4RecipesTracking.favoriteRecipe.add(id, name);\n }\n }, [saveResult.isSuccess, isFavourite, id, name]);\n\n return {\n isFavourite,\n onFavouriteRecipeToggleClick,\n isLoading,\n };\n};\n","import { useEffect } from 'react';\n\nimport { useFlyInDispatchContext, useFlyInStateContext } from '../contexts/flyInContext';\n\nexport const useFlyInNavigationCloseInterceptor = (close?: () => void) => {\n const { unsetTriedToClose } = useFlyInDispatchContext();\n\n const { setTriedToClose } = useFlyInDispatchContext();\n\n const context = useFlyInStateContext();\n const triedToClose = context?.triedToClose;\n const closeBlocked = context?.block?.closeBlocked;\n\n useEffect(() => {\n if (!closeBlocked && triedToClose && !!close) {\n unsetTriedToClose();\n close();\n }\n }, [triedToClose, closeBlocked, close, unsetTriedToClose]);\n\n return {\n close: setTriedToClose,\n };\n};\n\nexport const useFlyInNavigationBackInterceptor = (back?: () => void) => {\n const { unsetTriedToBack } = useFlyInDispatchContext();\n\n const { setTriedToBack } = useFlyInDispatchContext();\n\n const context = useFlyInStateContext();\n const triedToBack = context?.triedToBack;\n const backBlocked = context?.block?.backBlocked;\n\n useEffect(() => {\n if (!backBlocked && triedToBack && !!back) {\n unsetTriedToBack();\n back();\n }\n }, [triedToBack, backBlocked, back, unsetTriedToBack]);\n\n return {\n back: setTriedToBack,\n };\n};\n\nexport const useFlyInNavigationOutsideClickInterceptor = (outsideClick?: () => void) => {\n const { unsetTriedToOutsideClick } = useFlyInDispatchContext();\n\n const { setTriedToOutsideClick } = useFlyInDispatchContext();\n\n const context = useFlyInStateContext();\n const triedToOutsideClick = context?.triedToOutsideClick;\n const outsideClickBlocked = context?.block?.outsideClickBlocked;\n\n useEffect(() => {\n if (!outsideClickBlocked && triedToOutsideClick && !!outsideClick) {\n unsetTriedToOutsideClick();\n outsideClick();\n }\n }, [outsideClick, outsideClickBlocked, unsetTriedToOutsideClick, triedToOutsideClick]);\n\n return {\n outsideClick: setTriedToOutsideClick,\n };\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\nimport type { ErrorGroup, ErrorState } from '../store/structureDefinitions/errorsState';\n\nconst selectByGroup = createSelector(\n (state: RootState): ErrorState => state.errors,\n (_: RootState, group: ErrorGroup) => group,\n (errors, group: ErrorGroup) => (group ? errors[group] : []),\n);\n\nconst selectFirstByGroup = createSelector(\n (state: RootState): ErrorState => state.errors,\n (_: RootState, group: ErrorGroup) => group,\n (errors, group: ErrorGroup) => {\n if (group) {\n return errors[group].length ? errors[group][0] : null;\n }\n return null;\n },\n);\n\nexport const errorsSelectors = {\n selectByGroup,\n selectFirstByGroup,\n};\n","import { useCallback, useEffect } from 'react';\n\nimport { appConfig } from '../../../appConfig';\nimport type { ApiBaseException, ApiDefaultException } from '../exceptions/exceptionDefinitions';\nimport { isLocalApiDefaultException } from '../exceptions/exceptionUtils';\nimport { errorsSelectors } from '../selectors/errorsSelectors';\nimport { errorsActions } from '../store/slices/errors/errorsSlice';\nimport { ErrorGroup } from '../store/structureDefinitions/errorsState';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\n// remove when react query supports our error type\nconst defaultException: ApiDefaultException = {\n friendlyMessage: appConfig.coopSettings.ecommerce.errorMessage.general,\n code: null,\n field: null,\n type: 'Default',\n};\n\nexport const useAddGroupError = (group: ErrorGroup = ErrorGroup.Global) => {\n const dispatch = useAppDispatch();\n\n const addGroupError = useCallback(\n (error: ApiBaseException = defaultException) =>\n dispatch(errorsActions.addSingle({ group, error })),\n [dispatch, group],\n );\n\n return addGroupError;\n};\n\nexport const useGroupErrorEffect = (\n group: ErrorGroup,\n when: boolean,\n error: ApiBaseException | undefined | null = defaultException,\n) => {\n const addGroupError = useAddGroupError(group);\n\n useEffect(() => {\n if (error && when) {\n addGroupError(error);\n }\n }, [error, when, addGroupError]);\n\n return addGroupError;\n};\n\nexport const useGroupError = (\n group: ErrorGroup,\n error?: ApiBaseException | null,\n clearErrorCallback?: () => void,\n addErrorWhen: (error: ApiBaseException) => boolean = isLocalApiDefaultException,\n) => {\n const firstError = useAppSelector((state) => errorsSelectors.selectFirstByGroup(state, group));\n\n const dispatch = useAppDispatch();\n\n const clearGroupErrors = () => {\n dispatch(errorsActions.clear(group));\n };\n\n const addGroupError = useGroupErrorEffect(group, error ? addErrorWhen(error) : false, error);\n\n const clearErrorCallbackMemoized = useCallback(() => {\n if (clearErrorCallback) {\n clearErrorCallback();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!firstError && clearErrorCallbackMemoized) {\n clearErrorCallbackMemoized();\n }\n }, [firstError, clearErrorCallbackMemoized]);\n\n return { firstError, clearGroupErrors, addGroupError };\n};\n","import { useEffect, useRef } from 'react';\n\nimport { SyncronQueue } from '../api/SyncronQueue';\n\nconst createScriptElement = (scriptElement: HTMLScriptElement) => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n\n // pass all attributes from original script tag\n Array.from(scriptElement.attributes).forEach((attr) => {\n script.setAttribute(attr.name, attr.value);\n });\n\n if (scriptElement.innerHTML) {\n script.append(scriptElement.innerHTML);\n }\n\n return script;\n};\n\nconst useHtmlScriptParser = (html: string, enabled: boolean) => {\n const queue = useRef(new SyncronQueue());\n const scriptsContainerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (enabled) {\n const template = document.createElement('div');\n template.innerHTML = html;\n const scriptsFromRawHtml = Array.from(template.getElementsByTagName('script'));\n\n // we need to create new elements so browser parses them\n const scriptElements = scriptsFromRawHtml.map((script) => createScriptElement(script));\n\n // all scripts dynamically added to the DOM are ALWAYS asynchronous\n // that means that inline scripts that wait for their external ones will fail when added instantly to DOM as they were not loaded yet\n // so resolve scripts in a queue in the order they were added in html string\n const promises = scriptElements.map((exScript) => () => {\n const promise = new Promise((resolve, reject) => {\n if (exScript.src) {\n // eslint-disable-next-line no-param-reassign\n exScript.onload = () => {\n resolve(`${exScript.src} loaded`);\n };\n\n // eslint-disable-next-line no-param-reassign\n exScript.onerror = reject;\n scriptsContainerRef.current?.append(exScript);\n } else {\n scriptsContainerRef.current?.append(exScript);\n resolve('inline script loaded');\n }\n });\n\n return promise;\n });\n\n promises.forEach((func) => queue.current.run(func));\n }\n }, [html, enabled]);\n\n return scriptsContainerRef;\n};\n\nexport default useHtmlScriptParser;\n","import { useIsInsideModal } from '@coop/components';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { v4 } from 'uuid';\n\nimport { modalSelectors } from '../selectors/modalSelectors';\nimport { modalActions } from '../store/slices/modal/modalSlice';\nimport type { ModalType } from '../store/structureDefinitions/modalState';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\n/**\n * This is a hook that handles state for top level modals.\n * Top level modal is the first modal opened on a page, like MiniCart.\n * In most situations you won't use this hook directly, use useModal instead.\n */\nexport const useTopLevelModal = (\n type?: ModalType | string,\n initialState?: boolean,\n uniqueId?: string,\n) => {\n const typeOrGenerated = useRef(type || v4());\n\n const dispatch = useAppDispatch();\n\n const isOpen = useAppSelector((state) =>\n modalSelectors.isModalTypeOpen(state, typeOrGenerated.current, uniqueId),\n );\n\n const close = useCallback(() => {\n dispatch(modalActions.close());\n }, [dispatch]);\n\n const open = useCallback(() => {\n dispatch(modalActions.open({ type: typeOrGenerated.current, id: uniqueId || null }));\n }, [dispatch, uniqueId]);\n\n useEffect(() => {\n if (initialState === true) {\n open();\n }\n if (initialState === false) {\n close();\n }\n }, [open, close, initialState]);\n\n return { isOpen, open, close };\n};\n\n/**\n * This is a hook that handles state for local modals.\n * Local modal is a modal that is opened from inside another modal.\n * DON'T use this hook directly, always use useModal instead.\n */\nconst useLocalModal = (initialState?: boolean) => {\n const [isOpen, setIsOpen] = useState(!!initialState);\n\n const open = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const close = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return { isOpen, open, close };\n};\n\n/**\n * Hook for handling modal state\n * If a modal is opened from inside another modal, it is a local modal and the local modal state will be used\n * If a modal is opened as a first modal on the page, it is a top level modal and the modal state from Redux will be used\n * This hook ensures that there can only be one top level modal at a time. If second top level modal is opened for some reason (i.e. timeslot expiration popup is shown), the first one will be closed.\n *\n * @param type If you want to open the same modal instance from multiple places, set a unique type in ModalType. If you want to control the modal from single place, dom't provide the type and a GUID will be generated for it.\n * @param initialState Initial state of the modal\n * @param uniqueId Use this if you have multiple components at the same time that can trigger the modal\n */\nconst useModal = (type?: ModalType | string, initialState?: boolean, uniqueId?: string) => {\n const {\n isOpen: topLevelModalIsOpen,\n open: topLevelModalOpen,\n close: topLevelModalClose,\n } = useTopLevelModal(type, initialState, uniqueId);\n\n const {\n isOpen: localModallIsOpen,\n open: localModalOpen,\n close: localModalClose,\n } = useLocalModal(!!initialState);\n\n const modalIsInisideAnotherModal = useIsInsideModal();\n\n const close = useCallback(() => {\n if (modalIsInisideAnotherModal) {\n localModalClose();\n } else {\n topLevelModalClose();\n }\n }, [modalIsInisideAnotherModal, localModalClose, topLevelModalClose]);\n\n const open = useCallback(() => {\n if (modalIsInisideAnotherModal) {\n localModalOpen();\n } else {\n topLevelModalOpen();\n }\n }, [modalIsInisideAnotherModal, localModalOpen, topLevelModalOpen]);\n\n const setIsOpen = useCallback(\n (newState: boolean) => {\n if (newState) {\n open();\n } else {\n close();\n }\n },\n [open, close],\n );\n\n const isOpen = modalIsInisideAnotherModal ? localModallIsOpen : topLevelModalIsOpen;\n\n return {\n open,\n close,\n isOpen,\n setIsOpen,\n };\n};\n\nexport default useModal;\n","import { useEffect } from 'react';\n\nimport { modalActions } from '../store/slices/modal/modalSlice';\nimport { useAppDispatch } from './useThunkDispatch';\n\nexport const useModalLoader = (...deps: boolean[]) => {\n const dispatch = useAppDispatch();\n useEffect(() => {\n if (deps.some((loading) => loading)) {\n dispatch(modalActions.loading());\n } else {\n dispatch(modalActions.idle());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, ...deps]);\n};\n","import { personalizationTracking } from '../tracking/contextAware/personalizationEvents';\n\nexport const useRecipeEventsTracking = () => {\n const trackRecipeClick = (identifier: string) => {\n personalizationTracking.trackRecipeClick(identifier);\n };\n\n return {\n trackRecipeClick,\n };\n};\n","import { useEffect } from 'react';\n\nimport type { ApiBaseException, ApiException } from '../exceptions/exceptionDefinitions';\nimport { ErrorGroup } from '../store/structureDefinitions/errorsState';\nimport type { AsyncDispatcher } from './useAsyncDispatcher';\nimport { useGroupError } from './useGroupError';\nimport { useModalLoader } from './useModalLoader';\n\ninterface RequestEffectsOptions<TResult, TError> {\n onSuccess?: (result: TResult) => void;\n onError?: (error: TError) => void;\n onSettled?: () => void;\n}\n\nconst useRequestLoading = <TResult = unknown, TDispatcherArgs extends unknown[] = unknown[]>(\n dispatcher: AsyncDispatcher<TResult, TDispatcherArgs>,\n _siteContextType: ErrorGroup,\n) => {\n useModalLoader(dispatcher.isLoading); // TODO siteContext loaders\n};\n\nconst useRequestErrorHandling = <TResult = unknown, TDispatcherArgs extends unknown[] = unknown[]>(\n dispatcher: AsyncDispatcher<TResult, TDispatcherArgs>,\n siteContextType: ErrorGroup,\n handleAsGlobalErrorWhen?: (error: ApiBaseException) => boolean,\n) => {\n useGroupError(\n siteContextType,\n dispatcher.error,\n dispatcher.clearError,\n handleAsGlobalErrorWhen,\n );\n};\n\nexport const useRequestEffects = <TResult = unknown, TDispatcherArgs extends unknown[] = unknown[]>(\n dispatcher: AsyncDispatcher<TResult, TDispatcherArgs>,\n options: RequestEffectsOptions<TResult, ApiException> = {},\n siteContextType: ErrorGroup = ErrorGroup.Modal,\n handleAsGlobalErrorWhen?: (error: ApiBaseException) => boolean, // this function can be used to omit global error handling for special cases, ex. delivery address special error message when store not found for address\n) => {\n useRequestErrorHandling(dispatcher, siteContextType, handleAsGlobalErrorWhen);\n useRequestLoading(dispatcher, siteContextType);\n\n const { onSuccess, onSettled, onError } = options;\n\n useEffect(() => {\n if (dispatcher.status === 'success' && onSuccess) {\n onSuccess(dispatcher.result!);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatcher.result, dispatcher.status]);\n\n useEffect(() => {\n if ((dispatcher.status === 'success' || dispatcher.status === 'error') && onSettled) {\n onSettled();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatcher.result, dispatcher.status]);\n\n useEffect(() => {\n if (dispatcher.status === 'error' && onError) {\n onError(dispatcher?.error);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatcher.error, dispatcher.status]);\n\n return dispatcher;\n};\n","import classNames from 'classnames';\n\nimport { useIsMobile } from '../components/atoms/ResponsiveBreakpoints';\nimport { useIsInsideModalContext } from '../contexts/siteContext';\n\nexport const useSwiperOverflowClasses = (params?: {\n constrainedX?: boolean;\n constrainedY?: boolean;\n}) => {\n const isInsideModal = useIsInsideModalContext();\n\n const swiperIsXConstrained = isInsideModal || params?.constrainedX;\n const swiperIsYConstrained = !!params?.constrainedY;\n\n const isMobile = useIsMobile();\n\n // shadow must be the same size as space between slides, to not have cut shadows\n const classes = classNames(\n 'swiper-overflow',\n swiperIsYConstrained && 'swiper-overflow--constrainedY',\n isMobile ? 'swiper-overflow20' : 'swiper-overflow10', // mobila has 20, to overflow until the edge of the screen - 20 is the main content's padding\n swiperIsXConstrained && 'swiper-overflow--constrainedX',\n );\n\n return {\n spaceBetween: 10,\n mainSwiperClasses: classes,\n };\n};\n","/* eslint-disable no-restricted-imports */\nimport type { TypedUseSelectorHook } from 'react-redux';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport type { DispatchType, RootState } from '../store';\n\nexport const useAppDispatch: () => DispatchType = useDispatch;\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n","import { userProfileSelectors } from '../selectors/userProfileSelectors';\nimport { useAppSelector } from './useThunkDispatch';\n\nexport const useUserProfile = () => {\n const state = useAppSelector(userProfileSelectors.profile);\n return state;\n};\n\nexport const useIsUserAuthenticated = () => {\n const state = useAppSelector(userProfileSelectors.isAuthenticated);\n return state;\n};\n\nexport const useIsUserAMember = () => {\n const state = useAppSelector(userProfileSelectors.isMember);\n return state;\n};\n\nexport const useIsUserCompany = () => {\n const state = useAppSelector(userProfileSelectors.isCompany);\n return state;\n};\n\nexport const useHasUserAKimCustomerId = () => {\n const state = useAppSelector(userProfileSelectors.hasKimCustomerId);\n return state;\n};\n\nexport const useShoppingUserId = () => {\n const state = useAppSelector(userProfileSelectors.shoppingUserId);\n return state;\n};\n\nexport const useUserId = () => {\n const state = useAppSelector(userProfileSelectors.id);\n return state;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useEffect } from 'react';\n\nimport { userApi } from '../api/user/userApi';\nimport userFlow from '../flow/userFlow';\nimport { getInitialUserType } from '../store/slices/user/userTypeSlice';\nimport { useAsyncDispatcher } from './useAsyncDispatcher';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\nconst useUserType = () => {\n const userTypeState = useAppSelector((state) => state.user.type);\n const dispatch = useAppDispatch();\n const userState = useAsyncDispatcher(() => dispatch(userFlow.getUserType()));\n\n const { execute: loadUserType } = userState;\n useEffect(() => {\n if (!userTypeState.isInitialized) {\n loadUserType();\n }\n }, [userTypeState.isInitialized, loadUserType]);\n\n return userTypeState;\n};\n\nexport const userQueryKeys = {\n type: ['user:type'],\n};\n\nexport const useUserTypeQuery = () => {\n const query = useQuery({\n queryFn: userApi.getTypeOfUser,\n queryKey: userQueryKeys.type,\n initialData: getInitialUserType(),\n });\n\n return query;\n};\n\nexport { useUserType };\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n if (param == null) {\n break;\n }\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","import type { QueryCache } from '@tanstack/react-query';\nimport { QueryClient } from '@tanstack/react-query';\n\nimport {\n epiPageQueryKeys,\n isEpiPageByContentReferenceQueryKey,\n isEpiPageByUrlQueryKey,\n} from '../../episerver/epiQueryKeys';\n\nexport const coopQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ncoopQueryClient.getQueryCache().subscribe((event) => {\n const cache = coopQueryClient.getQueryCache();\n if (event.type === 'added') {\n checkRedundantEpiPaqeQueries(cache);\n }\n});\n\nconst checkRedundantEpiPaqeQueries = (cache: QueryCache) => {\n const allEpiPageQueryKeys = cache\n .findAll({ queryKey: epiPageQueryKeys.all })\n .map((item) => item.queryKey);\n\n if (allEpiPageQueryKeys.length > 0) {\n const keysByUrl = allEpiPageQueryKeys.filter(isEpiPageByUrlQueryKey);\n checkRedundentEpiPaqeQueryByDepthParam(keysByUrl);\n\n const keysByContentReference = allEpiPageQueryKeys.filter(\n isEpiPageByContentReferenceQueryKey,\n );\n checkRedundentEpiPaqeQueryByDepthParam(keysByContentReference);\n }\n};\n\n/**\n * Reduntant means some queries are the same in all aspects except depth parameter.\n */\nconst checkRedundentEpiPaqeQueryByDepthParam = (\n allKeys: (\n | ReturnType<typeof epiPageQueryKeys.getByUrl>\n | ReturnType<typeof epiPageQueryKeys.getByContentReference>\n )[],\n) => {\n const isQueryKeyNearlyEqual = (key1: (typeof allKeys)[0], key2: (typeof allKeys)[0]) => {\n return (\n (key1[1] === 'byUrl' || key1[1] === 'byContentReference') && // for TS to fail if query key type changes\n key1[1] === key2[1] &&\n key1[2] === key2[2] && // the same url or content reference\n key1[3]?.depth !== key2[3]?.depth // depth is different\n );\n };\n\n const unique: (typeof allKeys)[0][] = [];\n allKeys.forEach((queryKey) => {\n if (unique.find((x) => isQueryKeyNearlyEqual(x, queryKey))) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Coop.se performance warning: found multiple query keys for the same content, but with different \"depth\" parameter:',\n '\\n',\n queryKey,\n );\n } else {\n unique.push(queryKey);\n }\n });\n};\n","import type { ListenerMiddlewareInstance } from '@reduxjs/toolkit';\n\nimport cartItemsSelectors from '../../../../cart/selectors/cartItemsSelectors';\nimport { setFullCart } from '../../slices/cart/cartSlice';\nimport type { RootState } from '../../structureDefinitions/cartState';\n\nexport const updateCartRecipeGaTrackingMiddleware = (\n middlewareInstance: ListenerMiddlewareInstance<RootState>,\n) => {\n middlewareInstance.startListening({\n actionCreator: setFullCart,\n effect: async (action, listenerApi) => {\n const cartState = listenerApi.getState();\n const message: EcommerceTrackingMetadata = {\n ecommerce_cart_recipes: cartState.cart.recipes.ids\n .filter(\n (recipeId) =>\n typeof recipeId === 'number' ||\n !Number.isNaN(Number.parseInt(recipeId, 10)),\n )\n .join(','),\n edit_order: cartState.cart.editOrder.isInEditOrderMode,\n };\n\n const cartItems = cartItemsSelectors.selectAllCartItems(cartState);\n if (cartItems) {\n const fullCart = cartItems.map((item) => {\n const trackItem: GaEcommerceItemMinimal = {\n id: item.cartItemData.productId,\n quantity: item.cartItemData.quantity,\n };\n if (item.cartItemData.variantId) {\n trackItem.variantId = item.cartItemData.variantId;\n }\n return trackItem;\n });\n // eslint-disable-next-line func-names\n const updateDatalayer = function (): void {\n // @ts-ignore\n this.set('ecommerce_all_items', null);\n // @ts-ignore\n this.set('ecommerce_all_items', fullCart);\n };\n window.dataLayer.push(updateDatalayer);\n }\n window.dataLayer.push(message);\n },\n });\n};\n","import { createListenerMiddleware } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../structureDefinitions/cartState';\nimport { currentPageMiddleware } from './middlewares/currentPageMiddleware';\nimport { unsyncedAddToCartGaTrackingMiddleware } from './middlewares/unsyncedAddToCartGaTrackingMiddleware';\nimport { updateCartItemGaTrackingMiddleware } from './middlewares/updateCartItemGaTrackingMiddleware';\nimport { updateCartRecipeGaTrackingMiddleware } from './middlewares/updateCartRecipeGaTrackingMiddleware';\n\nconst listenerMiddleware = createListenerMiddleware<RootState>();\n\nunsyncedAddToCartGaTrackingMiddleware(listenerMiddleware);\ncurrentPageMiddleware(listenerMiddleware);\nupdateCartItemGaTrackingMiddleware(listenerMiddleware);\nupdateCartRecipeGaTrackingMiddleware(listenerMiddleware);\n\nexport { listenerMiddleware };\n","import type { ListenerMiddlewareInstance } from '@reduxjs/toolkit';\n\nimport cartItemsSelectors, {\n cartItemUniqueIdPredicate,\n} from '../../../../cart/selectors/cartItemsSelectors';\nimport { storeSelectors } from '../../../selectors/storeSelectors';\nimport { unsyncedCartItemsSelectors } from '../../../selectors/unsyncedCartItemsSelectors';\nimport { sendGaModifyCartEvent } from '../../../tracking/gaEventCreators';\nimport { unsyncedCartItemsActions } from '../../slices/unsyncedCartItemsSlice';\nimport type { RootState } from '../../structureDefinitions/cartState';\n\nexport const unsyncedAddToCartGaTrackingMiddleware = (\n middlewareInstance: ListenerMiddlewareInstance<RootState>,\n) => {\n middlewareInstance.startListening({\n actionCreator: unsyncedCartItemsActions.removeUnsyncedCartItems,\n effect: async (action, listenerApi) => {\n listenerApi.cancelActiveListeners();\n\n const previousState = listenerApi.getOriginalState(); // the effect fires before removeUnsyncedCartItems actually changes the state, thats why we can access previousState\n\n const currentStoreId = storeSelectors.currentProductionUnit(previousState);\n const cartItems = cartItemsSelectors.selectAllCartItems(previousState);\n const unsyncedCartItems =\n unsyncedCartItemsSelectors.selectUnsyncedCartItems(previousState);\n\n const successfulyAddedCartItems = unsyncedCartItems.filter((unsyncedItem) =>\n cartItems.find((cartItem) =>\n cartItemUniqueIdPredicate(cartItem.cartItemData, unsyncedItem),\n ),\n );\n\n successfulyAddedCartItems.filter(Boolean).forEach((cartItem) => {\n sendGaModifyCartEvent(\n cartItem.productId,\n cartItem.variantId,\n cartItem.quantity,\n 0,\n currentStoreId,\n cartItem?.analyticsOptions,\n );\n });\n },\n });\n};\n","import type { ListenerMiddlewareInstance } from '@reduxjs/toolkit';\n\nimport { sendGaVirtualPageView } from '../../../tracking/virtualPageView';\nimport { currentPageActions } from '../../slices/currentPage/currentPageSlice';\nimport type { RootState } from '../../structureDefinitions/cartState';\n\n/**\n * The virtualPageView event is send inside, only because we need to send it FROM the second URL change onwards - the first page load is tracked in GTM as a normal page view, not virtual\n */\nexport const currentPageMiddleware = (\n middlewareInstance: ListenerMiddlewareInstance<RootState>,\n) => {\n middlewareInstance.startListening({\n actionCreator: currentPageActions.setPageGaData,\n effect: async (action, listenerApi) => {\n listenerApi.cancelActiveListeners();\n\n const { mountCounter, canonicalPathName, gaPageTypeName, title, queryString } =\n listenerApi.getState().currentPage;\n\n if (mountCounter > 1 && gaPageTypeName && canonicalPathName && title) {\n sendGaVirtualPageView({\n pathName: canonicalPathName, // pathname is from canonical, but the query string is from current location, since canonical will not have full query string parameters\n queryString,\n pageType: gaPageTypeName,\n pageTitle: title,\n });\n }\n },\n });\n};\n","import type { ListenerMiddlewareInstance } from '@reduxjs/toolkit';\n\nimport cartItemsSelectors from '../../../../cart/selectors/cartItemsSelectors';\nimport { cartActions } from '../../slices/cart/cartItemsSlice';\nimport type { RootState } from '../../structureDefinitions/cartState';\n\nexport const updateCartItemGaTrackingMiddleware = (\n middlewareInstance: ListenerMiddlewareInstance<RootState>,\n) => {\n middlewareInstance.startListening({\n actionCreator: cartActions.updateCartItem,\n effect: async (action, listenerApi) => {\n listenerApi.cancelActiveListeners();\n\n const cartState = listenerApi.getState();\n const cartItems = cartItemsSelectors.selectAllCartItems(cartState);\n if (cartItems) {\n const fullCart = cartItems.map((item) => {\n const trackItem: GaEcommerceItemMinimal = {\n id: item.cartItemData.productId,\n quantity: item.cartItemData.quantity,\n };\n if (item.cartItemData.variantId) {\n trackItem.variantId = item.cartItemData.variantId;\n }\n return trackItem;\n });\n // eslint-disable-next-line func-names\n window.dataLayer.push(function (): void {\n // @ts-ignore\n this.set('ecommerce_all_items', null);\n // @ts-ignore\n this.set('ecommerce_all_items', fullCart);\n });\n }\n },\n });\n};\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport cncUiReducer from './cncUiSlice';\nimport debugReducer from './debugSlice';\nimport sharedUiReducer from './sharedUiSlice';\n\nconst combined = combineReducers({\n cnc: cncUiReducer,\n shared: sharedUiReducer,\n debug: debugReducer,\n});\n\nexport default combined;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\n\nconst initialState = () => {\n return {\n isPunchout: appConfig.coopUserSettings.punchout.isPunchout,\n postUrl: appConfig.coopUserSettings.punchout.postUrl,\n specId: appConfig.coopUserSettings.punchout.specId,\n };\n};\n\nconst slice = createSlice({\n name: 'punchoutUserInfo',\n initialState: initialState(),\n reducers: {},\n});\n\nexport const { reducer: punchoutUserInfoReducer, actions: punchoutUserInfoActions } = slice;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\n\ninterface UserProfileState {\n id: string;\n medmeraId?: number;\n isCompany?: boolean;\n isMunicipal?: boolean;\n firstName?: string;\n lastName?: string;\n email: string;\n isAuthenticated: boolean;\n hasKimCustomerId: boolean;\n shoppingUserId: string;\n isEpiUser: boolean;\n}\n\nconst getInitialState = () => {\n if (!appConfig.coopUserSettings.isAuthenticated || !appConfig.coopUserSettings.profile) {\n return null;\n }\n\n const profile: UserProfileState = {\n id: appConfig.coopUserSettings.profile.id,\n medmeraId: appConfig.coopUserSettings.profile.medmeraId,\n isCompany: appConfig.coopUserSettings.profile.isCompany,\n isMunicipal: appConfig.coopUserSettings.profile.isMunicipal,\n firstName: appConfig.coopUserSettings.profile.firstName || undefined,\n lastName: appConfig.coopUserSettings.profile.lastName || undefined,\n email: appConfig.coopUserSettings.profile.email,\n isAuthenticated: appConfig.coopUserSettings.isAuthenticated,\n hasKimCustomerId: appConfig.coopUserSettings.hasKimCustomerId,\n shoppingUserId: appConfig.coopUserSettings.shoppingUserId,\n isEpiUser: !!window.epi,\n };\n\n return profile;\n};\n\nconst slice = createSlice({\n name: 'userProfile',\n initialState: getInitialState(),\n reducers: {},\n});\n\nexport const { actions: userProfileActions, reducer: userProfileReducer } = slice;\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport { municipalUserInfoReducer } from './municipalUserInfoSlice';\nimport { punchoutUserInfoReducer } from './punchoutUserInfoSlice';\nimport userAddressesReducer from './userAddressesSlice';\nimport { userInfoReducer } from './userInfoSlice';\nimport { userProfileReducer } from './userProfileSlice';\nimport { userTypeReducer } from './userTypeSlice';\n\nconst combined = combineReducers({\n addresses: userAddressesReducer,\n type: userTypeReducer,\n userInfo: userInfoReducer,\n municipalUserInfo: municipalUserInfoReducer,\n profile: userProfileReducer,\n punchout: punchoutUserInfoReducer,\n});\n\nexport default combined;\n","import { combineReducers } from 'redux';\n\nimport cartReducer from './slices/cart/cartSlice';\nimport checkoutReducer from './slices/checkout/checkoutSlice';\nimport currentPageReducer from './slices/currentPage/currentPageSlice';\nimport { errorsReducer } from './slices/errors/errorsSlice';\nimport featureFlagsReducer from './slices/featureFlags/featureFlagsSlice';\nimport { modalReducer } from './slices/modal/modalSlice';\nimport storeReducer from './slices/store/storeSlice';\nimport uiReducer from './slices/ui/uiSlice';\nimport unsyncedCartItemsReducer from './slices/unsyncedCartItemsSlice';\nimport userReducer from './slices/user/userSlice';\n\nconst rootReducer = combineReducers({\n store: storeReducer,\n cart: cartReducer,\n checkout: checkoutReducer,\n user: userReducer,\n modal: modalReducer,\n errors: errorsReducer,\n ui: uiReducer,\n unsyncedCartItems: unsyncedCartItemsReducer,\n currentPage: currentPageReducer,\n featureFlags: featureFlagsReducer,\n});\n\nexport default rootReducer;\n","import type { Action, ThunkAction } from '@reduxjs/toolkit';\nimport { configureStore } from '@reduxjs/toolkit';\n\nimport { isDevelopmentEnvironment, isTestingEnvironment } from '../../../utility/environments';\nimport { listenerMiddleware } from './listenerMiddleware';\nimport rootReducer from './rootReducer';\n\nconst enableDevTols = isDevelopmentEnvironment || isTestingEnvironment;\n\nconst store = configureStore({\n reducer: rootReducer,\n devTools: enableDevTols,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().prepend(listenerMiddleware.middleware),\n});\n\nexport const setupStore = (preloadedState?: Partial<RootState>) => {\n return configureStore({\n reducer: rootReducer,\n preloadedState,\n });\n};\n\nexport type RootState = ReturnType<typeof rootReducer>;\n\nexport type DispatchType = typeof store.dispatch;\n\nexport type AppThunk<ReturnType = void> = ThunkAction<ReturnType, RootState, unknown, Action>;\nexport type AppAsyncThunk<ReturnType = void> = AppThunk<Promise<ReturnType>>;\n\nexport default store;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\nimport './window.abtest.utils';\n\nimport { appConfig } from '../appConfig';\nimport { userQueryKeys } from '../microApps/common/hooks/useUserType';\nimport { coopQueryClient } from '../microApps/common/init/coopQueryClient';\nimport { PriceType } from '../microApps/common/models/priceData/priceData';\nimport persistance from '../microApps/common/persistance/persistance';\nimport store from '../microApps/common/store';\nimport { cartEditOrderActions } from '../microApps/common/store/slices/cart/cartEditOrderSlice';\nimport { debugActions } from '../microApps/common/store/slices/ui/debugSlice';\nimport { sharedUiActions } from '../microApps/common/store/slices/ui/sharedUiSlice';\nimport { municipalUserInfoActions } from '../microApps/common/store/slices/user/municipalUserInfoSlice';\nimport { UserType } from '../microApps/common/store/structureDefinitions/userState';\nimport { punchoutQueryKeys } from '../microApps/ecommerce/hooks/usePunchoutOrgUnit';\nimport { isDevelopmentEnvironment, isProductionEnvironment } from './environments';\n\nwindow.console.logDev = (...params) => {\n if (isDevelopmentEnvironment) {\n console.log(...params);\n }\n};\n\nwindow.console.logNotProd = (...params) => {\n if (!isProductionEnvironment) {\n console.log(...params);\n }\n};\n\nwindow.console.errorDev = (...params) => {\n if (isDevelopmentEnvironment) {\n console.error(...params);\n }\n};\n\n// This code will not be available in production builds\nif (!isProductionEnvironment) {\n window.mockMunicipalUI = (\n firstName: string = 'Firstname',\n lastName: string = 'Lastname',\n comments: string = 'comments',\n ) => {\n store.dispatch(\n municipalUserInfoActions.set({\n firstName,\n lastName,\n commentAboutCustomer: comments,\n municipalityCode: '345',\n municipalityUnitCode: '123',\n }),\n );\n\n store.dispatch(municipalUserInfoActions.mockShoppingForAnother());\n };\n\n window.mockEditOrderUI = () => {\n store.dispatch(cartEditOrderActions.mock());\n };\n\n window.mockPunchoutUI = (orgUnitName: string = 'Awesome Punchout Customer') => {\n coopQueryClient.setQueryData(userQueryKeys.type, () => UserType.punchout);\n coopQueryClient.setQueryData(punchoutQueryKeys.orgUnit, () => ({\n orgUnit: {\n uid: '123',\n name: orgUnitName,\n agreementId: '',\n gln: '',\n },\n }));\n };\n\n (window as any).toggleA11yDevTool = () => {\n store.dispatch(\n debugActions.toggleA11yDevTool(!store.getState().ui.debug.a11yDevToolEnabled),\n );\n };\n\n (window as any).addProductsInDocument = () => {\n Array.from(\n document.querySelectorAll<HTMLElement>(\n 'article button[data-testid=\"add_to_cart_button\"]',\n ),\n ).forEach((item) => item.click());\n };\n}\n\n(window as any).setPriceType = (priceType: PriceType) => {\n const userId = appConfig.coopUserSettings.shoppingUserId;\n\n if (priceType === PriceType.IncludeTax) {\n persistance.priceTypeStorage.setPricesWithTax(userId);\n store.dispatch(sharedUiActions.setPriceType({ preferredPriceType: PriceType.IncludeTax }));\n console.log(\n 'Prices switched to IncludeTax. Switch only for presentation purposes. For proper testing, use B2C user.',\n );\n }\n\n if (priceType === PriceType.ExcludeTax) {\n persistance.priceTypeStorage.setPricesWithoutTax(userId);\n store.dispatch(sharedUiActions.setPriceType({ preferredPriceType: PriceType.ExcludeTax }));\n console.log(\n 'Prices switched to ExcludeTax. Switch only for presentation purposes, APIs might not return some B2B prices when B2C user is used. For proper testing, use B2B user.',\n );\n }\n};\n\n(window as any).setExcludeTaxPriceType = () => {\n (window as any).setPriceType('ExcludeTax');\n};\n\n(window as any).setIncludeTaxPriceType = () => {\n (window as any).setPriceType('IncludeTax');\n};\n\n(window as any).getRenderedSSRprops = () => {\n return Array.from(document.querySelectorAll<HTMLElement>('[data-react-props]'))\n .filter((node) => !!node.dataset?.reactProps)\n .map((node) => JSON.parse(node.dataset.reactProps!));\n};\n\n(window as any).togglePreheader = (status: boolean) => {\n store.dispatch(sharedUiActions.setFeatureFlag({ hidePreHeader: !status }));\n};\n\n(window as any).trackActiveElement = (time: number = 500) => {\n setInterval(() => {\n console.log(document.activeElement);\n }, time);\n};\n\n(window as any).getServerData = () => {\n console.log(\n 'Server data from DOM:',\n Array.from(document.getElementsByClassName('js-serverData')).map((node) => ({\n node,\n dataset: (node as HTMLElement).dataset,\n data: JSON.parse(node.innerHTML),\n })),\n );\n};\n\nif (!isProductionEnvironment) {\n (window as any).getServerData();\n}\n","\"use client\";\n\n// src/index.ts\nimport * as devtools from \"./devtools.js\";\nvar ReactQueryDevtools2 = process.env.NODE_ENV !== \"development\" ? function() {\n return null;\n} : devtools.ReactQueryDevtools;\nexport {\n ReactQueryDevtools2 as ReactQueryDevtools\n};\n//# sourceMappingURL=index.js.map","import { SeverityLevel } from '@microsoft/applicationinsights-web';\nimport type { ErrorInfo } from 'react';\nimport * as React from 'react';\n\nimport { appInsights } from '../../../../appInsights';\nimport { createDefaultException } from '../../exceptions/exceptionUtils';\nimport { useGroupError } from '../../hooks/useGroupError';\nimport { ErrorGroup } from '../../store/structureDefinitions/errorsState';\n\ninterface ErrorGroupBoundaryProps extends ErrorBoundryProps {\n errorGroup: ErrorGroup;\n}\n\ninterface ErrorBoundryProps {\n children: React.ReactNode;\n useNotificationOnError?: boolean;\n errorCallback?: () => void;\n errorSeverityLevel?: SeverityLevel;\n errorFallbackUI?: React.FC<React.PropsWithChildren<{ resetError: () => void }>>;\n}\n\n// Need to be a function component to use Hooks\nconst ErrorGroupBoundary = (props: ErrorGroupBoundaryProps) => {\n const { addGroupError } = useGroupError(props.errorGroup);\n\n const onError = (err: string) => {\n if (props.useNotificationOnError) {\n addGroupError(createDefaultException(err));\n }\n\n if (props.errorCallback) {\n props.errorCallback();\n }\n };\n\n return (\n <ErrorBoundaryClass\n onError={onError}\n errorFallbackUI={props.errorFallbackUI}\n errorSeverityLevel={props.errorSeverityLevel}\n >\n {props.children}\n </ErrorBoundaryClass>\n );\n};\n\ninterface ErrorBoundaryClassProps extends ErrorBoundryProps {\n onError: (err: string) => void;\n errorFallbackUI?: React.FC<React.PropsWithChildren<{ resetError: () => void }>>;\n}\n\n// Needs to be a class component to catch error with componentDidCatch\nexport class ErrorBoundaryClass extends React.Component<\n ErrorBoundaryClassProps,\n { hasError: boolean }\n> {\n constructor(props: ErrorBoundaryClassProps) {\n super(props);\n this.state = {\n hasError: false,\n };\n\n this.resetError = this.resetError.bind(this);\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n appInsights?.trackException({\n exception: {\n ...error,\n message: `ErrorBoundry: ${error?.message}`,\n },\n severityLevel: this.props?.errorSeverityLevel,\n properties: { ...errorInfo },\n });\n\n this.props.onError('Ett fel inträffade, försök igen om en stund.');\n }\n\n resetError() {\n this.setState({ hasError: false });\n }\n\n render() {\n if (this.state.hasError) {\n if (this.props.errorFallbackUI) {\n return React.createElement(this.props.errorFallbackUI, {\n resetError: this.resetError,\n });\n }\n return null;\n }\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{this.props.children}</>;\n }\n}\n\n// Critical - unexpected error, page is broken, React destroyed components\n// Page needs to be reloaded\nexport const CriticalErrorBoundry = ({\n useNotificationOnError = true,\n ...props\n}: ErrorBoundryProps) =>\n ErrorGroupBoundary({\n errorGroup: ErrorGroup.Critical,\n errorSeverityLevel: SeverityLevel.Critical,\n useNotificationOnError,\n ...props,\n });\n\n// Global - there was an expected error i.e. API call\n// if that happens, the global notification will show up\nexport const GlobalErrorBoundry = ({\n useNotificationOnError = true,\n ...props\n}: ErrorBoundryProps) =>\n ErrorGroupBoundary({\n errorGroup: ErrorGroup.Global,\n errorSeverityLevel: SeverityLevel.Error,\n useNotificationOnError,\n ...props,\n });\n","import React from 'react';\n\nimport { isProductionEnvironment } from '../../../../utility/environments';\n\nconst CoopDevToolsPortal = isProductionEnvironment\n ? () => null\n : React.lazy(() => import('./CoopDevToolsPortal'));\n\nexport default CoopDevToolsPortal;\n","import { Notification } from '@coop/components';\nimport type { FC } from 'react';\n\nimport { useGroupError } from '../../../hooks/useGroupError';\nimport { ErrorGroup } from '../../../store/structureDefinitions/errorsState';\n\n/**\n * We can't recover from it, i.e. checkout unmounts. We need to reload a page\n */\nconst CriticalErrorNotification: FC<React.PropsWithChildren<unknown>> = () => {\n const { firstError } = useGroupError(ErrorGroup.Critical);\n\n const isOpen = !!firstError;\n\n return (\n <Notification\n behaviour=\"modal\"\n type=\"alert\"\n header=\"NÃ¥gonting gick snett.\"\n message=\"Vänligen ladda om sidan eller försök igen\"\n show={isOpen}\n ctaProps={{\n children: 'Ladda om sidan',\n onClick: () => {\n window.location.reload();\n },\n }}\n />\n );\n};\n\nexport default CriticalErrorNotification;\n","import { ErrorGroup } from '../../../store/structureDefinitions/errorsState';\nimport ErrorGroupNotification from './ErrorGroupNotification';\n\nconst GlobalErrorNotification = () =>\n ErrorGroupNotification({\n errorGroup: ErrorGroup.Global,\n });\n\nexport default GlobalErrorNotification;\n","import { VisuallyHidden } from '@coop/components';\nimport { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport TemporaryA11yAnnouncer from '../components/A11yAnnouncer/TemporaryA11yAnnouncer';\nimport { useAppSelector } from '../hooks/useThunkDispatch';\nimport { currentPageSelectors } from '../selectors/currentPageSelectors';\n\nconst ANNOUNCER_TYPE = 'route-announcer';\nconst ANNOUNCER_ID = '__route-announcer__';\n\nconst createAnnouncerNode = () => {\n const container = document.createElement(ANNOUNCER_TYPE);\n container.style.cssText = 'position:absolute; bottom: 0;';\n container.setAttribute('inert-ignore', 'true');\n\n const announcer = document.createElement('div');\n announcer.id = ANNOUNCER_ID;\n announcer.ariaLive = 'assertive';\n announcer.role = 'alert';\n\n container.appendChild(announcer);\n document.body.appendChild(container);\n return announcer;\n};\n\nconst getAnnouncerNode = () => {\n const existingAnnouncer = document.getElementsByTagName(ANNOUNCER_TYPE)[0];\n if (existingAnnouncer?.childNodes[0]) {\n return existingAnnouncer.childNodes[0] as HTMLElement;\n }\n};\n\nconst useAnnouncerPortalNode = () => {\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n const announcer = getAnnouncerNode() || createAnnouncerNode();\n setPortalNode(announcer);\n return () => {\n const container = document.getElementsByTagName(ANNOUNCER_TYPE)[0];\n if (container?.isConnected) {\n document.body.removeChild(container);\n }\n };\n }, []);\n\n return portalNode;\n};\n\nconst useCurrentPageTitleAnnouncer = () => {\n const accessibleTitle = useAppSelector(currentPageSelectors.selectA11yPageTitle);\n\n const [announcedTitle, setAnnouncedTitle] = useState(accessibleTitle);\n const previousAnnouncedTitle = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n if (\n !!accessibleTitle &&\n // First page load is handled by screen reader out of the box, it's only the subsequent page changes that need to be announced\n previousAnnouncedTitle.current !== undefined &&\n previousAnnouncedTitle.current !== accessibleTitle\n ) {\n setAnnouncedTitle(accessibleTitle);\n }\n previousAnnouncedTitle.current = accessibleTitle;\n }, [accessibleTitle, setAnnouncedTitle]);\n\n return announcedTitle;\n};\n\nexport const CurrentPageTitleAnnouncer = () => {\n const portalNode = useAnnouncerPortalNode();\n const announcedTitle = useCurrentPageTitleAnnouncer();\n\n return portalNode\n ? createPortal(<VisuallyHidden>{announcedTitle}</VisuallyHidden>, portalNode)\n : null;\n};\n\nexport const CurrentPageAnnouncer = () => {\n const allyAnnounceText = useAppSelector(currentPageSelectors.selectA11yAnnounceText);\n\n return <TemporaryA11yAnnouncer announcerName=\"page announcer\" text={allyAnnounceText} />;\n};\n","import '../../../utility/window.utils';\n\nimport type { QueryKey } from '@tanstack/react-query';\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport { type FC, type ReactNode } from 'react';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter } from 'react-router-dom';\n\nimport { NotificationStateProvider } from '../../myCoop/myCoopShared/contexts/NotificationContext';\nimport { CriticalErrorBoundry } from '../components/atoms/ErrorBoundry';\nimport Portal from '../components/atoms/Portal';\nimport CoopDevToolsPortal from '../components/CoopDevTools';\nimport {\n CriticalErrorNotification,\n GlobalErrorNotification,\n} from '../components/molecules/GroupErrorNotifications';\nimport store from '../store';\nimport { coopQueryClient } from './coopQueryClient';\nimport { CurrentPageAnnouncer, CurrentPageTitleAnnouncer } from './CurrentPageAnnouncer';\nimport RouteChangeFocusManagement from './RouteChangeFocusManagement';\n\ninterface ReactAppWrapperProps {\n children: ReactNode;\n routerBasename?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initialQueryClientData?: {\n key: QueryKey;\n data: unknown;\n }[];\n}\n\nconst ReactAppWrapper: FC<React.PropsWithChildren<ReactAppWrapperProps>> = (props) => {\n if (props.initialQueryClientData?.length) {\n props.initialQueryClientData.forEach((item) => {\n const { key, data } = item;\n coopQueryClient.setQueryData(key, data);\n });\n }\n\n return (\n <Provider store={store}>\n <QueryClientProvider client={coopQueryClient}>\n <BrowserRouter basename={props.routerBasename}>\n <NotificationStateProvider>\n {/* notification state needs to be used for both Mountable Components and Mountable Pages */}\n <CriticalErrorBoundry>{props.children}</CriticalErrorBoundry>\n </NotificationStateProvider>\n\n <RouteChangeFocusManagement />\n <CriticalErrorNotification />\n <GlobalErrorNotification />\n </BrowserRouter>\n {/* By default, React Query Devtools are only included in bundles when process.env.NODE_ENV === 'development', */}\n <Portal domNodeSelector=\"#react-query-devtools\">\n <ReactQueryDevtools initialIsOpen={false} buttonPosition=\"bottom-right\" />\n </Portal>\n <CurrentPageTitleAnnouncer />\n <CurrentPageAnnouncer />\n </QueryClientProvider>\n <CoopDevToolsPortal />\n </Provider>\n );\n};\n\nexport default ReactAppWrapper;\n","import { useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAppSelector } from '../hooks/useThunkDispatch';\nimport { debugSelectors } from '../selectors/debugSelectors';\n\nconst createSoftNavFocusTargetNode = () => {\n const focusTarget = document.createElement('soft-nav-focus');\n document.body.prepend(focusTarget);\n return focusTarget;\n};\n\nconst getSoftNavFocusTargetNode = () =>\n document.getElementsByTagName('soft-nav-focus')[0] as HTMLElement;\n\nexport const moveFocusAfterSoftNav = () => {\n const focusTarget = getSoftNavFocusTargetNode() || createSoftNavFocusTargetNode();\n focusTarget.setAttribute('tabindex', '-1');\n focusTarget.focus();\n focusTarget.removeAttribute('tabindex');\n};\n\n/**\n * Simulate what MPA pages does when user is navigated to a new page.\n */\nconst RouteChangeFocusManagement = () => {\n const { pathname } = useLocation();\n\n const locationChanged = useRef(false);\n\n const debugA11yFocusOnSoftNavDisabled = useAppSelector(\n debugSelectors.selectDebugA11yFocusOnSoftNavDisabled,\n );\n\n useEffect(() => {\n if (debugA11yFocusOnSoftNavDisabled) {\n return;\n }\n\n if (locationChanged.current) {\n moveFocusAfterSoftNav();\n } else {\n locationChanged.current = true;\n }\n }, [debugA11yFocusOnSoftNavDisabled, pathname]);\n\n return null;\n};\n\nexport default RouteChangeFocusManagement;\n","// prettier-ignore\nconst BaseLazyComponents = {\n WideUspBlock: () => import('../components/organisms/WideUspBlock/WideUspBlock'),\n ReplaceableTextBlock: () =>\n import('../components/organisms/ReplaceableTextBlock/ReplaceableTextBlock'),\n SideBarMenu: () => import('../components/organisms/SideBarMenu/SideBarMenu'),\n};\n\nconst EpiServerBlocks = {\n EpiBlockLoader: () => import('../../episerver/components/base/EpiBlockLoader'),\n CustomerServiceBlock: () => import('../components/organisms/CustomerServiceBlock'),\n};\n\n// prettier-ignore\nconst EcommerceLazyComponents = {\n ImageTextPropertyBlock: () => import('../components/organisms/ImageTextPropertyBlock/ImageTextPropertyBlock'),\n SingleImageTextBlock: () => import('../components/organisms/SingleImageTextBlock/SingleImageTextBlock'),\n DoubleImageTextBlock: () => import('../components/organisms/DoubleImageTextBlock/DoubleImageTextBlock'),\n TripleImageTextBlock: () => import('../components/organisms/TripleImageTextBlock/TripleImageTextBlock'),\n RecipeItemPagePartial: () => import('../../recipe/components/RecipeItemPagePartial/RecipeItemPagePartial'),\n};\n\n// prettier-ignore\nconst MemberLazyComponents = {\n ApplyExtraMMCard: () => import('../../member/bonuscard/ApplyExtraMMCard'),\n MemberPanelBlock: () => import('../../member/components/MemberPanel/MemberPanelBlock'),\n ApplyCardBlock: () => import('../../finance/components/ApplyMatkontoCard/ApplyMatkontoCard'),\n};\n\n// prettier-ignore\nexport const mountableReactComponents = {\n ...BaseLazyComponents,\n ...EcommerceLazyComponents,\n ...MemberLazyComponents,\n ...EpiServerBlocks\n};\n\nexport type MountableReactComponentsType = keyof typeof mountableReactComponents;\n\nexport const isMountableReactComponent = (\n cmpName: string,\n): cmpName is MountableReactComponentsType => {\n return Object.keys(mountableReactComponents).includes(cmpName);\n};\n","import { isMountableReactComponent } from './mountableReactComponents';\n\nexport const buildReactComponentSelectorByName = (componentName: string) =>\n `.js-reactComponent[data-react-component=${componentName}]`;\n\nexport const buildReactComponentSelectorById = (id: string) =>\n `.js-reactComponent[data-react-id=\"${id}\"]`;\n\nexport const buildReactPageSelector = (pageName?: string) =>\n `.js-reactPage${pageName ? `[data-react-component=${pageName}]` : null}`;\n\nexport interface ReactComponentDomData<TProps extends object = object> {\n id: string;\n name: string;\n props: TProps;\n html: HTMLElement;\n isPartialPage: boolean;\n error: string;\n}\n\nexport const getReactComponentData = <TProps extends object = object>(element: HTMLElement) => {\n const cmpId = element.dataset.reactId;\n const cmpName = element.dataset.reactComponent;\n const cmpPropsString = element.dataset.reactProps;\n const cmpError = element.dataset.reactError;\n const cmpPropsJson = <TProps>(cmpPropsString ? JSON.parse(cmpPropsString) : {});\n const isPartialPage = element.dataset.reactIsPartialPage?.toLowerCase() === 'true';\n\n return {\n id: cmpId,\n name: cmpName,\n props: cmpPropsJson,\n html: element,\n error: cmpError,\n isPartialPage,\n } as ReactComponentDomData<TProps>;\n};\n\nexport const getReactBlocksDataFromDom = () => {\n // crawl DOM only once for all components that should be mounted\n const blocksData =\n Array.from(document.querySelectorAll<HTMLElement>('.js-reactComponent'))\n .map(getReactComponentData)\n .filter(Boolean)\n .filter((item) => isMountableReactComponent(item.name))\n .map((data) => ({ id: data.id, name: data.name })) || [];\n\n return blocksData;\n};\n\nexport const getReactPageFromDom = () => {\n const reactPageDomElement = document.querySelector<HTMLElement>('.js-reactPage');\n if (!reactPageDomElement) {\n return null;\n }\n const { name: pageName } = getReactComponentData(reactPageDomElement);\n return pageName;\n};\n","/* eslint-disable no-console */\nimport type { QueryKey } from '@tanstack/react-query';\n\nimport { epiPageQueryKeys } from '../../episerver/epiQueryKeys';\n\nconst errorPrefix = 'Coop.se performance warning: Invalid initial query data found in DOM.';\n\nexport const getInitialQueryDataFromDOM = (\n container: HTMLElement | null,\n): { key: QueryKey; data: unknown } | undefined => {\n if (!container) {\n return;\n }\n\n const domModelString = container.innerText;\n const domDepth = container.dataset?.depth;\n const domType = container.dataset?.type;\n const domUrl = container.dataset?.url;\n const domContentReference = container.dataset?.contentReference;\n\n if (!domModelString) {\n console.warn(errorPrefix, 'No serialized model found.');\n return undefined;\n }\n\n let domModel;\n try {\n domModel = JSON.parse(domModelString);\n } catch (error) {\n console.warn(errorPrefix, 'Model could not be parsed.');\n return undefined;\n }\n\n if (!domDepth) {\n console.warn(errorPrefix, 'No depth parameter found.');\n return undefined;\n }\n\n switch (domType?.toLowerCase()) {\n case 'ByUrl'.toLowerCase(): {\n if (domUrl) {\n return {\n key: epiPageQueryKeys.getByUrl(domUrl, {\n depth: parseInt(domDepth, 10),\n }),\n data: domModel,\n };\n }\n console.warn(errorPrefix, 'No url found.');\n return undefined;\n }\n case 'ByContentReference'.toLowerCase(): {\n if (domContentReference) {\n return {\n key: epiPageQueryKeys.getByContentReference(domContentReference, {\n depth: parseInt(domDepth, 10),\n }),\n data: domModel,\n };\n }\n console.warn(errorPrefix, 'No ContentReference found.');\n return undefined;\n }\n default: {\n console.warn(errorPrefix, `Unknown type found: ${domType}.`);\n return undefined;\n }\n }\n};\n","/* eslint-disable no-console */\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport globalInvokes from '../../../globalFunctionInvokes';\nimport { getInitialQueryDataFromDOM } from './renderMicroApp.utils';\n\nexport interface MicroAppProps<T extends object = object> {\n ssrData?: T;\n initialQueryData?: { key: QueryKey; data: unknown }[];\n}\n\nconst renderMicroApp = <T extends object = object>(microApp: FC<MicroAppProps<T>>) => {\n const container = document.querySelector<HTMLElement>('#reactMicroApp');\n const domProps = container?.dataset?.reactProps;\n const props = domProps ? (JSON.parse(domProps) as T) : undefined;\n\n const initialQueryDataDom = document.querySelectorAll<HTMLElement>('.initial-query-data');\n const initialQueryData =\n initialQueryDataDom?.length > 0\n ? Array.from(initialQueryDataDom).map(getInitialQueryDataFromDOM).filter(Boolean)\n : undefined;\n\n globalInvokes();\n\n const root = createRoot(container!);\n root.render(React.createElement(microApp, { ssrData: props, initialQueryData }));\n};\n\nexport default renderMicroApp;\n","import type { PriceData } from '../../../priceData/priceData';\nimport type { ProductVariantProps } from '../../../props/itemTeaserProps';\n\nexport const isMultiBuyPromotion = (\n promo: EcomPromotion | undefined,\n): promo is MultiBuyEcomPromotion => !!promo && promo.type === 'MULTIBUY';\n\nexport const isFixedPricePromotion = (\n promo: EcomPromotion | undefined,\n): promo is FixedEcomPromotion => !!promo && promo.type === 'FIXED_PRICE';\n\nexport const isPercentagePromotion = (\n promo: EcomPromotion | undefined,\n): promo is PercentageEcomPromotion => !!promo && promo.type === 'PERCENTAGE';\n\ninterface CartItemPriceMap {\n discount?: PriceData;\n piecePrice?: PriceData;\n totalPrice?: PriceData;\n totalPriceWithoutDiscount?: PriceData;\n}\n\nexport interface OrderEntryPriceMap {\n discount?: PriceData;\n piecePrice: PriceData;\n totalPrice?: PriceData;\n totalPriceWithoutDiscount?: PriceData;\n}\n\n// Return type interfaces\ninterface OrderEntryPriceResult {\n piecePrice: PriceData;\n totalPrice?: PriceData;\n /** Think before using this once since its calculated by us */\n newPiecePrice?: PriceData;\n newTotalPrice?: PriceData;\n}\n\ninterface CartItemPriceResult {\n piecePrice?: PriceData;\n totalPrice?: PriceData;\n /** Think before using this once since its calculated by us */\n newPiecePrice?: PriceData;\n newTotalPrice?: PriceData;\n}\n\nexport function mapPrices(prices: OrderEntryPriceMap): OrderEntryPriceResult;\nexport function mapPrices(prices: CartItemPriceMap): CartItemPriceResult;\n// eslint-disable-next-line func-style\nexport function mapPrices(\n prices: OrderEntryPriceMap | CartItemPriceMap,\n): OrderEntryPriceResult | CartItemPriceResult {\n if (!prices.discount) {\n return {\n piecePrice: prices.piecePrice,\n totalPrice: prices.totalPrice,\n };\n }\n const factor =\n prices.totalPrice?.inclTaxPrice && prices.totalPriceWithoutDiscount?.inclTaxPrice\n ? prices.totalPrice.inclTaxPrice / prices.totalPriceWithoutDiscount.inclTaxPrice\n : 1;\n const newPiecePrice =\n prices.piecePrice?.inclTaxPrice && prices.piecePrice.exclTaxPrice\n ? {\n inclTaxPrice: factor * prices.piecePrice.inclTaxPrice,\n exclTaxPrice: factor * prices.piecePrice.exclTaxPrice,\n }\n : undefined;\n return {\n piecePrice: prices.piecePrice,\n totalPrice: prices.totalPriceWithoutDiscount,\n newPiecePrice,\n newTotalPrice: prices.totalPrice,\n };\n}\n\nexport const mapVariantPromotion = (\n promo?: EcomPromotion,\n currentVariant?: ProductVariantProps,\n): EcomPromotion | undefined => {\n if (currentVariant && isFixedPricePromotion(promo)) {\n return {\n ...promo,\n fixedPiecePrice: currentVariant.promotionPriceData,\n };\n }\n return promo;\n};\n","export interface PriceData {\n inclTaxPrice?: number;\n exclTaxPrice?: number;\n}\n\nexport enum PriceType {\n IncludeTax = 'IncludeTax',\n ExcludeTax = 'ExcludeTax',\n}\n","import type { LightSearchRecipe } from '../../../search/models/models';\n\nexport interface DynamicYieldAnalyticsMetadata {\n analyticsMetadata: DynamicYieldAnalyticsMetadataBody;\n}\n\nexport interface DynamicYieldAnalyticsMetadataBody {\n campaignId: number;\n campaignName: string;\n experienceId: number;\n experienceName: string;\n variationId: number;\n variationName: string;\n}\n\nexport enum RecommendationType {\n Product,\n Recipe,\n}\n\nexport type ProductRecommendationSlot = ApiProduct & {\n type: RecommendationType.Product;\n slotId: string;\n};\n\nexport type RecipeRecommendationSlot = LightSearchRecipe & {\n type: RecommendationType.Recipe;\n slotId?: string;\n};\n\nexport type RecommendationItem = ProductRecommendationSlot | RecipeRecommendationSlot;\n\nexport interface Recommendation extends DynamicYieldAnalyticsMetadata {\n recommendationId: string;\n selectorName: string;\n selectedVariationId: string;\n items: RecommendationItem[];\n title: string;\n}\n\nexport interface CustomCampaign<TCustomData> extends DynamicYieldAnalyticsMetadata {\n id: string;\n selectorName: string;\n selectedVariationId: string;\n custom: TCustomData;\n}\n","export const BUSINESS_TOGGLE_COOKIE: string = 'IsBusinessEcommerce';\nexport const FAVORITE_STORES_COOKIE_NAME = 'Coop_Stores_Favorites';\nexport const RECIPE_RATINGS_COOKIE_NAME = 'Coop_Recipe_Rating';\nexport const MATKONTO_BANK_ID_LOGIN_HAS_BEEN_STARTED_COOKIE = 'CoopMatkontoBankIdLoginStarted';\nexport const FAVORITE_RECIPE_COOKIE_NAME: string = 'FavRecipe';\nexport const ALERTS_DISMISSED_COOKIE_PREFIX: string = 'AVC';\nexport const COOKIE_LOGIN_REMINDER = 'COOP-LOGIN-REMINDER';\n","import { LocalStorageFacade } from '../../../../facades/storage/localStorageFacade';\n\nconst KEY = 'coop-abtests';\n\ninterface AbTestStorage {\n [key: string]: AbTest | undefined;\n}\n\nexport interface AbTest {\n name: string;\n percentage: number;\n created: Date;\n modified: Date;\n abTestValue: string;\n}\n\nconst getMainStorage = () => LocalStorageFacade.instance.getObject<AbTestStorage>(KEY);\n\nconst abTestStorage = {\n all: () => {\n const storage = getMainStorage();\n if (!storage) {\n return [];\n }\n\n return Object.values(storage).filter(Boolean);\n },\n get: (name: string) => {\n const storage = getMainStorage();\n return storage && storage[name];\n },\n set: (abTest: AbTest) => {\n let storage = getMainStorage();\n if (!storage) {\n storage = {};\n }\n\n storage[abTest.name] = abTest;\n LocalStorageFacade.instance.addObject<AbTestStorage>(KEY, storage);\n },\n remove: (names: string[]) => {\n const storage = getMainStorage();\n if (!storage) return;\n\n Object.keys(storage)\n .filter((key) => names.includes(key))\n .forEach((key) => delete storage[key]);\n\n LocalStorageFacade.instance.addObject<AbTestStorage>(KEY, storage);\n },\n};\n\nexport default abTestStorage;\n","import { Cookies } from '../../../../utility/cookies';\nimport { ALERTS_DISMISSED_COOKIE_PREFIX } from './cookieKeys';\n\nconst COOKIE_TIMEOUT_DAYS = 3;\n\nconst getAlertKey = (alertId: string) => {\n return `${ALERTS_DISMISSED_COOKIE_PREFIX}${alertId}`;\n};\n\nconst alertsDismissed = {\n isDismissed: (alertId: string) => {\n const cookieName = getAlertKey(alertId);\n const rawCookie = Cookies.read(cookieName);\n return rawCookie === 'true';\n },\n dismiss: (alertId: string) => {\n const cookieName = getAlertKey(alertId);\n Cookies.create(cookieName, 'true', COOKIE_TIMEOUT_DAYS);\n },\n};\n\nexport default alertsDismissed;\n","import { Cookies } from '../../../../utility/cookies';\nimport type { ApiDyCookie } from '../../../tracking/api/trackingRequests';\n\n// leaving cookie name for cookie erase\nconst DY_ID_COOKIE_NAME = '_dyid';\nconst DY_SESSION_COOKIE_NAME = '_dyjsession';\nconst DY_SERVER_COOKIE_NAME = '_dyid_server';\nconst validCookies = [DY_ID_COOKIE_NAME, DY_SESSION_COOKIE_NAME, DY_SERVER_COOKIE_NAME];\nconst dynamicYield = {\n getDyId: () => {\n const rawCookie = Cookies.read(DY_ID_COOKIE_NAME) || Cookies.read(DY_SERVER_COOKIE_NAME);\n return rawCookie;\n },\n getSessionId: () => {\n const rawCookie = Cookies.read(DY_SESSION_COOKIE_NAME);\n return rawCookie;\n },\n setCookies: (cookie: ApiDyCookie) => {\n if (validCookies.includes(cookie.name)) {\n // session, server is coming from choose\n Cookies.create(\n cookie.name === DY_SERVER_COOKIE_NAME ? DY_ID_COOKIE_NAME : cookie.name,\n cookie.value,\n cookie.maxAge / (60 * 60 * 24),\n );\n }\n },\n removeCookies: () => {\n validCookies.forEach((name) => Cookies.eraseCookie(name));\n },\n};\n\nexport default dynamicYield;\n","import { Cookies } from '../../../../utility/cookies';\nimport { RECIPE_RATINGS_COOKIE_NAME } from './cookieKeys';\n\nconst recipeRatings = {\n get: (recipeId: string) => {\n const rawCookie = Cookies.read(RECIPE_RATINGS_COOKIE_NAME);\n if (rawCookie) {\n const cookieRating = JSON.parse(rawCookie) as Record<string, number>;\n const recipeRating = cookieRating[recipeId];\n return recipeRating || 0;\n }\n },\n};\n\nexport default recipeRatings;\n","/* eslint-disable no-console */\nimport { appConfig } from '../../../../appConfig';\nimport { Cookies } from '../../../../utility/cookies';\n\nconst STORE_CONTEXT_COOKIE = 'coop-storeContext';\nlet storeContextCache: StoreContextCookie | undefined;\n\ninterface StoreContextCookie {\n zipCode?: string | null;\n productionUnitId: string;\n storeName?: string | null;\n pickupPointId: string | null;\n}\n\nconst storeContext = {\n get: (): StoreContextCookie => {\n const storeContextCookie = Cookies.read(STORE_CONTEXT_COOKIE);\n if (storeContextCookie) {\n try {\n const decodedCookie = decodeURIComponent(escape(atob(storeContextCookie)));\n const storeContextSettings = JSON.parse(decodedCookie) as StoreContextCookie;\n return storeContextSettings;\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n return storeContext.getDefaultStoreContext();\n },\n\n getCached() {\n if (!storeContextCache) {\n storeContextCache = storeContext.get();\n }\n\n return storeContextCache;\n },\n /** Please use carefully! */\n set: (context: StoreContextCookie) => {\n if (!context) {\n Cookies.create(\n STORE_CONTEXT_COOKIE,\n btoa(JSON.stringify(storeContext.getDefaultStoreContext())),\n 90,\n );\n storeContextCache = undefined;\n } else {\n const storeContextCookie: StoreContextCookie = {\n productionUnitId: context.productionUnitId,\n pickupPointId: context.pickupPointId || null,\n storeName: context.storeName || null,\n zipCode: context.zipCode || null,\n };\n Cookies.create(STORE_CONTEXT_COOKIE, btoa(JSON.stringify(storeContextCookie)), 90);\n storeContextCache = storeContextCookie;\n }\n },\n\n getDefaultStoreContext: () => {\n const context: StoreContextCookie = {\n productionUnitId: appConfig.coopSettings.ecommerce.defaultStoreId,\n pickupPointId: null,\n storeName: null,\n zipCode: null,\n };\n return context;\n },\n};\n\nexport default storeContext;\n","import { isBefore } from 'date-fns';\n\nimport { LocalStorageFacade } from '../../../../facades/storage/localStorageFacade';\nimport type { SectionTree } from '../../../ecommerce/components/SectionMenu';\n\ninterface SectionStorage {\n sessionId: string;\n shoppingUserId?: string;\n productionUnit: string;\n isCompanyUser: boolean;\n sectionTree: SectionTree;\n insertedAt: string;\n}\n\nconst SECTION_CACHE_EXPIRE_TIME_MINUTES = 30;\n\nconst getEcommerceSectionsKey = (isB2bRoute: boolean) =>\n `Ecommerce:SectionsList:${isB2bRoute ? 'b2b' : 'b2c'}`;\n\nconst ecommerceSectionsLS = {\n get: (context: {\n productionUnit: string;\n isB2bRoute: boolean;\n isCompanyUser: boolean;\n shoppingUserId?: string;\n }) => {\n const sectionListStorage = LocalStorageFacade.instance.getObject<SectionStorage>(\n getEcommerceSectionsKey(context.isB2bRoute),\n );\n\n const now = new Date();\n\n if (\n !sectionListStorage ||\n !sectionListStorage.insertedAt || // previous visitors wont have that value, so cache will be invalidated for them\n isBefore(\n new Date(sectionListStorage.insertedAt),\n new Date(now.setMinutes(now.getMinutes() - SECTION_CACHE_EXPIRE_TIME_MINUTES)),\n ) // keep invalidating sections every X minutes\n )\n return undefined;\n\n if (\n sectionListStorage.sessionId === LocalStorageFacade.instance.getSessionId() &&\n sectionListStorage.productionUnit === context.productionUnit &&\n sectionListStorage.shoppingUserId === context.shoppingUserId &&\n sectionListStorage.isCompanyUser === context.isCompanyUser\n )\n return sectionListStorage.sectionTree;\n\n LocalStorageFacade.instance.remove(getEcommerceSectionsKey(context.isB2bRoute));\n return undefined;\n },\n save: (\n tree: SectionTree,\n context: {\n productionUnit: string;\n isB2bRoute: boolean;\n isCompanyUser: boolean;\n shoppingUserId?: string;\n },\n ): void => {\n const sectionTreeStorage: SectionStorage = {\n sessionId: LocalStorageFacade.instance.getSessionId(),\n shoppingUserId: context.shoppingUserId,\n productionUnit: context.productionUnit,\n isCompanyUser: context.isCompanyUser,\n sectionTree: tree,\n insertedAt: new Date().toISOString(),\n };\n LocalStorageFacade.instance.addObject<SectionStorage>(\n getEcommerceSectionsKey(context.isB2bRoute),\n sectionTreeStorage,\n );\n },\n};\n\nexport default ecommerceSectionsLS;\n","import { LocalStorageFacade } from '../../../../facades/storage/localStorageFacade';\nimport { PriceType } from '../../models/priceData/priceData';\n\nconst PRICE_TYPE_STORAGE_KEY = 'priceType';\nconst getStorageKey = (userId: string) => {\n return `${PRICE_TYPE_STORAGE_KEY}_${userId}`;\n};\n\nconst priceTypeStorage = {\n setPricesWithTax: (userId: string): void => {\n const storageKey = getStorageKey(userId);\n LocalStorageFacade.instance.add(storageKey, PriceType.IncludeTax);\n },\n setPricesWithoutTax: (userId: string): void => {\n const storageKey = getStorageKey(userId);\n LocalStorageFacade.instance.add(storageKey, PriceType.ExcludeTax);\n },\n getCurrent: (userId: string): PriceType | undefined => {\n const storageKey = getStorageKey(userId);\n const priceType = LocalStorageFacade.instance.get(storageKey);\n\n switch (priceType) {\n case PriceType.IncludeTax:\n return PriceType.IncludeTax;\n case PriceType.ExcludeTax:\n return PriceType.ExcludeTax;\n default:\n return undefined;\n }\n },\n};\n\nexport default priceTypeStorage;\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable class-methods-use-this */\nexport class SessionStorageFacade {\n private static _instance: SessionStorageFacade;\n\n public static get instance(): SessionStorageFacade {\n // eslint-disable-next-line no-return-assign\n return this._instance || (this._instance = new this());\n }\n\n add(key: string, value: string) {\n sessionStorage.setItem(key, value);\n }\n\n get(key: string) {\n return sessionStorage.getItem(key);\n }\n\n public addObject<T>(key: string, value: T): void {\n sessionStorage.setItem(key, JSON.stringify(value));\n }\n\n public getObject<T>(key: string) {\n const storageItem = sessionStorage.getItem(key);\n if (storageItem === undefined || storageItem === null) return undefined;\n try {\n return <T>JSON.parse(storageItem);\n } catch (ex) {\n return undefined;\n }\n }\n\n public remove(key: string): void {\n sessionStorage.removeItem(key);\n }\n}\n","import { SessionStorageFacade } from '../../../../facades/storage/sessionStorageFacade';\n\nconst SESSION_KEY: string = 'consentShown';\n\nconst consentShownSession = {\n get: () => {\n return SessionStorageFacade.instance.getObject<boolean>(SESSION_KEY);\n },\n add: () => {\n SessionStorageFacade.instance.addObject(SESSION_KEY, true);\n },\n};\n\nexport default consentShownSession;\n","import { SessionStorageFacade } from '../../../../facades/storage/sessionStorageFacade';\n\nconst SESSION_STORAGE_DEV_TOOLS_KEY = 'Coop:DevTools';\n\ninterface DevToolsSavedPreferences {\n open: boolean;\n activePanel: 'a11y' | 'mocked-modes' | 'feature-flags' | undefined;\n}\n\nconst getAllPreferences = () => {\n return (\n SessionStorageFacade.instance.getObject<DevToolsSavedPreferences>(\n SESSION_STORAGE_DEV_TOOLS_KEY,\n ) || {\n open: false,\n activePanel: undefined,\n }\n );\n};\n\nconst saveAllPreferences = (preferences: DevToolsSavedPreferences) => {\n SessionStorageFacade.instance.addObject(SESSION_STORAGE_DEV_TOOLS_KEY, preferences);\n};\n\nexport const coopDevToolsSession = {\n getOpenPreference: () => {\n return getAllPreferences().open;\n },\n saveOpenPreference: (value: boolean) => {\n saveAllPreferences({\n ...getAllPreferences(),\n open: value,\n });\n },\n saveActivePanel: (value: DevToolsSavedPreferences['activePanel']) => {\n saveAllPreferences({\n ...getAllPreferences(),\n activePanel: value,\n });\n },\n getActivePanel: () => {\n return getAllPreferences()?.activePanel;\n },\n};\n","import { SessionStorageFacade } from '../../../../facades/storage/sessionStorageFacade';\nimport type { CustomerGroup } from '../../utils/customerGroupsUtils';\n\nconst SESSION_KEY: string = 'customerGroups';\nconst getSessionKey = (userId: string) => {\n return `${SESSION_KEY}:${userId}`;\n};\n\nconst customerGroupsSession = {\n get: (userId: string) => {\n return SessionStorageFacade.instance.getObject<CustomerGroup[]>(getSessionKey(userId));\n },\n add: (customerGroups: CustomerGroup[], userId: string) => {\n SessionStorageFacade.instance.addObject(getSessionKey(userId), customerGroups);\n },\n remove: (userId: string) => {\n SessionStorageFacade.instance.remove(getSessionKey(userId));\n },\n};\n\nexport default customerGroupsSession;\n","import alertsDismissed from './cookie/alertsDismissed';\nimport dynamicYield from './cookie/dynamicYield';\nimport recipeRatings from './cookie/recipeRatings';\nimport storeContext from './cookie/storeContext';\nimport abTestStorage from './localStorage/abTestStorage';\nimport ecommerceSections from './localStorage/ecommerceSections';\nimport priceTypeStorage from './localStorage/priceTypeStorage';\nimport consentShownSession from './sessionStorage/consentShownSession';\nimport { coopDevToolsSession } from './sessionStorage/coopDevToolsSession';\nimport customerGroupsSession from './sessionStorage/customerGroupsSession';\n\nconst persistance = {\n ecommerceSections,\n priceTypeStorage,\n abTestStorage,\n customerGroupsSession,\n alertsDismissed,\n recipeRatings,\n storeContext,\n dynamicYield,\n consentShownSession,\n coopDevToolsSession,\n};\nexport default persistance;\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\n\nconst isCartInitialized = (state: RootState) => state.cart.cartLoading.isInitialized;\nconst isProductDataAvailable = (state: RootState) => state.cart.cartLoading.isProductDataAvailable;\nconst cartId = (state: RootState) => state.cart.summary.cartId;\n\nconst selectedTimeslot = (state: RootState) =>\n (!!state.cart.timeslot &&\n !!state.cart.timeslot.isInitialized &&\n !!state.cart.timeslot.isSelected &&\n state.cart.timeslot.timeslot) ||\n null;\n\nconst hasSelectedTimeslot = (state: RootState) =>\n state.cart.timeslot &&\n state.cart.timeslot.isInitialized &&\n state.cart.timeslot.isSelected &&\n state.cart.timeslot.timeslot &&\n !!state.cart.timeslot.timeslot.id;\n\nconst isInEditOrder = (state: RootState) => isInCartEditOrder(state.cart);\nconst editOrderNumber = (state: RootState) => cartEditOrderNumber(state.cart);\nconst cartEditOrderNumber = (cart: RootState['cart']) => cart.editOrder.editOrderNumber;\nconst editOrderSummary = (state: RootState) => state.cart.editOrder.editOrderSummary;\nconst isInCartEditOrder = (state: RootState['cart']) => state.editOrder.isInEditOrderMode;\n\nconst editOrderDate = (state: RootState) =>\n (state.cart.timeslot &&\n state.cart.timeslot.isInitialized &&\n state.cart.timeslot.timeslot.startTime &&\n new Date(state.cart.timeslot.timeslot.startTime)) ||\n null;\n\nconst startTimeEditOrderTimeslotSelector = (cart: RootState['cart']) =>\n cartEditOrderTimeslot(cart)?.startTime;\nconst endTimeEditOrderTimeslotSelector = (cart: RootState['cart']) =>\n cartEditOrderTimeslot(cart)?.endTime;\n\nconst cartEditOrderTimeslotStartTime = createSelector(\n startTimeEditOrderTimeslotSelector,\n (startTime) => {\n return startTime ? new Date(startTime) : null;\n },\n);\n\nconst cartEditOrderTimeslotEndTime = createSelector(endTimeEditOrderTimeslotSelector, (endTime) => {\n return endTime ? new Date(endTime) : null;\n});\n\nconst editOrderTimeslot = (state: RootState) => cartEditOrderTimeslot(state.cart);\n\nconst cartEditOrderTimeslot = (cart: RootState['cart']) =>\n (isInCartEditOrder(cart) &&\n cart.timeslot &&\n cart.timeslot.isInitialized &&\n cart.timeslot.timeslot) ||\n null;\n\nconst editOrderTimeoutSelector = (state: RootState) => state.cart.editOrder?.editOrderTimeout;\n\nconst editOrderExpirationTime = createSelector(editOrderTimeoutSelector, (timeout) =>\n timeout ? new Date(timeout) : null,\n);\n\nexport const cartSelectors = {\n selectedTimeslot,\n isCartInitialized,\n isProductDataAvailable,\n hasSelectedTimeslot,\n editOrderDate,\n editOrderExpirationTime,\n isInEditOrder,\n editOrderNumber,\n cartEditOrderNumber,\n editOrderSummary,\n cartId,\n editOrderTimeslot,\n cartEditOrderTimeslotStartTime,\n cartEditOrderTimeslotEndTime,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store';\n\nconst selectA11yPageTitle = createSelector(\n (state: RootState) => state.currentPage,\n (state: RootState) => state.ui.debug,\n (currentPage, debug) => {\n const { title, a11yTitle } = currentPage;\n\n if (debug.a11yDevToolEnabled && !debug.a11yContextSpecificPageTitleAnnouncementsEnabled) {\n return title?.replace('|', '-') || '';\n }\n\n return [title, a11yTitle].filter(Boolean).join(', ').replace('|', '-');\n },\n);\n\nconst selectA11yAnnounceText = (state: RootState) => state.currentPage.a11yAnnounceText;\n\nexport const currentPageSelectors = {\n selectA11yPageTitle,\n selectA11yAnnounceText,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store';\n\nconst selectDebug = (state: RootState) => state.ui.debug;\n\nconst selectA11yDevToolEnabled = createSelector(selectDebug, (debug) => debug.a11yDevToolEnabled);\nconst selectDebugA11yFocusOnSoftNavDisabled = createSelector(\n selectDebug,\n (debug) => debug.a11yDevToolEnabled && !debug.a11yFocusOnSoftNavigationEnabled,\n);\n\nexport const debugSelectors = {\n selectDebug,\n selectA11yDevToolEnabled,\n selectDebugA11yFocusOnSoftNavDisabled,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\nimport type { ModalType } from '../store/structureDefinitions/modalState';\n\nconst isModalTypeOpen = createSelector(\n (state: RootState) => state.modal.isOpen,\n (state: RootState) => state.modal.type,\n (state: RootState) => state.modal.id,\n (_: unknown, type: ModalType | string) => type,\n (_: unknown, _2: unknown, id: string | undefined) => id,\n (isOpen, currentType, currentId, type, id) => {\n return isOpen && currentType === type && (!currentId || currentId === id);\n },\n);\n\nconst isModalOpen = createSelector(\n (state: RootState) => state.modal.isOpen,\n (state: RootState) => state.modal.type,\n (isOpen, type) => isOpen && !!type,\n);\n\nconst isAnyModalOpen = (state: RootState): boolean => state.modal.isOpen;\n\nexport const modalSelectors = {\n isOpen: isModalOpen,\n isModalTypeOpen,\n isAnyModalOpen,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\nimport { DeliveryMode } from '../store/structureDefinitions/storeState';\n\nconst selectedDeliveryMode = (state: RootState) =>\n state.store.deliveryMode || DeliveryMode.homedelivery;\nconst currentStore = (state: RootState) => state.store.selectedStore;\nconst currentProductionUnit = (state: RootState) => state.store.productionUnitId;\nconst currentPostalCode = (state: RootState) => state.store.selectedZipCode;\nconst currentPickupPointId = (state: RootState) => state.store.selectedPickupPointId;\nconst isHomeDeliverySelected = (state: RootState) =>\n state.store && state.store.selectedZipCode && !state.store.selectedPickupPointId;\nconst isPickupSelected = (state: RootState) =>\n state.store && state.store.selectedPickupPointId && !state.store.selectedZipCode;\nconst hasActiveStoreSelection = createSelector(\n isHomeDeliverySelected,\n isPickupSelected,\n (_isHomeDeliverySelected, _isPickupSelected) =>\n !!_isHomeDeliverySelected || !!_isPickupSelected,\n);\n\nconst currentProductionUnitOrDefault = createSelector(\n selectedDeliveryMode,\n currentProductionUnit,\n (deliveryMode, _currentProductionUnit) => {\n return _currentProductionUnit;\n },\n);\n\nexport const storeSelectors = {\n selectedDeliveryMode,\n currentStore,\n currentProductionUnit: currentProductionUnitOrDefault,\n currentPostalCode,\n isHomeDeliverySelected,\n isPickupSelected,\n hasActiveStoreSelection,\n currentPickupPointId,\n};\n","import type { RootState } from '../store/structureDefinitions/cartState';\n\nconst selectCurrentStep = (state: RootState) =>\n state.ui.cnc.stepTrail && !!state.ui.cnc.stepTrail.length\n ? state.ui.cnc.stepTrail[state.ui.cnc.stepTrail.length - 1]\n : null;\n\nconst selectPreviousStep = (state: RootState) =>\n state.ui.cnc.stepTrail && state.ui.cnc.stepTrail.length > 1\n ? state.ui.cnc.stepTrail[state.ui.cnc.stepTrail.length - 2]\n : null;\n\nconst selectStepNavigationParam = (state: RootState) => state.ui.cnc.currentStepNavigationParams;\n\nconst cncSelectors = {\n selectCurrentStep,\n selectPreviousStep,\n selectStepNavigationParam,\n};\n\nexport const uiSelectors = {\n cnc: cncSelectors,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { cartItemUniqueIdPredicate } from '../../cart/selectors/cartItemsSelectors';\nimport type { UnsyncedCartItem } from '../store/slices/unsyncedCartItemsSlice';\nimport type { CartItemUniqueId, RootState } from '../store/structureDefinitions/cartState';\n\nconst selectUnsyncedCartItems = (state: RootState): UnsyncedCartItem[] =>\n state.unsyncedCartItems.items;\n\nconst selectUnsyncedCartItemByUniqueId = createSelector(\n selectUnsyncedCartItems,\n (_: RootState, cartItemId: CartItemUniqueId) => cartItemId,\n (items: UnsyncedCartItem[], cartItemId: CartItemUniqueId) =>\n items.find((item) => cartItemUniqueIdPredicate(item, cartItemId)),\n);\n\nexport const unsyncedCartItemsSelectors = {\n selectUnsyncedCartItems,\n selectUnsyncedCartItemByUniqueId,\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\n\nconst selectProfile = (state: RootState) => state.user.profile;\nconst selectFirstName = createSelector(selectProfile, (state) => state?.firstName);\nconst selectLastName = createSelector(selectProfile, (state) => state?.lastName);\nconst selectIsAuthenticated = createSelector(selectProfile, (state) => !!state?.isAuthenticated);\nconst selectIsCompany = createSelector(selectProfile, (state) => !!state?.isCompany);\nconst selectIsMember = createSelector(selectProfile, (state) => !!state?.medmeraId);\nconst selectHasKimCustomerId = createSelector(selectProfile, (state) => !!state?.hasKimCustomerId);\nconst selectShoppingUserId = createSelector(selectProfile, (state) => state?.shoppingUserId);\nconst selectUserId = createSelector(selectProfile, (state) => state?.id);\nconst selectIsEpiUser = createSelector(selectProfile, (state) => state?.isEpiUser);\n\nconst selectFullName = createSelector(selectFirstName, selectLastName, (first, last) => {\n if (!first || !last) {\n return undefined;\n }\n return `${first} ${last}`;\n});\n\nconst selectInitials = createSelector(selectFirstName, selectLastName, (first, last) => {\n if (!first || !last) {\n return undefined;\n }\n\n return `${first.charAt(0)}${last.charAt(0)}`;\n});\n\nexport const userProfileSelectors = {\n profile: selectProfile,\n fullName: selectFullName,\n initials: selectInitials,\n isAuthenticated: selectIsAuthenticated,\n isMember: selectIsMember,\n isCompany: selectIsCompany,\n hasKimCustomerId: selectHasKimCustomerId,\n shoppingUserId: selectShoppingUserId,\n id: selectUserId,\n isEpiUser: selectIsEpiUser,\n};\n","import type { EntityAdapter } from '@reduxjs/toolkit';\nimport { createEntityAdapter } from '@reduxjs/toolkit';\n\nexport const productsAdapter: EntityAdapter<ApiProduct> = createEntityAdapter<ApiProduct>({\n selectId: (product) => product.identifier,\n});\n","import type { EntityAdapter } from '@reduxjs/toolkit';\nimport { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { CartRecipe } from '../structureDefinitions/cartState';\n\nexport const recipesAdapter: EntityAdapter<CartRecipe> = createEntityAdapter<CartRecipe>({\n selectId: (recipe) => recipe.code,\n});\n","import type { EntityAdapter } from '@reduxjs/toolkit';\nimport { createEntityAdapter } from '@reduxjs/toolkit';\n\nimport type { UserAddress } from '../structureDefinitions/userState';\n\nexport const userAddressAdapter: EntityAdapter<UserAddress> = createEntityAdapter<UserAddress>({\n selectId: (address) => address.id,\n sortComparer: (a, b) => (a.id <= b.id ? -1 : 1),\n});\n","import { createAction } from '@reduxjs/toolkit';\n\nexport interface UpdateCartItemPayload {\n productId: string;\n variantId?: string;\n quantity: number;\n}\n\nexport const updateCartItem = createAction<UpdateCartItemPayload>('items/updateCartItem');\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\ninterface CartLoadingState {\n isLoading: boolean;\n isInitialized: boolean;\n isProductDataAvailable: boolean;\n}\n\nexport const getInitialState = (): CartLoadingState => ({\n isLoading: false,\n isInitialized: false,\n isProductDataAvailable: false,\n});\n\nconst slice = createSlice({\n name: 'cartLoading',\n initialState: getInitialState(),\n reducers: {\n initLoading: (state) => {\n state.isLoading = true;\n },\n finishLoading: (state) => {\n state.isLoading = false;\n },\n },\n});\n\nexport const { initLoading, finishLoading } = slice.actions;\n\nexport default slice.reducer;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { isProductionEnvironment } from '../../../../../utility/environments';\nimport type { ApiEditOrderPayment } from '../../../api/cart/responses/cartResponses';\nimport type { PriceData } from '../../../models/priceData/priceData';\n\nexport interface CartEditOrderSummaryState {\n editOrderSubtotalDifferencePriceData: PriceData;\n editOrderSubtotalPriceData: PriceData;\n editOrderTotalDifferencePriceData: PriceData;\n editOrderTotalPriceData: PriceData;\n}\n\ninterface CartEditOrderState {\n isInEditOrderMode: boolean;\n editOrderNumber: string | null;\n editOrderTimeout: string | null;\n editOrderPayment?: ApiEditOrderPayment;\n editOrderSummary: CartEditOrderSummaryState;\n}\n\nexport const getInitialState = (): CartEditOrderState => ({\n isInEditOrderMode: false,\n editOrderNumber: null,\n editOrderTimeout: null,\n editOrderSummary: {\n editOrderSubtotalDifferencePriceData: {\n inclTaxPrice: undefined,\n exclTaxPrice: undefined,\n },\n editOrderSubtotalPriceData: {\n inclTaxPrice: undefined,\n exclTaxPrice: undefined,\n },\n editOrderTotalDifferencePriceData: {\n inclTaxPrice: undefined,\n exclTaxPrice: undefined,\n },\n editOrderTotalPriceData: {\n inclTaxPrice: undefined,\n exclTaxPrice: undefined,\n },\n },\n editOrderPayment: undefined,\n});\n\nconst cartEditOrderSlice = createSlice({\n name: 'editOrder',\n initialState: getInitialState(),\n reducers: {\n mock: (state) => {\n if (!isProductionEnvironment) {\n state.isInEditOrderMode = true;\n state.editOrderNumber = '123456789';\n state.editOrderTimeout = new Date(\n new Date().setHours(new Date().getHours() + 1),\n ).toISOString();\n } else {\n // eslint-disable-next-line no-console\n console.error('Not available in production environment');\n }\n },\n },\n});\n\nexport const { actions: cartEditOrderActions, reducer: cartEditOrderReducer } = cartEditOrderSlice;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ApiFullCartItem } from '../../../api/cart/responses/cartResponses';\nimport type { CartItemState } from '../../structureDefinitions/cartState';\nimport type { UpdateCartItemPayload } from './cartActions';\nimport { updateCartItem } from './cartActions';\n\ninterface ReplaceabilityChangePayload {\n productId: string;\n variantId?: string;\n replaceable: boolean;\n}\n\ninterface SetItemPayload {\n productId: string;\n variantId?: string;\n cartItem?: CartItemState;\n}\n\ninterface SubsituteProductPayload {\n newCartItem: ApiFullCartItem;\n prevItemId: string;\n prevProductId: string;\n prevVariantId?: string;\n}\n\nconst slice = createSlice({\n name: 'items',\n initialState: [] as CartItemState[],\n reducers: {\n changeCartItemQuantity: (\n state: CartItemState[],\n action: PayloadAction<UpdateCartItemPayload>,\n ) => {\n const index = state.findIndex(\n (item: CartItemState) =>\n item.productId === action.payload.productId &&\n item.variantId === action.payload.variantId,\n );\n if (index === -1) return;\n state[index].quantity = action.payload.quantity;\n },\n changeCartItemReplaceability: (\n state: CartItemState[],\n action: PayloadAction<ReplaceabilityChangePayload>,\n ) => {\n const index = state.findIndex(\n (item: CartItemState) =>\n item.productId === action.payload.productId &&\n item.variantId === action.payload.variantId,\n );\n if (index === -1) return;\n state[index].itemReplaceable = action.payload.replaceable;\n },\n setAllCartItemsReplaceability: (state: CartItemState[], action: PayloadAction<boolean>) => {\n for (let i = 0; i < state.length; i += 1) {\n state[i].itemReplaceable = action.payload;\n }\n },\n substituteProduct: (\n state: CartItemState[],\n action: PayloadAction<SubsituteProductPayload>,\n ) => {\n const index = state.findIndex(\n (item: CartItemState) =>\n item.id === action.payload.prevItemId &&\n item.productId === action.payload.prevProductId &&\n item.variantId === action.payload.prevVariantId,\n );\n if (index === -1) return;\n const { recipeMetaData, id, totalPriceData } = state[index];\n state[index] = { ...action.payload.newCartItem, recipeMetaData, id, totalPriceData };\n },\n restoreItem: (state: CartItemState[], action: PayloadAction<SetItemPayload>) => {\n const index = state.findIndex(\n (item: CartItemState) =>\n item.productId === action.payload.productId &&\n item.variantId === action.payload.variantId,\n );\n\n // remove\n if (!action.payload.cartItem && index > -1) {\n state.splice(index, 1);\n return;\n }\n\n // add\n if (action.payload.cartItem && index === -1) {\n state.push(action.payload.cartItem);\n return;\n }\n\n // set\n if (action.payload.cartItem && index > -1) {\n state[index] = action.payload.cartItem;\n }\n },\n },\n extraReducers: (builder) => {\n builder.addCase(\n updateCartItem,\n (state: CartItemState[], action: PayloadAction<UpdateCartItemPayload>) => {\n const itemIndex = state.findIndex(\n (item: CartItemState) =>\n item.productId === action.payload.productId &&\n item.variantId === action.payload.variantId,\n );\n\n // add\n if (itemIndex === -1 && action.payload.quantity > 0) {\n state.push({\n productId: action.payload.productId,\n variantId: action.payload.variantId,\n quantity: action.payload.quantity,\n });\n return;\n }\n\n // remove\n if (itemIndex > -1 && action.payload.quantity <= 0) {\n state.splice(itemIndex, 1);\n return;\n }\n\n // update\n if (itemIndex > -1 && action.payload.quantity > 0) {\n state[itemIndex].quantity = action.payload.quantity;\n }\n },\n );\n },\n});\n\nexport default slice.reducer;\n\nexport const cartActions = {\n updateCartItem,\n ...slice.actions,\n};\n","/* eslint-disable no-param-reassign */\nimport type { EntityState, PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { recipesAdapter } from '../../adapters/recipesAdapter';\nimport type { CartRecipe } from '../../structureDefinitions/cartState';\n\ninterface PortionChangePayload {\n recipeId: string;\n portions: number;\n}\n\nconst slice = createSlice({\n name: 'recipes',\n initialState: recipesAdapter.getInitialState(),\n reducers: {\n removeRecipe: (state: EntityState<CartRecipe>, action: PayloadAction<string>) => {\n recipesAdapter.removeOne(state, action.payload);\n },\n changeRecipePortions: (\n state: EntityState<CartRecipe>,\n action: PayloadAction<PortionChangePayload>,\n ) => {\n recipesAdapter.updateOne(state, {\n id: action.payload.recipeId,\n changes: { portions: action.payload.portions },\n });\n },\n },\n});\n\nexport const { actions: cartRecipeActions } = slice;\n\nexport default slice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport type { CartItemState } from '../../structureDefinitions/cartState';\n\nconst cartEditedOrderItemsSlice = createSlice({\n name: 'editedOrderItems',\n initialState: [] as CartItemState[],\n reducers: {},\n});\n\nexport const { actions: cartEditedOrderItemsActions, reducer: cartEditedOrderItemsReducer } =\n cartEditedOrderItemsSlice;\n","import type { EntityState, PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { productsAdapter } from '../../adapters/productsAdapter';\n\nconst slice = createSlice({\n name: 'itemsProductData',\n initialState: productsAdapter.getInitialState(),\n reducers: {\n setAll: (state: EntityState<ApiProduct>, action: PayloadAction<ApiProduct[]>) => {\n productsAdapter.setAll(state, action.payload);\n },\n },\n});\n\nexport default slice.reducer;\n\nexport const cartItemProductDataActions = {\n ...slice.actions,\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport type { CartItemUniqueId } from '../../structureDefinitions/cartState';\n\nconst cartPreviousOrderItemIdsSlice = createSlice({\n name: 'previousOrderItemIds',\n initialState: [] as CartItemUniqueId[],\n reducers: {},\n});\n\nexport const {\n actions: cartPreviousOrderItemIdsActions,\n reducer: cartPreviousOrderItemIdsReducer,\n} = cartPreviousOrderItemIdsSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst slice = createSlice({\n name: 'promos',\n initialState: [] as EcomPromotion[],\n reducers: {},\n});\n\nexport const { actions, reducer } = slice;\n\nexport default reducer;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { CartSection } from '../../structureDefinitions/cartState';\nimport type { UpdateCartItemPayload } from './cartActions';\nimport { updateCartItem } from './cartActions';\n\nconst cartSectionsSlice = createSlice({\n name: 'sections',\n initialState: [] as CartSection[],\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n updateCartItem,\n (state: CartSection[], action: PayloadAction<UpdateCartItemPayload>) => {\n const sectionIndex = state.findIndex(\n (section) =>\n section.productIds?.some(\n (productId) => action.payload.productId.toString() === productId,\n ) && section.productIds.length === 1,\n );\n\n if (sectionIndex > -1 && action.payload.quantity === 0) {\n // last product in section is being removed\n state.splice(sectionIndex, 1);\n }\n },\n );\n },\n});\n\nexport const { actions: cartSectionsActions, reducer: cartSectionsReducer } = cartSectionsSlice;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { CartSummaryState } from '../../structureDefinitions/cartState';\nimport { DeliveryMode } from '../../structureDefinitions/storeState';\n\nexport const getInitialState = (): CartSummaryState => {\n return {\n postCode: undefined,\n appliedVouchers: [],\n quantity: 0,\n cartId: '',\n deliveryMode: DeliveryMode.homedelivery,\n extraAmountToBeReserved: 0,\n leftToCheckout: 0,\n inCredit: 0,\n tax: 0,\n totalTaxValues: [],\n appliedOrderPromotions: [],\n deliveryFeePriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n totalPriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n productDiscountPriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n totalProductPriceWithDiscounts: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n totalDepositSum: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n productSumPriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n productSumWithoutDiscountPriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n totalDiscountPriceData: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n totalPriceExclReservationFee: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n minimumShoppingValue: {\n exclTaxPrice: undefined,\n inclTaxPrice: undefined,\n },\n };\n};\n\nconst slice = createSlice({\n name: 'summary',\n initialState: getInitialState(),\n reducers: {\n updateQuantity: (state, action: PayloadAction<number>) => {\n state.quantity = action.payload;\n return state;\n },\n },\n});\n\nexport const cartSummaryActions = { ...slice.actions };\nexport default slice.reducer;\n","import { combineReducers, createAction, createSlice } from '@reduxjs/toolkit';\n\nimport { productsAdapter } from '../../adapters/productsAdapter';\nimport { recipesAdapter } from '../../adapters/recipesAdapter';\nimport cartLoadingReducer, {\n getInitialState as getCartLoadingInitialState,\n} from './cartApiStateSlice';\nimport { cartEditedOrderItemsReducer } from './cartEditedOrderItemsSlice';\nimport {\n cartEditOrderReducer,\n getInitialState as getCartEditOrderInitialState,\n} from './cartEditOrderSlice';\nimport cartItemsProductDataReducer from './cartItemsProductDataSlice';\nimport cartItemsReducer from './cartItemsSlice';\nimport { cartPreviousOrderItemIdsReducer } from './cartPreviousOrderItemIdsSlice';\nimport cartPromosReducer from './cartPromosSlice';\nimport cartRecipesReducer from './cartRecipesSlice';\nimport { cartSectionsReducer } from './cartSectionsSlice';\nimport cartSummaryReducer, {\n getInitialState as getCartSummaryInitialState,\n} from './cartSummarySlice';\nimport {\n cartTimeslotReducer,\n getInitialState as getTimeslotInitialState,\n} from './cartTimeslotSlice';\n\ntype CartState = ReturnType<typeof combined>;\n\nconst getInitialState = (): CartState => ({\n summary: getCartSummaryInitialState(),\n items: [],\n itemsProductData: productsAdapter.getInitialState(),\n previousOrderItemIds: [],\n editedOrderItems: [],\n recipes: recipesAdapter.getInitialState(),\n promos: [],\n editOrder: getCartEditOrderInitialState(),\n cartLoading: getCartLoadingInitialState(),\n timeslot: getTimeslotInitialState(),\n sections: [],\n});\n\nexport const setFullCart = createAction<CartState>('cart/setFullCart');\n\nconst combined = combineReducers({\n summary: cartSummaryReducer,\n items: cartItemsReducer,\n itemsProductData: cartItemsProductDataReducer,\n previousOrderItemIds: cartPreviousOrderItemIdsReducer,\n editedOrderItems: cartEditedOrderItemsReducer,\n promos: cartPromosReducer,\n recipes: cartRecipesReducer,\n sections: cartSectionsReducer,\n editOrder: cartEditOrderReducer,\n cartLoading: cartLoadingReducer,\n timeslot: cartTimeslotReducer,\n});\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(setFullCart, (state, action) => {\n return action.payload;\n });\n builder.addDefaultCase((state, action) => combined(state, action));\n },\n});\n\nexport default cartSlice.reducer;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ApiHybrisTimeslot } from '../../../api/timeslots/timeslotsApi';\nimport type { DeliveryTimeSlotState } from '../../structureDefinitions/timeslotState';\nimport { checkoutResetAction } from '../checkout/checkoutActions';\n\nexport const getInitialState = (): DeliveryTimeSlotState => ({\n timeslot: {\n id: null,\n ecoFriendly: false,\n expectETANotification: false,\n endTime: 0,\n fullyBooked: false,\n maxOrderTime: 0,\n shippingType: '',\n startTime: 0,\n storeId: '',\n timeSlotDay: '',\n timeSlotTime: '',\n timeslotType: 'REGULAR',\n },\n isSelected: false,\n isInitialized: false,\n});\n\nconst slice = createSlice({\n name: 'timeslot',\n initialState: getInitialState(),\n reducers: {\n selectTimeslot(state: DeliveryTimeSlotState, action: PayloadAction<ApiHybrisTimeslot>) {\n if (!action.payload || !action.payload.id) {\n return {\n ...getInitialState(),\n isInitialized: true,\n };\n }\n\n return {\n ...state,\n isSelected: true,\n isInitialized: true,\n timeslot: action.payload,\n };\n },\n },\n extraReducers: (builder) => {\n builder.addCase(checkoutResetAction, () => {\n return getInitialState();\n });\n },\n});\n\nexport const { actions: cartTimeslotActions, reducer: cartTimeslotReducer } = slice;\n","import { createAction } from '@reduxjs/toolkit';\n\nexport const checkoutResetAction = createAction('checkout/reset');\nexport const checkoutErrorAction = createAction<string>('checkout/error');\nexport const checkoutInitAction = createAction('checkout/init');\nexport const checkoutSuccessAction = createAction('checkout/success');\nexport const checkoutClearAction = createAction('checkout/clear');\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { MessageToDriverState } from '../../structureDefinitions/checkoutState';\nimport { checkoutResetAction } from './checkoutActions';\n\nconst initialState: MessageToDriverState = {\n isFetching: false,\n isInitialized: false,\n message: '',\n};\n\nconst slice = createSlice({\n name: 'messageToDriver',\n initialState,\n reducers: {\n startFetch: (state: MessageToDriverState) => {\n state.isFetching = true;\n },\n finishFetch: (state: MessageToDriverState, action: PayloadAction<string>) => {\n state.isFetching = false;\n state.message = action.payload;\n state.isInitialized = true;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(checkoutResetAction, () => {\n return initialState;\n });\n },\n});\n\nexport default slice.reducer;\n\nexport const { actions } = slice;\n","import { combineReducers, createReducer } from '@reduxjs/toolkit';\n\nimport {\n checkoutClearAction,\n checkoutErrorAction,\n checkoutInitAction,\n checkoutResetAction,\n checkoutSuccessAction,\n} from './checkoutActions';\nimport messageToDriverReducer, { actions as messageToDriverActions } from './messageToDriverSlice';\nimport { paymentMethodReducer } from './paymentSlice';\nimport { punchoutReducer } from './punchoutSlice';\nimport { selectedDeliveryAddressReducer } from './selectedDeliveryAddressSlice';\nimport { selectedInvoiceAddressReducer } from './selectedInvoiceAddress';\nimport { subscriptionFrequencyReducer } from './subscriptionSlice';\n\nconst errorReducer = createReducer('', {\n [checkoutErrorAction.type]: (_, action) => action.payload,\n [checkoutInitAction.type]: () => '',\n [checkoutSuccessAction.type]: () => '',\n [checkoutClearAction.type]: () => '',\n});\n\nconst combined = combineReducers({\n selectedDeliveryAddress: selectedDeliveryAddressReducer,\n subscriptionFrequency: subscriptionFrequencyReducer,\n selectedPaymentMethod: paymentMethodReducer,\n selectedInvoiceAddress: selectedInvoiceAddressReducer,\n messageToDriver: messageToDriverReducer,\n punchout: punchoutReducer,\n error: errorReducer,\n});\n\nexport const checkoutActions = {\n error: checkoutErrorAction,\n init: checkoutInitAction,\n success: checkoutSuccessAction,\n clear: checkoutClearAction,\n reset: checkoutResetAction,\n messageToDriverActions,\n};\n\nexport default combined;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { PaymentCode, PaymentState } from '../../structureDefinitions/checkoutState';\n\nconst initialPaymentState: PaymentState = {\n code: null,\n isInitialized: false,\n};\n\nconst slice = createSlice({\n name: 'paymentState',\n initialState: initialPaymentState,\n reducers: {\n setMethod: (state: PaymentState, action: PayloadAction<PaymentCode>) => {\n state.code = action.payload;\n state.isInitialized = false;\n },\n setInitialized: (state: PaymentState, action: PayloadAction<boolean>) => {\n state.isInitialized = action.payload;\n },\n setKlarnaInitialized: (state: PaymentState, action: PayloadAction<boolean>) => {\n state.isKlarnaLoaded = action.payload;\n },\n setKlarnaPostalCode: (state: PaymentState, action: PayloadAction<string>) => {\n state.klarnaPostalCode = action.payload;\n },\n setState: (state: PaymentState, action: PayloadAction<PaymentState>) => {\n return action.payload;\n },\n },\n});\n\nexport const { actions: paymentMethodActions, reducer: paymentMethodReducer } = slice;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialPunchoutState = {\n phoneNumber: undefined as string | undefined,\n};\n\nconst slice = createSlice({\n name: 'punchout',\n initialState: initialPunchoutState,\n reducers: {\n setPhoneNumber: (state, action: PayloadAction<string | undefined>) => {\n state.phoneNumber = action.payload;\n },\n },\n});\n\nexport const { actions: punchoutActions, reducer: punchoutReducer } = slice;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\nimport cartApi from '../../../api/cart/cartApi';\nimport { isLocalApiBaseException } from '../../../exceptions/exceptionUtils';\nimport type { DeliveryAddressState } from '../../structureDefinitions/checkoutState';\nimport { checkoutResetAction } from './checkoutActions';\n\nconst initialState: DeliveryAddressState = {\n isInitialized: false,\n isFetching: false,\n error: '',\n};\n\nexport const selectDeliveryAddress = createAsyncThunk<string, string, { rejectValue: string }>(\n 'cart/selectDeliveryAddress',\n async (addressId: string, { rejectWithValue }) => {\n try {\n await cartApi.deliveryAddresses.select(addressId);\n return addressId;\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n return rejectWithValue(err.friendlyMessage);\n }\n return rejectWithValue(appConfig.coopSettings.ecommerce.errorMessage.general);\n }\n },\n);\n\nexport const getDeliveryAddress = createAsyncThunk<string, void, { rejectValue: string }>(\n 'cart/getDeliveryAddress',\n async (args, { rejectWithValue }) => {\n try {\n const deliveryAddress = await cartApi.deliveryAddresses.current();\n return deliveryAddress && deliveryAddress.id;\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n return rejectWithValue(err.friendlyMessage);\n }\n return rejectWithValue(appConfig.coopSettings.ecommerce.errorMessage.general);\n }\n },\n);\n\nconst slice = createSlice({\n name: 'deliveraddress',\n initialState,\n reducers: {\n set: (state: DeliveryAddressState, action: PayloadAction<DeliveryAddressState>) => {\n return action.payload;\n },\n reset: () => {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(selectDeliveryAddress.pending.type, (state: DeliveryAddressState) => {\n state.isFetching = true;\n state.error = '';\n });\n builder.addCase(selectDeliveryAddress.rejected, (state: DeliveryAddressState, action) => {\n state.error = action.payload ? action.payload : action.error.message;\n state.isFetching = false;\n });\n builder.addCase(\n selectDeliveryAddress.fulfilled.type,\n (state: DeliveryAddressState, action: PayloadAction<string>) => {\n state.id = action.payload;\n state.isInitialized = state.isInitialized || !!action.payload;\n state.isFetching = false;\n state.error = '';\n },\n );\n builder.addCase(getDeliveryAddress.pending.type, (state: DeliveryAddressState) => {\n state.isFetching = true;\n state.error = '';\n });\n builder.addCase(getDeliveryAddress.rejected, (state: DeliveryAddressState, action) => {\n state.isFetching = false;\n state.error = action.payload ? action.payload : action.error.message;\n });\n builder.addCase(\n getDeliveryAddress.fulfilled.type,\n (state: DeliveryAddressState, action: PayloadAction<string>) => {\n state.id = action.payload;\n state.isInitialized = true;\n state.isFetching = false;\n state.error = '';\n },\n );\n builder.addCase(checkoutResetAction, () => {\n return initialState;\n });\n },\n});\n\n/** Do not use this one, use checkoutFlow instead\n * */\nexport const selectedDeliveryAddressActions = {\n select: selectDeliveryAddress,\n fetch: getDeliveryAddress,\n reset: slice.actions.reset,\n};\n\nexport const { reducer: selectedDeliveryAddressReducer } = slice;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\n/* eslint-disable no-param-reassign */\nimport type { InvoiceAddressState } from '../../structureDefinitions/checkoutState';\nimport type { InvoiceAddress } from '../../structureDefinitions/userState';\nimport { checkoutResetAction } from './checkoutActions';\n\nconst getInitialState = (): InvoiceAddressState => {\n return {\n isInitialized: false,\n isFetching: false,\n invoiceAddress: undefined,\n };\n};\n\nconst slice = createSlice({\n name: 'selectedInvoiceAddress',\n initialState: getInitialState(),\n reducers: {\n isFetching: (state: InvoiceAddressState, action: PayloadAction<boolean>) => {\n state.isFetching = action.payload;\n },\n set: (state: InvoiceAddressState, action: PayloadAction<InvoiceAddress>) => {\n state.isFetching = false;\n state.isInitialized = true;\n state.invoiceAddress = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(checkoutResetAction.type, () => {\n return getInitialState();\n });\n },\n});\n\nexport const { reducer: selectedInvoiceAddressReducer, actions: selectedInvoiceAddressActions } =\n slice;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { SubscriptionFrequency } from '../../structureDefinitions/checkoutState';\nimport { checkoutResetAction } from './checkoutActions';\n\nconst slice = createSlice({\n name: 'subscriptionFrequency',\n initialState: null as SubscriptionFrequency | null,\n reducers: {\n set: (state, action: PayloadAction<SubscriptionFrequency | null>) => {\n return action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(checkoutResetAction, () => {\n return null;\n });\n },\n});\n\nexport const { actions: subscriptionFrequencyActions, reducer: subscriptionFrequencyReducer } =\n slice;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\n/* eslint-disable no-param-reassign */\n\ninterface CurrentPageState {\n title?: string;\n a11yTitle?: string;\n canonicalPathName?: string;\n gaPageTypeName?: string;\n /** announces the text on the page */\n a11yAnnounceText?: string;\n\n /**\n * Includes leading question mark\n */\n queryString?: string;\n mountCounter: number;\n}\n\nconst initialState: CurrentPageState = {\n canonicalPathName: undefined,\n title: undefined,\n a11yTitle: undefined,\n mountCounter: 0,\n gaPageTypeName: undefined,\n queryString: undefined,\n a11yAnnounceText: undefined,\n};\n\nconst slice = createSlice({\n name: 'currentPage',\n initialState,\n reducers: {\n setPageGaData: (\n state,\n action: PayloadAction<{\n title: string;\n canonicalUrl: string;\n gaPageTypeName?: string;\n queryString?: string;\n }>,\n ) => {\n const { pathname } = new URL(action.payload.canonicalUrl);\n\n state.title = action.payload.title;\n state.canonicalPathName = pathname;\n state.gaPageTypeName = action.payload.gaPageTypeName;\n state.queryString = action.payload.queryString;\n\n state.mountCounter += 1;\n },\n setTitle: (state, action: PayloadAction<string>) => {\n state.title = action.payload;\n state.a11yTitle = undefined; // When page changes, there shouldn't be any custom a11y left from the previous page.\n },\n setA11yTitle: (state, action: PayloadAction<string>) => {\n state.a11yTitle = action.payload;\n },\n setA11yAnnounceText: (state, action: PayloadAction<string>) => {\n state.a11yAnnounceText = action.payload;\n },\n },\n});\n\nexport const currentPageActions = slice.actions;\n\nexport default slice.reducer;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ApiBaseException } from '../../../exceptions/exceptionDefinitions';\nimport type { ErrorState } from '../../structureDefinitions/errorsState';\nimport { ErrorGroup } from '../../structureDefinitions/errorsState';\n\nconst initialState: ErrorState = {\n [ErrorGroup.Cart]: [],\n [ErrorGroup.Critical]: [],\n [ErrorGroup.Modal]: [],\n [ErrorGroup.Global]: [],\n};\n\ninterface AddErrorPayload {\n group: ErrorGroup;\n error: ApiBaseException;\n}\n\nconst slice = createSlice({\n name: 'errors',\n initialState,\n reducers: {\n addSingle: (state: ErrorState, action: PayloadAction<AddErrorPayload>) => {\n if (action.payload.error) {\n state[action.payload.group].push(action.payload.error);\n }\n },\n clear: (state: ErrorState, action: PayloadAction<ErrorGroup>) => {\n state[action.payload] = [];\n },\n },\n});\n\nexport const { actions: errorsActions, reducer: errorsReducer } = slice;\n","/* eslint-disable no-param-reassign */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\n\nconst initialState = appConfig.coopSettings.featureFlags;\n\ntype OnlyBoolean<T> = { [K in keyof T]: T[K] extends boolean ? K : never }[keyof T];\ntype OnlyBooleanFlags = Exclude<OnlyBoolean<typeof initialState>, undefined>;\n\nconst slice = createSlice({\n name: 'featureFlags',\n initialState,\n reducers: {\n setBool: (state, action: PayloadAction<{ key: OnlyBooleanFlags; value: boolean }>) => {\n state[action.payload.key] = action.payload.value;\n },\n },\n});\n\nexport const featureFlagsActions = slice.actions;\n\nexport default slice.reducer;\n","import { createAction } from '@reduxjs/toolkit';\n\nimport type { ModalType } from '../../structureDefinitions/modalState';\n\nexport interface OpenModalPayload {\n id: string | null;\n type: ModalType | string;\n}\n\nexport const openModal = createAction<OpenModalPayload>('modal/open');\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ModalState } from '../../structureDefinitions/modalState';\nimport { FlyInType } from '../../structureDefinitions/modalState';\nimport { cncNavigateTo, cncSetTo } from '../ui/uiActions';\nimport type { OpenModalPayload } from './modalActions';\nimport { openModal } from './modalActions';\n\nconst initialState: ModalState = {\n id: null,\n type: null,\n isLoading: false,\n blocked: false,\n isOpen: false,\n};\n\nconst slice = createSlice({\n name: 'modal',\n initialState,\n reducers: {\n loading: (state: ModalState) => {\n state.isLoading = true;\n state.blocked = true;\n },\n close: (state: ModalState) => {\n state.id = null;\n state.isOpen = false;\n state.isLoading = false;\n state.blocked = false;\n },\n idle: (state: ModalState) => {\n state.isLoading = false;\n state.blocked = false;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(cncNavigateTo, (state: ModalState) => {\n state.id = null;\n state.type = FlyInType.CncFlyIn;\n state.isOpen = true;\n });\n builder.addCase(cncSetTo, (state: ModalState) => {\n state.id = null;\n state.type = FlyInType.CncFlyIn;\n state.isOpen = true;\n });\n builder.addCase(openModal, (state: ModalState, action: PayloadAction<OpenModalPayload>) => {\n state.id = action.payload.id;\n state.type = action.payload.type;\n state.isOpen = true;\n });\n },\n});\n\nconst actionsAndReducer = {\n modalActions: { open: openModal, ...slice.actions },\n modalReducer: slice.reducer,\n};\nexport const { modalActions, modalReducer } = actionsAndReducer;\n","import { createAction } from '@reduxjs/toolkit';\n\nimport type { IApiStore } from '../../../../../models/ecommerce/store/storeModel';\nimport type { DeliveryMode } from '../../structureDefinitions/storeState';\n\nexport interface SelectPickupStorePayload {\n store: IApiStore;\n pickupPointId: string;\n}\n\nexport const selectPickupStore = createAction<SelectPickupStorePayload>('store/selectPickupStore');\n\nexport interface SelectHomeDeliveryStorePayload {\n store: IApiStore;\n postalCode: string;\n}\nexport const selectHomeDeliveryStore = createAction<SelectHomeDeliveryStorePayload>(\n 'store/selectHomeDeliveryStore',\n);\n\nexport interface SyncStorePayload {\n deliveryMode?: DeliveryMode;\n postalCode?: string;\n productionUnitId: string;\n pickupPointId?: string;\n storeName?: string;\n}\n\nexport const syncStore = createAction<SyncStorePayload>('store/syncStore');\nexport const syncStoreWithCookie = createAction('store/syncStoreWithCookie');\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport persistance from '../../../persistance/persistance';\nimport type { StoreState } from '../../structureDefinitions/storeState';\nimport { DeliveryMode } from '../../structureDefinitions/storeState';\nimport type {\n SelectHomeDeliveryStorePayload,\n SelectPickupStorePayload,\n SyncStorePayload,\n} from './storeActions';\nimport {\n selectHomeDeliveryStore,\n selectPickupStore,\n syncStore,\n syncStoreWithCookie,\n} from './storeActions';\n\nconst getInitialState = (): StoreState => {\n const storeContext = persistance.storeContext.get();\n let deliveryMode: DeliveryMode | undefined;\n\n if (!storeContext.zipCode && storeContext.pickupPointId) {\n deliveryMode = DeliveryMode.pickup;\n }\n\n if (storeContext.zipCode && !storeContext.pickupPointId) {\n deliveryMode = DeliveryMode.homedelivery;\n }\n\n return {\n deliveryMode,\n selectedStore: undefined,\n selectedZipCode: storeContext.zipCode || undefined,\n selectedPickupPointId: storeContext.pickupPointId || undefined,\n productionUnitId: storeContext.productionUnitId,\n storeName: storeContext.storeName || undefined,\n };\n};\n\nconst slice = createSlice({\n name: 'store',\n initialState: getInitialState(),\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n selectPickupStore,\n (state: StoreState, action: PayloadAction<SelectPickupStorePayload>) => {\n state.deliveryMode = DeliveryMode.pickup;\n state.selectedStore = action.payload.store;\n state.selectedZipCode = undefined;\n state.selectedPickupPointId = action.payload.pickupPointId;\n state.productionUnitId = action.payload.store.productionUnitIdentifier;\n state.storeName = action.payload.store.name;\n },\n );\n builder.addCase(\n selectHomeDeliveryStore,\n (state: StoreState, action: PayloadAction<SelectHomeDeliveryStorePayload>) => {\n state.deliveryMode = DeliveryMode.homedelivery;\n state.selectedStore = action.payload.store;\n state.selectedPickupPointId = undefined;\n state.selectedZipCode = action.payload.postalCode;\n state.productionUnitId = action.payload.store.productionUnitIdentifier;\n state.storeName = action.payload.store.name || undefined;\n },\n );\n /** Sync with direct hybris calls */\n builder.addCase(syncStore, (state: StoreState, action: PayloadAction<SyncStorePayload>) => {\n state.deliveryMode = action.payload.deliveryMode || undefined;\n state.selectedPickupPointId = action.payload.pickupPointId || undefined;\n state.productionUnitId = action.payload.productionUnitId;\n state.selectedZipCode = action.payload.postalCode || undefined;\n state.storeName = action.payload.storeName || undefined;\n });\n /** Sync with cookie from episerver/backend */\n builder.addCase(syncStoreWithCookie, (state: StoreState) => {\n const cookieState = getInitialState();\n state.deliveryMode = cookieState.deliveryMode || undefined;\n state.selectedPickupPointId = cookieState.selectedPickupPointId || undefined;\n state.productionUnitId = cookieState.productionUnitId;\n state.selectedZipCode = cookieState.selectedZipCode || undefined;\n state.storeName = cookieState.storeName || undefined;\n });\n },\n});\n\nexport const storeActions = {\n ...slice.actions,\n selectPickupStore,\n selectHomeDeliveryStore,\n syncStore,\n syncStoreWithCookie,\n};\n\nexport default slice.reducer;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\n/* eslint-disable no-param-reassign */\nimport type { CncStep, CncUiState } from '../../structureDefinitions/uiState';\nimport { cncNavigateTo, cncSetTo } from './uiActions';\n\nconst initialState: CncUiState = {\n stepTrail: [],\n reloadOnClose: false,\n currentStepNavigationParams: null,\n previewPostalCode: null,\n};\n\nconst slice = createSlice({\n name: 'cnc',\n initialState,\n reducers: {\n goBack: (state: CncUiState) => {\n if (state.stepTrail.length > 1) {\n state.stepTrail.pop();\n }\n state.currentStepNavigationParams = null;\n },\n forceReloadOnClose: (state: CncUiState, action: PayloadAction<boolean>) => {\n state.reloadOnClose = action.payload;\n },\n clearNavigationParams: (state: CncUiState) => {\n state.currentStepNavigationParams = null;\n },\n setPreviewPostalCode: (state: CncUiState, action: PayloadAction<string>) => {\n state.previewPostalCode = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(\n cncSetTo,\n (state: CncUiState, action: PayloadAction<{ step: CncStep; param?: unknown }>) => {\n state.stepTrail = [action.payload.step];\n state.currentStepNavigationParams = action.payload.param;\n state.previewPostalCode = null;\n },\n );\n builder.addCase(\n cncNavigateTo,\n (state: CncUiState, action: PayloadAction<{ step: CncStep; param?: unknown }>) => {\n // if the action.payload component exists in trail - pop the stack until you find it\n const existingStepInTrail = state.stepTrail.indexOf(action.payload.step);\n if (existingStepInTrail !== -1) {\n state.stepTrail = [\n ...state.stepTrail.slice(0, existingStepInTrail),\n action.payload.step,\n ];\n } else {\n state.stepTrail.push(action.payload.step);\n }\n state.currentStepNavigationParams = action.payload.param;\n },\n );\n },\n});\n\nconst actions = { navigateTo: cncNavigateTo, setTo: cncSetTo, ...slice.actions };\nexport const cncUiActions = actions;\n\nexport default slice.reducer;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { isProductionEnvironment } from '../../../../../utility/environments';\n\nconst initialState = {\n mockReclamationUI: false,\n a11yDevToolEnabled: !isProductionEnvironment,\n a11yContextSpecificPageTitleAnnouncementsEnabled: !isProductionEnvironment,\n a11yFocusOnSoftNavigationEnabled: !isProductionEnvironment,\n a11yLogsInConsole: !isProductionEnvironment,\n};\n\nconst notInProd = <T>(f: (...params: T[]) => void) => {\n if (isProductionEnvironment) {\n // eslint-disable-next-line no-console\n console.error(\"This code can't be executed in production environment\");\n return () => {};\n }\n return (...params: T[]) => f(...params);\n};\n\nconst slice = createSlice({\n name: 'debug',\n initialState,\n reducers: {\n mockReclamationUI: (state, action: PayloadAction<boolean>) => {\n notInProd(() => {\n state.mockReclamationUI = action.payload;\n })();\n },\n toggleA11yDevTool: (state, action: PayloadAction<boolean>) => {\n notInProd(() => {\n state.a11yDevToolEnabled = action.payload;\n })();\n },\n toggleA11yContextSpecificPageTitleAnnouncements: (\n state,\n action: PayloadAction<boolean>,\n ) => {\n notInProd(() => {\n state.a11yContextSpecificPageTitleAnnouncementsEnabled = action.payload;\n })();\n },\n toggleFocusOnSoftNavigation: (state, action: PayloadAction<boolean>) => {\n notInProd(() => {\n state.a11yFocusOnSoftNavigationEnabled = action.payload;\n })();\n },\n toggleA11yLogsInConsole: (state, action: PayloadAction<boolean>) => {\n notInProd(() => {\n state.a11yLogsInConsole = action.payload;\n })();\n },\n },\n});\n\nexport default slice.reducer;\n\nexport const debugActions = slice.actions;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\nimport type { CoopContentPageSize } from '../../../../../utility/coopSwiperBreakpoints';\nimport type { PriceType } from '../../../models/priceData/priceData';\nimport persistance from '../../../persistance/persistance';\nimport type { FeatureFlagsState, SharedUiState } from '../../structureDefinitions/uiState';\n\ninterface LayoutSizePayload {\n size: CoopContentPageSize;\n}\n\ninterface PriceTypePayload {\n preferredPriceType: PriceType;\n}\n\nconst getInitialState = (): SharedUiState => {\n const userId = appConfig.coopUserSettings.shoppingUserId;\n const preferredPriceType = persistance.priceTypeStorage.getCurrent(userId);\n\n let defaultSharedUiState: SharedUiState = {\n hasSideBar: false,\n hideFooterMobile: false,\n hideSubMenu: false,\n hideLoginReminder: false,\n layoutSize: 'default',\n contentPageSize: 'default',\n userName: null,\n featureFlags: {},\n preferredPriceType,\n };\n\n const domProps = document.getElementById('layoutSettings')?.innerText;\n if (domProps) {\n const parsedLayoutSettings = JSON.parse(domProps) as Partial<SharedUiState>;\n if (parsedLayoutSettings) {\n defaultSharedUiState = { ...defaultSharedUiState, ...parsedLayoutSettings };\n }\n }\n\n return defaultSharedUiState;\n};\n\nconst slice = createSlice({\n name: 'shared',\n initialState: getInitialState(),\n reducers: {\n setContentPageSize: (state: SharedUiState, action: PayloadAction<LayoutSizePayload>) => {\n return { ...state, contentPageSize: action.payload.size };\n },\n setPriceType: (state: SharedUiState, action: PayloadAction<PriceTypePayload>) => {\n return { ...state, preferredPriceType: action.payload.preferredPriceType };\n },\n setFeatureFlag: (\n state: SharedUiState,\n action: PayloadAction<Partial<FeatureFlagsState>>,\n ) => {\n return { ...state, featureFlags: { ...state.featureFlags, ...action.payload } };\n },\n },\n});\n\nconst actions = { ...slice.actions };\nexport const sharedUiActions = actions;\n\nexport default slice.reducer;\n","import { createAction } from '@reduxjs/toolkit';\n\nimport type { CncStep } from '../../structureDefinitions/uiState';\n\nexport const cncNavigateTo = createAction<{ step: CncStep; param?: unknown }>('cnc/navigateTo');\n\nexport const cncSetTo = createAction<{ step: CncStep; param?: unknown }>('cnc/setTo');\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { AnalyticsListOptions } from '../../../../analytics/analyticsHandler';\n\nexport interface UnsyncedCartItem {\n productId: string;\n variantId?: string;\n quantity: number;\n analyticsOptions: AnalyticsListOptions | null;\n}\n\nexport interface UnsyncedCartItemsState {\n items: Array<UnsyncedCartItem>;\n}\n\nconst getInitialState = (): UnsyncedCartItemsState => ({\n items: [],\n});\n\nconst slice = createSlice({\n name: 'unsyncedCartItems',\n initialState: getInitialState(),\n reducers: {\n addUnsyncedCartItem: (\n state: UnsyncedCartItemsState,\n action: PayloadAction<UnsyncedCartItem>,\n ) => {\n const existingIndex = state.items.findIndex(\n (item) =>\n item.productId === action.payload.productId &&\n item.variantId === action.payload.variantId,\n );\n\n if (existingIndex !== -1) {\n state.items[existingIndex] = action.payload;\n } else {\n state.items.push(action.payload);\n }\n },\n addUnsyncedCartItems: (\n state: UnsyncedCartItemsState,\n action: PayloadAction<UnsyncedCartItem[]>,\n ) => {\n action.payload.forEach((unsyncedItem) => {\n const existingIndex = state.items.findIndex(\n (item) =>\n item.productId === unsyncedItem.productId &&\n item.variantId === unsyncedItem.variantId,\n );\n\n if (existingIndex !== -1) {\n state.items[existingIndex] = unsyncedItem;\n } else {\n state.items.push(unsyncedItem);\n }\n });\n },\n removeUnsyncedCartItems: (state: UnsyncedCartItemsState) => {\n state.items = [];\n },\n },\n});\n\nexport const { actions: unsyncedCartItemsActions } = slice;\n\nexport default slice.reducer;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\nimport { isProductionEnvironment } from '../../../../../utility/environments';\nimport type {\n MunicipalUserInfo,\n MunicipalUserInfoState,\n} from '../../structureDefinitions/userState';\n\nconst getInitialState = (): MunicipalUserInfoState => {\n return {\n isInitialized: false,\n info: undefined,\n isShoppingForAnother: appConfig.coopUserSettings.isShoppingForAnother,\n isOrdererMunicipal: appConfig.coopUserSettings.isOrdererMunicipal,\n isShoppingForMunicipal: appConfig.coopUserSettings.isShoppingForMunicipal,\n };\n};\n\nconst slice = createSlice({\n name: 'municipalUserInfo',\n initialState: getInitialState(),\n reducers: {\n set: (state: MunicipalUserInfoState, action: PayloadAction<MunicipalUserInfo>) => {\n if (!action.payload) return getInitialState();\n state.isInitialized = true;\n state.info = action.payload;\n },\n mockShoppingForAnother: (state: MunicipalUserInfoState) => {\n if (!isProductionEnvironment) {\n state.isShoppingForAnother = true;\n state.isShoppingForMunicipal = true;\n }\n },\n },\n});\n\nexport const { actions: municipalUserInfoActions, reducer: municipalUserInfoReducer } = slice;\n","import type { PayloadAction } from '@reduxjs/toolkit';\nimport { combineReducers, createAction, createReducer, createSlice } from '@reduxjs/toolkit';\n\nimport { userAddressAdapter } from '../../adapters/userAddressAdapter';\nimport type { UserAddress } from '../../structureDefinitions/userState';\n\nconst userAddressesSlice = createSlice({\n name: 'userAddresses',\n initialState: userAddressAdapter.getInitialState(),\n reducers: {\n setUserAddresses: (state, action: PayloadAction<UserAddress[]>) => {\n userAddressAdapter.setAll(state, action.payload);\n },\n updateUserAddress: (state, action: PayloadAction<UserAddress>) => {\n userAddressAdapter.upsertOne(state, action.payload);\n },\n createUserAddress: (state, action: PayloadAction<UserAddress>) => {\n userAddressAdapter.addOne(state, action.payload);\n },\n removeUserAddress: (state, action: PayloadAction<string>) => {\n userAddressAdapter.removeOne(state, action.payload);\n },\n },\n});\n\nconst fetchingAction = createAction('userAddresses/fetching');\nconst idleAction = createAction('userAddresses/idle');\n\nconst isFetchingReducer = createReducer(false, {\n [fetchingAction.type]: () => true,\n [idleAction.type]: () => false,\n});\n\nconst combined = combineReducers({\n addresses: userAddressesSlice.reducer,\n isFetching: isFetchingReducer,\n});\n\nexport default combined;\n\nconst { updateUserAddress, createUserAddress, removeUserAddress, setUserAddresses } =\n userAddressesSlice.actions;\n\nexport const userAddressActions = {\n setAll: setUserAddresses,\n create: createUserAddress,\n update: updateUserAddress,\n remove: removeUserAddress,\n fetching: fetchingAction,\n idle: idleAction,\n};\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { UserInfo } from '../../structureDefinitions/userState';\n\ninterface UserInfoState {\n isInitialized: boolean;\n info?: UserInfo;\n}\n\nconst getInitialState = (): UserInfoState => {\n return {\n isInitialized: false,\n info: undefined,\n };\n};\n\nconst slice = createSlice({\n name: 'userInfo',\n initialState: getInitialState(),\n reducers: {\n set: (state, action: PayloadAction<UserInfo>) => {\n if (!action.payload) return getInitialState();\n state.isInitialized = true;\n state.info = action.payload;\n },\n },\n});\n\nexport const { actions: userInfoActions, reducer: userInfoReducer } = slice;\n","/* eslint-disable no-param-reassign */\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { appConfig } from '../../../../../appConfig';\nimport { UserType } from '../../structureDefinitions/userState';\n\nexport interface UserTypeState {\n type?: UserType;\n isInitialized: boolean;\n}\n\nexport const getInitialUserType = (): UserType => {\n if (!appConfig.coopUserSettings.isAuthenticated) {\n return UserType.anonymous;\n }\n\n // TOD add municipal check\n\n if (appConfig.coopUserSettings.punchout.isPunchout === true) {\n return UserType.punchout;\n }\n\n if (appConfig.coopUserSettings.isCompany) {\n return UserType.company;\n }\n\n return UserType.private;\n};\n\nconst getInitialState = () => {\n return {\n isInitialized: false,\n type: getInitialUserType(),\n };\n};\n\nconst slice = createSlice({\n name: 'userType',\n initialState: getInitialState(),\n reducers: {\n set: (state: UserTypeState, action: PayloadAction<UserType>) => {\n if (!action.payload) return getInitialState();\n\n state.isInitialized = true;\n state.type = action.payload;\n },\n },\n});\n\nexport const { actions: userTypeActions, reducer: userTypeReducer } = slice;\n","import type { ApiBaseException } from '../../exceptions/exceptionDefinitions';\n\n// could be Klarna here etc, and its up to component on how to display them\nexport enum ErrorGroup {\n Critical = 'Critical',\n Global = 'Global',\n Cart = 'Cart',\n Modal = 'Modal',\n}\n\nexport interface ErrorState extends Record<ErrorGroup, ApiBaseException[]> {}\n","export const enum StoreChangeNotificationType {\n assortmentChange = 'assortmentChange',\n expressDeliverySelected = 'expressDeliverySelected',\n deliveryTimeslotSelected = 'deliveryTimeslotSelected',\n pickupTimeslotSelected = 'pickupTimeslotSelected',\n cancelEditOrder = 'cancelEditOrder',\n}\n\nexport enum FoodRegisteredCompanyModalType {\n registerConfirmation = 'registerConfirmation',\n}\n\nexport enum WeeklyMenuModalType {\n addToCart = 'weeklyMenuAddToCart',\n confirmation = 'confirmation',\n}\n\nexport enum LastOrdersModalType {\n buyAgain = 'lastOrderBuyAgain',\n}\n\nexport enum SavedCartsModalType {\n buyAgain = 'savedCartsBuyAgain',\n}\n\nexport const enum ReplaceMissingItemsNotificationType {\n itemRemovedFromCart = 'itemRemovedFromCart',\n itemReplaced = 'itemReplaced',\n exitInterruption = 'exitInterruption',\n}\n\nexport const enum MyOrdersModalType {\n orderReclamation = 'orderReclamation',\n}\n\nexport const enum EditOrderNotificationType {\n startEditOrder = 'startEditOrder',\n}\n\nexport const enum ShoppingListNotificationType {\n listDeleteWarning = 'listDeleteWarning',\n}\n\nexport const enum ShoppingListType {\n addToShoppingList = 'addToShoppingList',\n}\n\nexport const enum ZoomProductImageType {\n zoomProductImage = 'zoomProductImage',\n}\n\nexport enum FlyInType {\n SiteNavigation = 'SiteNavigation',\n CncFlyIn = 'CncFlyIn',\n ProductSearchResultFilters = 'ProductSearchResultFilters',\n SustainabilityDeclaration = 'SustainabilityDeclaration',\n SaveCart = 'SaveCart',\n PointShopProductDetails = 'PointShopProductDetails',\n MyReceipts = 'MyReceipts',\n SubscriptionAddressChange = 'SubscriptionAddressChange',\n SubscriptionTimeslotChange = 'SubscriptionTimeslotChange',\n SubscriptionPaymentChange = 'SubscriptionPaymentChange',\n RecipePageFilter = 'RecipePageFilter',\n EcommerceSideMenu = 'EcommerceSideMenu',\n MyProfileMenu = 'MyProfileMenu',\n}\n\nexport enum StoreModalType {\n StoreSearchMap = 'StoreSearchMap',\n StoreInformation = 'StoreInformation',\n}\n\nexport enum RecipeModalType {\n RecipeModal = 'RecipeModal',\n RecipeItemsReplacementModal = 'RecipeItemsReplacementModal',\n}\n\nexport const enum DropdownType {\n Search = 'search',\n MyFavorites = 'myFavorites',\n}\n\nexport const enum FullOverlayType {\n MobilePrimaryNavigation = 'mobilePrimaryNavigation',\n CustomerServiceScreening = 'customerServiceScreening',\n CustomerServiceForm = 'customerServiceForm',\n ConsentBox = 'consentBox',\n}\n\nexport const enum TimeslotModalType {\n TimeslotExpiration = 'timeslotExpiration',\n TiemslotMaxOrderTimePassed = 'tiemslotMaxOrderTimePassed',\n MobileTimeslotPreview = 'mobileTimeslotPreview',\n}\n\nexport type ProductModalType = 'ReplaceItemNotification' | 'MaxPromotionUsage';\nexport type CheckoutModalType = 'ReservationInfo' | PunchoutModalType;\ntype PunchoutModalType =\n | 'PunchoutInternalReferenceNotification'\n | 'PunchoutContactPhoneNotification';\n\nexport type BonusPointsInfoModalType = 'BonusPointsInfo';\n\nexport type ModalType =\n | FlyInType\n | DropdownType\n | StoreChangeNotificationType\n | EditOrderNotificationType\n | ShoppingListNotificationType\n | ShoppingListType\n | MyOrdersModalType\n | RecipeModalType\n | ReplaceMissingItemsNotificationType\n | FullOverlayType\n | TimeslotModalType\n | StoreModalType\n | WeeklyMenuModalType\n | FoodRegisteredCompanyModalType\n | ProductModalType\n | ZoomProductImageType\n | LastOrdersModalType\n | PunchoutModalType\n | BonusPointsInfoModalType\n | CheckoutModalType;\n\nexport interface ModalState {\n type: ModalType | string | null;\n id: string | null; // if the same multiple components are visible that use the same ModalType, fill this field to differenciate them\n isLoading: boolean;\n blocked: boolean;\n isOpen: boolean;\n}\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\n\nexport const enum DeliveryMode {\n pickup = 'pickup',\n homedelivery = 'homedelivery',\n}\n\nexport interface StoreState {\n selectedStore: IApiStore | undefined;\n deliveryMode: DeliveryMode | undefined;\n selectedZipCode: string | undefined; // Home delivery only\n selectedPickupPointId: string | undefined;\n productionUnitId: string;\n storeName: string | undefined;\n}\n","import type {\n CoopContentPageSize,\n CoopLayoutSize,\n} from '../../../../utility/coopSwiperBreakpoints';\nimport type { PriceType } from '../../models/priceData/priceData';\n\nexport interface SharedUiState {\n hasSideBar: boolean;\n hideFooterMobile: boolean;\n hideSubMenu: boolean;\n layoutSize: CoopLayoutSize;\n contentPageSize: CoopContentPageSize;\n hideLoginReminder: boolean;\n userName: string | null;\n featureFlags: FeatureFlagsState;\n preferredPriceType?: PriceType;\n}\n\nexport interface CncUiState {\n stepTrail: CncStep[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentStepNavigationParams: any; // can be anything when something needs to be passed from one step to another\n reloadOnClose: boolean;\n previewPostalCode: string | null;\n}\n\nexport interface FeatureFlagsState {\n // add new flags here\n}\n\nexport enum CncStep {\n MiniCart = 'MiniCart',\n TimeSlots = 'TimeSlots',\n Map = 'Map',\n PostalCodeSelector = 'PostalCodeSelector',\n PostalCodePreview = 'PostalCodePreview',\n}\n","import type { EntityState } from '@reduxjs/toolkit';\n\nexport interface MunicipalUserInfoState {\n isInitialized: boolean;\n info?: MunicipalUserInfo;\n isShoppingForAnother: boolean;\n isOrdererMunicipal: boolean;\n isShoppingForMunicipal: boolean;\n}\n\nexport interface UserInfo {\n selfOrder: boolean;\n defaultAddress: UserAddress;\n orderPickerMessage: string;\n invoiceReference: string;\n globalLocationNumber: string;\n redistributorOfFood?: 'TRUE' | 'FALSE' | 'NOT_SET';\n companyName: string;\n firstName: string;\n lastName: string;\n}\n\nexport interface MunicipalUserInfo {\n firstName: string;\n lastName: string;\n municipalityUnitCode: string;\n municipalityCode: string;\n commentAboutCustomer: string;\n}\n\nexport interface UserAddresses {\n isFetching: boolean;\n error: string;\n selectedAddressId: string;\n addresses: EntityState<UserAddress>;\n}\n\nexport interface UserAddress {\n id: string;\n firstName: string;\n lastName: string;\n town: string;\n postalCode: string;\n email: string;\n doorCode?: string;\n companyName?: string;\n reference?: string;\n defaultAddress?: boolean;\n formattedAddress?: string;\n line1: string;\n line2?: string;\n phone: string;\n stairs?: string;\n title?: string;\n titleCode?: string;\n}\n\nexport interface InvoiceAddress {\n id: string;\n firstName: string;\n lastName: string;\n town: string;\n postalCode: string;\n email: string;\n doorCode?: string;\n companyName?: string;\n reference?: string;\n /**\n * This does not actually belong address object in hybris, so it should be removed?\n */\n organizationNumber?: string;\n defaultAddress?: boolean;\n formattedAddress?: string;\n line1: string;\n line2?: string;\n phone: string;\n stairs?: string;\n title?: string;\n titleCode?: string;\n}\n\nexport const enum UserType {\n anonymous = 'Anonymous',\n private = 'Private',\n company = 'Company',\n municipal = 'Municipal',\n punchout = 'Punchout',\n}\n","import { appInsights } from '../../../appInsights';\nimport { normalizeCartToReduxState } from '../../../facades/ecommerce/cart/normalizeCartToReduxState';\nimport cartItemsSelectors from '../../cart/selectors/cartItemsSelectors';\nimport type { ApiCart } from '../api/cart/responses/cartResponses';\nimport type {\n ApiAddMultipleRecipesRequest,\n ApiAddMultipleRecipesResponse,\n} from '../api/recipe/recipeModels';\nimport { SyncronQueue } from '../api/SyncronQueue';\nimport type { ApiHybrisTimeslot } from '../api/timeslots/timeslotsApi';\nimport { timeslotsApi } from '../api/timeslots/timeslotsApi';\nimport { isCartException, isLocalApiBaseException } from '../exceptions/exceptionUtils';\nimport { currentCartFlow } from '../flow/cart/currentCartFlow';\nimport { productFlow } from '../flow/product/productFlow';\nimport type { HybrisCart } from '../models/hybris/hybrisCart';\nimport type { HybrisCartModification } from '../models/hybris/hybrisCartModification';\nimport type { StoreContextSettings } from '../persistance/cookie/storeContextSettings';\nimport persistance from '../persistance/persistance';\nimport { storeSelectors } from '../selectors/storeSelectors';\nimport type { AppAsyncThunk } from '../store';\nimport { finishLoading, initLoading } from '../store/slices/cart/cartApiStateSlice';\nimport { cartActions } from '../store/slices/cart/cartItemsSlice';\nimport { cartRecipeActions } from '../store/slices/cart/cartRecipesSlice';\nimport { setFullCart } from '../store/slices/cart/cartSlice';\nimport { cartTimeslotActions } from '../store/slices/cart/cartTimeslotSlice';\nimport { errorsActions } from '../store/slices/errors/errorsSlice';\nimport { storeActions } from '../store/slices/store/storeSlice';\nimport { ErrorGroup } from '../store/structureDefinitions/errorsState';\nimport { DeliveryMode } from '../store/structureDefinitions/storeState';\nimport { storeThunks } from './storeThunks';\n\nconst cartQueue = new SyncronQueue();\nconst timeslotQueue = new SyncronQueue();\nconst FETCH_CART_QUEUE_NAME = 'fetchcart';\n\nconst buildCartState = async (cart: ApiCart, storeId: string) => {\n const cartProducts = await productFlow.getProductsByIds(\n cart.items.map((cartItem) => cartItem.productId),\n storeId,\n );\n\n const cartState = normalizeCartToReduxState(cart, cartProducts);\n return cartState;\n};\n\nconst getCartSilent = (): AppAsyncThunk<Awaited<ReturnType<typeof buildCartState>>> => {\n return async (dispatch, getState) => {\n return cartQueue.run(\n async () => {\n const currentStoreId = storeSelectors.currentProductionUnit(getState());\n const cart = await currentCartFlow.getCart();\n\n const cartState = await buildCartState(cart, currentStoreId);\n dispatch(setFullCart(cartState));\n await dispatch(storeThunks.syncStoreWithCookie());\n return cartState;\n },\n { uniqueName: FETCH_CART_QUEUE_NAME },\n );\n };\n};\n\nconst getCart = (): ReturnType<typeof getCartSilent> => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n const result = await dispatch(getCartSilent());\n dispatch(finishLoading());\n return result;\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n return Promise.reject(err);\n }\n };\n};\n\nconst emptyCart = (): AppAsyncThunk => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n await currentCartFlow.emptyCart();\n await dispatch(getCartSilent());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst removeRecipe = (recipeId: string): AppAsyncThunk => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n await cartQueue.run(() => currentCartFlow.removeRecipe(recipeId));\n dispatch(cartRecipeActions.removeRecipe(recipeId));\n await dispatch(getCartSilent());\n dispatch(finishLoading());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst buyMultipleRecipes = (\n request: ApiAddMultipleRecipesRequest,\n): AppAsyncThunk<ApiAddMultipleRecipesResponse> => {\n return async (dispatch) => {\n const response = await cartQueue.run(() => currentCartFlow.buyMultipleRecipes(request));\n await dispatch(getCartSilent());\n return response;\n };\n};\n\n/** Does not create cart, if we want to use this for anonymous users, that functionality must be added */\nconst addItems = (\n items: {\n productId: string;\n variantId?: string;\n quantity: number;\n }[],\n): AppAsyncThunk => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n const cartId = await currentCartFlow.getCurrentCartId();\n if (!cartId) {\n throw new Error('No cart id in updateQuantity');\n }\n await currentCartFlow.addItemsBulk(cartId, items);\n await dispatch(getCartSilent());\n dispatch(finishLoading());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst changeRecipePortions = (recipeId: string, portions: number): AppAsyncThunk => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n await cartQueue.run(() => currentCartFlow.changeRecipePortions(recipeId, portions));\n dispatch(cartRecipeActions.changeRecipePortions({ recipeId, portions }));\n await dispatch(getCartSilent());\n dispatch(finishLoading());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst getCurrentTimeslot = (): AppAsyncThunk<ApiHybrisTimeslot> => {\n return async (dispatch) => {\n return timeslotQueue.run(\n async () => {\n const current = await timeslotsApi.current();\n dispatch(cartTimeslotActions.selectTimeslot(current));\n return current;\n },\n { acceptRunningPromise: true, dontPushBack: true, uniqueName: 'fetchTimeslot' },\n );\n };\n};\n\nconst selectTimeslot = (timeslotId: string): AppAsyncThunk<ApiHybrisTimeslot> => {\n return async (dispatch) => {\n await timeslotsApi.select(timeslotId);\n const currentTimeslot = await timeslotsApi.current();\n dispatch(cartTimeslotActions.selectTimeslot(currentTimeslot));\n dispatch(getCartSilent()); // update reservation cost\n\n return currentTimeslot;\n };\n};\n\nconst selectTimeslotWithStore = (\n timeslotId: string,\n postalCode: string,\n baseStoreId?: string,\n): AppAsyncThunk<ApiHybrisTimeslot> => {\n return async (dispatch) => {\n await timeslotsApi.select(timeslotId);\n const currentTimeslot = await timeslotsApi.current();\n dispatch(cartTimeslotActions.selectTimeslot(currentTimeslot));\n\n await dispatch(storeThunks.updateHomeDeliveryStore(postalCode, baseStoreId));\n\n dispatch(getCartSilent()); // update reservation cost\n\n return currentTimeslot;\n };\n};\n\nconst changeVariant = (\n cartItemId: string,\n productId: string,\n quantity: number,\n newVariantId: string,\n): AppAsyncThunk => {\n return async (dispatch) => {\n dispatch(initLoading());\n try {\n await currentCartFlow.changeItemVariant(cartItemId, productId, quantity, newVariantId);\n await dispatch(getCartSilent());\n dispatch(finishLoading());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst ensureStoreContextInSync = (cart: HybrisCart): AppAsyncThunk => {\n return async (dispatch, getState) => {\n const state = getState();\n const currentProductionUnitId = storeSelectors.currentProductionUnit(state);\n const currentPostalCode = storeSelectors.currentPostalCode(state);\n const currentPickupPointId = storeSelectors.currentPickupPointId(state);\n let updatedStoreContext: StoreContextSettings | undefined;\n let deliveryMode;\n if (\n !(\n (cart.coopStore?.code && cart.deliveryMode?.code === DeliveryMode.homedelivery) ||\n (cart.pointOfService?.name && cart.deliveryMode?.code === DeliveryMode.pickup)\n )\n ) {\n const cookieSettings = persistance.storeContext.getDefaultStoreContext();\n updatedStoreContext = {\n productionUnitId: cookieSettings.productionUnitId,\n pickupPointId: cookieSettings.pickupPointId || undefined,\n storeName: cookieSettings.storeName || undefined,\n zipCode: cookieSettings.zipCode || undefined,\n };\n if (cart.deliveryMode?.code === 'homedelivery') {\n deliveryMode = DeliveryMode.homedelivery;\n } else if (cart.deliveryMode?.code === 'pickup') {\n deliveryMode = DeliveryMode.pickup;\n }\n } else if (cart.deliveryMode.code === DeliveryMode.homedelivery) {\n deliveryMode = DeliveryMode.homedelivery;\n if (\n currentProductionUnitId !== cart.coopStore?.code ||\n cart.postCode !== currentPostalCode\n ) {\n updatedStoreContext = {\n zipCode: cart.postCode?.replace(' ', ''),\n productionUnitId: cart.coopStore?.code,\n storeName: cart.coopStore?.name,\n };\n }\n } else if (\n cart.deliveryMode.code === DeliveryMode.pickup &&\n (cart.pointOfService?.name !== currentPickupPointId ||\n cart.pointOfService?.storeId !== currentProductionUnitId)\n ) {\n deliveryMode = DeliveryMode.pickup;\n updatedStoreContext = {\n pickupPointId: cart.pointOfService?.name!,\n productionUnitId: cart.pointOfService?.storeId!,\n storeName: cart.pointOfService?.displayName,\n };\n }\n\n if (updatedStoreContext) {\n persistance.storeContext.set({\n pickupPointId: updatedStoreContext.pickupPointId || null,\n zipCode: updatedStoreContext.zipCode || null,\n productionUnitId: updatedStoreContext.productionUnitId,\n storeName: updatedStoreContext.storeName || null,\n });\n await dispatch(\n storeActions.syncStore({\n deliveryMode,\n pickupPointId: updatedStoreContext.pickupPointId,\n postalCode: updatedStoreContext.zipCode,\n productionUnitId: updatedStoreContext.productionUnitId,\n storeName: updatedStoreContext.storeName,\n }),\n );\n appInsights.trackEvent(\n { name: 'ensureStoreContextInSync' },\n {\n deliveryMode,\n pickupPointId: updatedStoreContext.pickupPointId,\n postalCode: updatedStoreContext.zipCode,\n productionUnitId: updatedStoreContext.productionUnitId,\n storeName: updatedStoreContext.storeName,\n },\n );\n }\n };\n};\n\nconst createCart = (): AppAsyncThunk<HybrisCart> => {\n return async (dispatch, getState) => {\n // try resync store context\n const state = getState();\n const deliverMode = storeSelectors.selectedDeliveryMode(state);\n const postalCode = storeSelectors.currentPostalCode(state);\n const pickupPointId = storeSelectors.currentPickupPointId(state);\n\n const cart = await currentCartFlow.createCartAsync(deliverMode, postalCode, pickupPointId);\n await dispatch(ensureStoreContextInSync(cart));\n return cart;\n };\n};\n\nconst updateQuantity = (\n productId: string,\n variantId: string | undefined,\n quantity: number,\n silent: boolean = false,\n): AppAsyncThunk => {\n return async (dispatch, getState) => {\n if (!silent) {\n dispatch(initLoading());\n }\n try {\n // appSelectors can only be used in thunks, not inside \"normal\"\n await cartQueue.run(async () => {\n const previousCartItemState = cartItemsSelectors.selectById(getState(), {\n productId,\n variantId,\n });\n\n const cartId = await currentCartFlow.getCurrentCartId();\n if (!cartId) {\n throw new Error('No cart id in updateQuantity');\n }\n dispatch(\n cartActions.updateCartItem({\n productId,\n variantId,\n quantity,\n }),\n );\n\n try {\n let response;\n try {\n response = await currentCartFlow.updateItemQuantity(\n cartId,\n productId,\n variantId,\n quantity,\n );\n\n return response;\n } catch (cartErr) {\n if (!isCartException(cartErr)) {\n throw cartErr;\n }\n\n if (cartErr?.code !== 'notFound') {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw cartErr;\n }\n const cart = await dispatch(createCart());\n\n response = await currentCartFlow.updateItemQuantity(\n cart.guid!,\n productId,\n variantId,\n quantity,\n );\n }\n\n return response;\n } catch (err) {\n dispatch(\n cartActions.restoreItem({\n productId,\n variantId,\n cartItem: previousCartItemState,\n }),\n );\n return Promise.reject(err);\n }\n });\n\n if (!silent) {\n await dispatch(getCartSilent());\n dispatch(finishLoading());\n }\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n return Promise.reject(err);\n }\n };\n};\n\nconst substituteProduct = (\n id: string,\n newProductId: string,\n prevProductId: string,\n storeId: string,\n prevVariantId?: string,\n): AppAsyncThunk => {\n return async (dispatch) => {\n try {\n const newCartItem = await cartQueue.run(() =>\n currentCartFlow.substituteProduct(id, newProductId, storeId),\n );\n if (newCartItem) {\n dispatch(\n cartActions.substituteProduct({\n newCartItem,\n prevItemId: id,\n prevProductId,\n prevVariantId,\n }),\n );\n await dispatch(getCart());\n }\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n return Promise.reject(err);\n }\n };\n};\n\nconst applyVoucher = (id: string): AppAsyncThunk<undefined> => {\n return async (dispatch) => {\n try {\n await cartQueue.run(() => currentCartFlow.applyVoucher(id));\n await dispatch(getCartSilent());\n return await Promise.resolve(undefined);\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n if (!err.friendlyMessage) {\n err.friendlyMessage = 'Felaktig Kampanjkod.';\n }\n return Promise.reject(err);\n }\n return Promise.reject(err);\n }\n };\n};\n\nconst removeVoucher = (id: string): AppAsyncThunk => {\n return async (dispatch) => {\n try {\n await cartQueue.run(() => currentCartFlow.removeVoucher(id));\n await dispatch(getCartSilent());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n }\n };\n};\n\nconst changeReplaceability = (\n productId: string,\n variantId: string | undefined,\n quantity: number, // needs to be there since we have one endpoint that does not like empty quantity\n replaceable: boolean,\n): AppAsyncThunk<HybrisCartModification> => {\n return async (dispatch) => {\n try {\n dispatch(\n cartActions.changeCartItemReplaceability({\n productId,\n variantId,\n replaceable,\n }),\n );\n return await cartQueue.run(() =>\n currentCartFlow.changeReplaceability(productId, variantId, quantity, replaceable),\n );\n } catch (err) {\n dispatch(\n cartActions.changeCartItemReplaceability({\n productId,\n variantId,\n replaceable: !replaceable,\n }),\n );\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n return Promise.reject(err);\n }\n };\n};\n\nconst setItemsReplaceability = (replaceable: boolean): AppAsyncThunk => {\n return async (dispatch) => {\n // we block with loader cause backend response with full cart, which can take a couple of seconds...\n dispatch(initLoading());\n try {\n await cartQueue.run(() => currentCartFlow.setItemsReplaceability(replaceable));\n dispatch(cartActions.setAllCartItemsReplaceability(replaceable));\n dispatch(finishLoading());\n } catch (err) {\n if (isLocalApiBaseException(err)) {\n dispatch(errorsActions.addSingle({ group: ErrorGroup.Cart, error: err }));\n }\n dispatch(finishLoading());\n }\n };\n};\n\nconst restoreSavedCart =\n (savedCartId: string): AppAsyncThunk<HybrisCart> =>\n async (dispatch) => {\n const response = await currentCartFlow.restoreSavedCart(savedCartId);\n await dispatch(getCartSilent());\n return response;\n };\n\nconst addToCartFromOrder =\n (orderId: string): AppAsyncThunk<HybrisCart> =>\n async (dispatch) => {\n const response = await currentCartFlow.addToCartFromOrder(orderId);\n await dispatch(getCartSilent());\n return response;\n };\n\nexport const cartThunks = {\n getCartSilent,\n getCart,\n emptyCart,\n removeRecipe,\n buyMultipleRecipes,\n addItems,\n changeRecipePortions,\n getCurrentTimeslot,\n selectTimeslot,\n selectTimeslotWithStore,\n changeVariant,\n updateQuantity,\n substituteProduct,\n applyVoucher,\n removeVoucher,\n changeReplaceability,\n setItemsReplaceability,\n restoreSavedCart,\n addToCartFromOrder,\n};\n","import type { EntityState } from '@reduxjs/toolkit';\n\nimport type {\n ApiCart,\n ApiCartRecipe,\n ApiFullCartItem,\n} from '../../../microApps/common/api/cart/responses/cartResponses';\nimport { productsAdapter } from '../../../microApps/common/store/adapters/productsAdapter';\nimport { recipesAdapter } from '../../../microApps/common/store/adapters/recipesAdapter';\nimport { getInitialState as getTimeslotInitialState } from '../../../microApps/common/store/slices/cart/cartTimeslotSlice';\nimport type {\n CartItemState,\n CartRecipe,\n CartSection,\n RootState,\n} from '../../../microApps/common/store/structureDefinitions/cartState';\nimport { getTopProductSection } from '../../../microApps/common/utils/productUtils';\nimport type { RecipeSectionType } from '../../../microApps/recipe/models';\nimport { DefaultProductSection } from '../../../models/ecommerce/product/productSectionModel';\nimport { Helpers } from '../../../utility/helpers';\n\ntype CartState = Expand<RootState['cart']>;\n\nconst getInitialImmutableState = (cart: ApiCart) => {\n const newCartState: CartState = {\n summary: { ...cart.cartData },\n promos: cart.promos.map((cartPromo) => ({ ...cartPromo })),\n items: cart.items.map((cartItem) => ({ ...cartItem })),\n itemsProductData: productsAdapter.getInitialState(),\n editedOrderItems: cart.editedOrderItems.map((cartItem) => ({ ...cartItem })),\n previousOrderItemIds: cart.previousOrderItemIds.map((cartItemId) => ({\n productId: cartItemId.productId,\n variantId: cartItemId.variantId,\n })),\n recipes: recipesAdapter.getInitialState(),\n sections: [],\n cartLoading: {\n isLoading: false,\n isInitialized: true,\n isProductDataAvailable: true, // because the product data was resolved before, this will change after cartfacade is gone\n },\n editOrder: {\n isInEditOrderMode: cart.cartData.isInEditOrderMode,\n editOrderNumber: cart.cartData.editOrderNumber,\n editOrderTimeout: cart.cartData.editOrderTimeout,\n editOrderSummary: cart.cartData.editOrderSummary,\n editOrderPayment: cart.cartData.editOrderPayment,\n },\n timeslot:\n (cart.cartData &&\n cart.cartData.timeslot &&\n cart.cartData.timeslot.id && {\n timeslot: {\n maxOrderTime: new Date(cart.cartData.timeslot.maxOrderTime).valueOf(),\n startTime: new Date(cart.cartData.timeslot.startTime).valueOf(),\n endTime: new Date(cart.cartData.timeslot.endTime).valueOf(),\n timeSlotDay: cart.cartData.timeslot.timeSlotDay,\n timeSlotTime: cart.cartData.timeslot.timeSlotTime,\n cost: cart.cartData.timeslot.cost,\n id: cart.cartData.timeslot.id,\n fullyBooked: cart.cartData.timeslot.fullyBooked,\n shippingType: '',\n storeId: cart.cartData.timeslot.storeId,\n timeslotType: cart.cartData.timeslot.timeslotType,\n expirationTime: cart.cartData.timeslot.expirationTime,\n milisecondsToExpire: cart.cartData.timeslot.milisecondsToExpire,\n ecoFriendly: cart.cartData.timeslot.ecoFriendly,\n expectETANotification: cart.cartData.timeslot.expectETANotification,\n },\n isSelected: true,\n isInitialized: true,\n }) ||\n getTimeslotInitialState(),\n };\n\n return newCartState;\n};\n\nexport const SHARED_RECIPE_CODE = 'shared';\nexport const GOODTOHAVE_RECIPE_CODE = 'goodToHave';\n\nconst getSectionType = (recipe: ApiCartRecipe): RecipeSectionType => {\n if (recipe.code === SHARED_RECIPE_CODE) {\n return 'shared';\n }\n\n if (recipe.code === GOODTOHAVE_RECIPE_CODE) {\n return 'common';\n }\n\n return 'recipe';\n};\n\nconst normalizeRecipeData = (cart: ApiCart): EntityState<CartRecipe> => {\n let entityState = recipesAdapter.getInitialState();\n\n const recipes = cart?.recipes?.map<CartRecipe>((cartRecipe) => ({\n code: cartRecipe.code,\n type: getSectionType(cartRecipe),\n group: cartRecipe.group ?? 'recipe',\n name: cartRecipe.name,\n portions: cartRecipe.portions,\n productsMap: cartRecipe.productsMap,\n sharedProductsMap: cartRecipe.sharedProductsMap,\n imageUrl: cartRecipe.imageUrl,\n }));\n\n entityState = recipesAdapter.setAll(entityState, recipes);\n return entityState;\n};\n\nconst normalizeRecipeCartItemMetadata = (newCartStateItems: ApiFullCartItem[]): CartItemState[] => {\n const result = newCartStateItems.map((item: ApiFullCartItem): CartItemState => {\n if (!item.recipeData) return item;\n\n const { recipeData, ...relevantFields } = item;\n return {\n ...relevantFields,\n recipeMetaData: {\n code: recipeData.code,\n substituteIdentifier: recipeData.substituteIdentifier,\n substituteProductsAmount: recipeData.substituteProductsAmount,\n recipeQuantity: recipeData.recipeQuantity,\n includedInRecipes: recipeData.includedInRecipes,\n },\n };\n });\n return result;\n};\n\nconst normalizeSectionData = (\n cartItems: ApiFullCartItem[],\n products: ApiProduct[],\n): CartSection[] => {\n const cartSectionsDictionary: Record<number, CartSection> = {};\n const cartSections: CartSection[] = [];\n const otherSection: CartSection = {\n sectionId: DefaultProductSection.ID,\n name: DefaultProductSection.NAME,\n productIds: [],\n };\n\n try {\n cartItems.forEach((item) => {\n const connectedProduct = products.find(\n (product) => item.productId === product.identifier,\n );\n\n // item does not have connected product, add to other section\n if (!connectedProduct && otherSection.productIds) {\n otherSection.productIds.push(item.productId.toString());\n return;\n }\n\n // item does not have any sections, add to other section\n if (connectedProduct) {\n const productSection = getTopProductSection(connectedProduct);\n if (productSection.id === DefaultProductSection.ID && otherSection.productIds) {\n otherSection.productIds.push(item.productId.toString());\n return;\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (cartSectionsDictionary.hasOwnProperty(productSection.id)) {\n cartSectionsDictionary[productSection.id].productIds?.push(\n item.productId.toString(),\n );\n } else {\n cartSectionsDictionary[productSection.id] = {\n sectionId: productSection.id,\n name: productSection.name,\n productIds: [item.productId.toString()],\n };\n }\n }\n });\n\n Object.values(cartSectionsDictionary).forEach((section) => {\n cartSections.push(section);\n });\n\n const sortedSections = cartSections.sort((a, b) =>\n Helpers.alphabeticSortAscPredicate(a.name, b.name),\n );\n\n if (otherSection.productIds && otherSection.productIds.length > 0) {\n sortedSections.push(otherSection);\n }\n\n return sortedSections;\n } catch {\n // if anything fails dont care about sections, pack everything into Other section;\n return [\n {\n sectionId: DefaultProductSection.ID,\n name: DefaultProductSection.NAME,\n productIds: cartItems.map((items) => items.productId.toString()),\n },\n ];\n }\n};\n\nexport const normalizeCartToReduxState = (cart: ApiCart, products: ApiProduct[]) => {\n const newCartState: CartState = getInitialImmutableState(cart);\n\n const recipes = normalizeRecipeData(cart);\n const sections = normalizeSectionData(newCartState.items, products);\n const items = normalizeRecipeCartItemMetadata(newCartState.items);\n\n const normalizedState: CartState = {\n summary: {\n ...newCartState.summary,\n quantity: items.reduce((acc, curr) => acc + curr.quantity, 0),\n },\n items,\n itemsProductData: productsAdapter.setAll(newCartState.itemsProductData, products),\n previousOrderItemIds: newCartState.previousOrderItemIds,\n editedOrderItems: newCartState.editedOrderItems,\n recipes,\n sections,\n promos: newCartState.promos,\n editOrder: newCartState.editOrder,\n cartLoading: newCartState.cartLoading,\n timeslot: newCartState.timeslot,\n };\n\n return normalizedState;\n};\n","import type { IApiStore } from '../../../models/ecommerce/store/storeModel';\nimport type { ApiSwitchStoreResult } from '../api/cart/responses/cartResponses';\nimport { storeApi } from '../api/store/storeApi';\nimport { currentCartFlow } from '../flow/cart/currentCartFlow';\nimport type { StoreUpdateSimulationResult } from '../models/store/StoreUpdateSimulationResult';\nimport type { AppAsyncThunk, AppThunk } from '../store';\nimport { storeActions } from '../store/slices/store/storeSlice';\nimport type { StoreState } from '../store/structureDefinitions/storeState';\nimport { DeliveryMode } from '../store/structureDefinitions/storeState';\n\nexport const storeThunks = {\n syncStoreContext: (state: StoreState): AppThunk => {\n return (dispatch) => {\n dispatch(storeActions.syncStore(state));\n };\n },\n syncStoreWithCookie: (): AppThunk => {\n return (dispatch) => {\n dispatch(storeActions.syncStoreWithCookie());\n };\n },\n\n updatePickupStore: (storeId: string): AppAsyncThunk<IApiStore> => {\n return async (dispatch) => {\n const store = await storeApi.updatePickupStore(storeId);\n dispatch(storeActions.syncStoreWithCookie());\n return store;\n };\n },\n\n updatePickupStoreUnconfirmed: (storeId: string): AppAsyncThunk<StoreUpdateSimulationResult> => {\n return async (dispatch) => {\n const simulateResult = await storeApi.updatePickupStoreUnconfirmed(storeId);\n const mapped = mapSimulationResult(simulateResult);\n dispatch(storeActions.syncStoreWithCookie());\n return mapped;\n };\n },\n\n updateHomeDeliveryStore: (\n zipCode: string,\n baseStoreId: string | null = null,\n ): AppAsyncThunk<IApiStore> => {\n return async (dispatch) => {\n const store = await storeApi.updateHomeDeliveryStore(zipCode, baseStoreId);\n dispatch(storeActions.syncStoreWithCookie());\n return store;\n };\n },\n\n updateHomeDeliveryStoreUnconfirmed: (\n zipCode: string,\n baseStoreId: string | null = null,\n ): AppAsyncThunk<StoreUpdateSimulationResult> => {\n return async (dispatch) => {\n const simulateResult = await storeApi.updateHomeDeliveryStoreUnconfirmed(\n zipCode,\n baseStoreId,\n );\n const mapped = mapSimulationResult(simulateResult);\n dispatch(storeActions.syncStoreWithCookie());\n return mapped;\n };\n },\n\n confirmMissingItemsReplacement: (\n deliveryType: DeliveryMode,\n productsToBulkAdd: {\n productId: string;\n variantId?: string;\n quantity: number;\n itemReplaceable?: boolean;\n }[],\n storeId: string,\n postalCode?: string,\n ): AppAsyncThunk<'success'> => {\n return async (dispatch) => {\n if (deliveryType === DeliveryMode.pickup) {\n await dispatch(storeThunks.updatePickupStore(storeId));\n }\n\n if (deliveryType === DeliveryMode.homedelivery && postalCode) {\n await dispatch(storeThunks.updateHomeDeliveryStore(postalCode, storeId));\n }\n if (productsToBulkAdd?.length) {\n const cartId = await currentCartFlow.getCurrentCartId();\n if (!cartId) {\n throw new Error('No active cart!');\n }\n await currentCartFlow.addItemsBulk(cartId, productsToBulkAdd);\n }\n\n return 'success';\n };\n },\n};\n\nconst mapSimulationResult = (result: ApiSwitchStoreResult): StoreUpdateSimulationResult => {\n // update simulation success, store HAS BEEN CHANGED ALREADY!!! The items in cart were not changed\n if (result && result.success && !result.simulated) {\n return {\n fail: false,\n success: true,\n forStoreId: result.forStoreId,\n };\n }\n\n // update simulation failed, store has not been changed and there will be changes to cart items if you change to this postcode\n if (result && result.simulated) {\n return {\n fail: true,\n success: false,\n removedCartItems: result.removedCartItems,\n forStoreId: result.forStoreId,\n };\n }\n\n return {\n fail: false,\n success: false,\n forStoreId: undefined,\n };\n};\n","import { isB2BMode } from '../../utils/b2bUtils';\nimport { sendInteractionEvent } from '../utils';\n\nexport const sendInteractionClickEventWithCustomerSegment = ({\n eventCategory,\n eventAction,\n eventLabel,\n}: {\n eventCategory: string;\n eventAction: string;\n eventLabel: string;\n}) => {\n const customerSegment = isB2BMode() ? 'Företag' : 'Privat';\n\n if (!eventCategory || !eventAction) {\n return;\n }\n\n sendInteractionEvent({\n eventCategory,\n eventAction,\n eventLabel,\n customerSegment,\n });\n};\n\nexport const sendGaInteractionClickEvent = ({\n eventCategory,\n eventAction,\n eventLabel,\n}: {\n eventCategory: string;\n eventAction: string;\n eventLabel: string;\n}) => {\n if (!eventCategory || !eventAction) {\n return;\n }\n\n sendInteractionEvent({\n eventCategory,\n eventAction,\n eventLabel,\n });\n};\n\n// Mimics the legacy events, escape hatch to make it easier to refactor to the new way of tracking or when specific events do not make sense\nexport default {\n clickWithCustomerSegment: sendInteractionClickEventWithCustomerSegment,\n click: sendGaInteractionClickEvent,\n};\n","import type { AnalyticsInteractionClickEvent } from '../../../analytics/analyticsHandler';\nimport { Browser } from '../../../utility/browser';\n\nexport const sendGaNavigationInteractionEvent = (currRoute: string, clickedRoute: string) => {\n const gaEvent = <AnalyticsInteractionClickEvent>(\n Browser.createNewEvent('ga:interactionWithoutCustomerSegment')\n );\n gaEvent.eventCategory = 'Ecommerce';\n gaEvent.eventAction = `Checkout - ${currRoute}`;\n gaEvent.eventLabel = clickedRoute;\n window.dispatchEvent(gaEvent);\n};\n\nexport const sendGaInteractionWithoutCustomerSegment = (\n category: string,\n action: string,\n label: string,\n) => {\n const gaEvent = <AnalyticsInteractionClickEvent>(\n Browser.createNewEvent('ga:interactionWithoutCustomerSegment')\n );\n gaEvent.eventCategory = category;\n gaEvent.eventAction = action;\n gaEvent.eventLabel = label;\n window.dispatchEvent(gaEvent);\n};\n","/* eslint-disable no-console */\nimport trackingFlow from '../../flow/trackingFlow';\nimport { failSilently } from '../utils/failSilently';\n\nconst trackRecipeClick = failSilently(\n (identifier: string) => {\n trackingFlow.recipeClick({ recipeId: identifier });\n },\n () => console.error('Failed to track recipe click'),\n);\n\nconst trackAddToCart = failSilently(\n (productData: ProductTrackingData[]) => trackingFlow.addToCart(productData),\n () => console.error('Failed to track addToCart'),\n);\n\nconst trackAddToCartBulk = failSilently(\n (productData: ProductTrackingData[]) => {\n trackingFlow.addToCart(productData);\n },\n () => console.error('Failed to track addToCartBulk'),\n);\n\nconst trackPurchase = failSilently(\n (purchaseData: PurchaseTrackingData) => {\n trackingFlow.purchase({\n orderId: purchaseData.transactionId,\n revenue: purchaseData.totalValue,\n products: purchaseData.cartItems.map((product) => ({\n productId: product.identifier,\n quantity: product.quantity,\n itemPrice: product.price / (product.quantity || 1),\n })),\n });\n },\n () => console.error('Failed to track purchase'),\n);\n\nconst trackRemoveFromCart = failSilently(\n (productData: ProductTrackingData) => {\n trackingFlow.removeFromCart(productData);\n },\n () => console.error('Failed to track removeFromCart'),\n);\n\nconst trackSlotClick = failSilently(\n (productId: string, slotId: string | undefined) => {\n if (slotId) {\n trackingFlow.slotClick({ productId, slotId });\n }\n },\n () => console.error('Failed to track slot click'),\n);\n\nconst trackCartItemQuantityUpdate = failSilently(\n (productData: ProductTrackingData) => {\n trackingFlow.addToCart([productData]);\n },\n () => console.error('Failed to track cart item quantity update'),\n);\n\nconst trackUserLogin = failSilently(\n () => {\n trackingFlow.login();\n },\n () => console.error('Failed to track user login'),\n);\n\nexport const personalizationTracking = {\n trackAddToCart,\n trackAddToCartBulk,\n trackSlotClick,\n trackRemoveFromCart,\n trackCartItemQuantityUpdate,\n trackPurchase,\n trackUserLogin,\n trackRecipeClick,\n};\n","import type { ApiHybrisTimeslot } from '../../api/timeslots/timeslotsApi';\nimport { MicroAppContextType } from '../../contexts/microAppContext';\nimport { DeliveryMode } from '../../store/structureDefinitions/storeState';\nimport { sendInteractionEvent } from '../utils';\n\nconst getGaFormatTimeslotFunction = (microAppType: MicroAppContextType | undefined) => {\n switch (microAppType) {\n case MicroAppContextType.CnC:\n return () => 'Slider - Varukorg - Överblick';\n case MicroAppContextType.Checkout:\n return (deliveryModeText: string, reservationText: string) =>\n `Checkout - Leverans - ${deliveryModeText} - Leveranstid - Reservera ${reservationText}`;\n default:\n return () => 'undefined';\n }\n};\n\nconst sendGaTimeslotInteractionEvent =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) =>\n (eventLabel: string, additionalData: object | null) => {\n const isHomeDelivery = deliveryMode === DeliveryMode.homedelivery;\n const deliveryModeText = isHomeDelivery ? 'Hemleverans' : 'Hämta i butik';\n const reservationText = isHomeDelivery ? 'leveranstid' : 'avhämtningstid';\n\n const gaContextEventFormatted = getGaFormatTimeslotFunction(microAppType)(\n deliveryModeText,\n reservationText,\n );\n\n sendInteractionEvent({\n eventAction: isHomeDelivery\n ? gaContextEventFormatted\n : `${gaContextEventFormatted} - Hämta`,\n eventLabel,\n ...additionalData,\n });\n };\n\nconst sendGaCalendarInteractionClickPrev =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Slide bakÃ¥t', null);\n };\n\nconst sendGaCalendarInteractionClickNext =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Slide framÃ¥t', null);\n };\n\nconst sendGaCalendarInteractionClickOpen =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Kalender öppna', null);\n };\n\nconst sendGaCalendarInteractionClickSelect =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Kalender val', null);\n };\n\nconst sendGaTimeslotInteractionClickSelect =\n (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) =>\n (timeslot: ApiHybrisTimeslot, nextTimeslot: ApiHybrisTimeslot | null) => {\n const deliveryModePretty =\n deliveryMode === DeliveryMode.homedelivery ? 'Hemleverans' : 'Hämta i butik';\n\n const time = timeslot.timeSlotTime;\n const date = new Date(timeslot.startTime).toLocaleDateString('sv-SE').split('-').join('');\n\n let hoursUntilNextTimeslot;\n if (nextTimeslot) {\n hoursUntilNextTimeslot = (nextTimeslot.startTime - timeslot.startTime) / (1000 * 3600);\n }\n\n const additionalData = {\n deliveryDate: date,\n deliveryTime: `${date} ${time}`,\n deliveryMethod: deliveryModePretty,\n nextDelivery: hoursUntilNextTimeslot,\n // TODO : deliveryType: Custom dim: 64. Ordinarie order, Förplock, Express (only for Kungens kurva at the moment) - available in Hybris\n };\n\n sendGaTimeslotInteractionEvent(microAppType, deliveryMode)(\n `Valt ${\n deliveryMode === DeliveryMode.homedelivery ? 'leveranstid' : 'leveranstid - Hämta'\n }`,\n additionalData,\n );\n };\n\nconst timeslotTracking = {\n calendar: {\n prev: sendGaCalendarInteractionClickPrev,\n next: sendGaCalendarInteractionClickNext,\n open: sendGaCalendarInteractionClickOpen,\n select: sendGaCalendarInteractionClickSelect,\n },\n timeslot: {\n select: sendGaTimeslotInteractionClickSelect,\n },\n};\n\nexport default timeslotTracking;\n","import { sendInteractionEvent } from '../utils';\n\nexport const gaProductListDropdownLabel = 'ProductList - dropdown';\n\nconst openProductListDropdown = () => {\n sendInteractionEvent({\n eventAction: 'Visa produkt',\n eventLabel: gaProductListDropdownLabel,\n });\n};\n\nexport default { openProductListDropdown };\n","import { PriceType } from '../../../models/priceData/priceData';\nimport { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst vatSelectionClick = (priceType: PriceType) => {\n let clickText;\n\n if (priceType === PriceType.IncludeTax) {\n clickText = 'inklusive moms' as const;\n }\n\n if (priceType === PriceType.ExcludeTax) {\n clickText = 'exklusive moms' as const;\n }\n\n if (!clickText) {\n return;\n }\n\n sendGA4Event({\n event: 'interaction',\n type: 'vat selection',\n click_text: clickText,\n event_key: 'vat_interaction',\n });\n};\n\nconst b2bCrossContextPopupInteraction = (clickText: string) => {\n sendGA4Event({\n event: 'interaction',\n type: 'pop-up',\n click_text: clickText.toLowerCase(),\n event_key: 'popup_wrong_account_interaction',\n });\n};\n\nexport default {\n vatSelectionClick: failSilently(vatSelectionClick),\n b2bCrossContextPopupInteraction: failSilently(b2bCrossContextPopupInteraction),\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst walletInteraction = (\n type: 'wallet open' | 'wallet close' | 'wallet click',\n walletLevel1: string | undefined,\n walletLevel2: string | undefined,\n clickText: string | undefined,\n clickUrl: string | undefined,\n pageType: string,\n) => {\n const event: WalletInteractionEvent = {\n event: 'interaction',\n type,\n wallet_level_1: walletLevel1 || 'not selected',\n wallet_level_2: walletLevel2 || 'not selected',\n click_text: clickText || 'not selected',\n click_url: clickUrl || 'not selected',\n page_type: pageType,\n };\n\n sendGA4Event(event);\n};\n\nconst viewBonus = (type: BonusImpressionType) => (pageType: string) => {\n const event: SendBonusImpressionEvent = {\n event: 'impression',\n type,\n page_type: pageType,\n };\n\n sendGA4Event(event);\n};\n\nconst chartInteraction = (clickText: string, pageType: string) => {\n const event: SavedLastYearInteractionEvent = {\n event: 'interaction',\n type: 'saved bonus',\n click_text: clickText,\n click_url: 'not selected',\n page_type: pageType,\n };\n\n sendGA4Event(event);\n};\n\nconst navigateBonusInteraction = (\n type: BonusInteractionEventType | null,\n clickText: string,\n clickUrl: string | undefined,\n pageType: string,\n) => {\n const event: BonusInteractionEvent = {\n event: 'interaction',\n click_text: clickText,\n click_url: clickUrl || 'not selected',\n page_type: pageType,\n };\n if (type) {\n event.type = type;\n }\n sendGA4Event(event);\n};\n\nconst viewSavedBonus = (pageType: string) => {\n const event: SavedBonusImpressionEvent = {\n event: 'impression',\n type: 'saved bonus',\n page_type: pageType,\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n walletInteraction: failSilently(walletInteraction),\n viewHowDoesItWork: failSilently(viewBonus('how the bonus works')),\n viewLastMonthBonus: failSilently(viewBonus('last month bonus')),\n chartInteraction: failSilently(chartInteraction),\n viewSavedBonus: failSilently(viewSavedBonus),\n navigation: {\n infoSymbolInteraction: failSilently((pageType: string) =>\n navigateBonusInteraction(null, 'info symbol', undefined, pageType),\n ),\n bonusInteraction: failSilently((clickText: string, clickUrl: string, pageType: string) =>\n navigateBonusInteraction('usable bonus', clickText, clickUrl, pageType),\n ),\n },\n};\n","import type { AnalyticsListOptions } from '../../../../../analytics/analyticsHandler';\nimport { failSilently } from '../../utils/failSilently';\nimport { REPLACED_ITEM_LIST_NAME } from '../items';\nimport {\n getGaChangedItems,\n getGaMinimalProductKey,\n getGaProductsWithVariantsList,\n getGaProductsWithVariantsMap,\n getGaTotalProductsValue,\n mapProductToGaEcommerceItem,\n} from '../items/ga4Items.utils';\nimport { mapGaList } from '../shared/ga4SharedMappers';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst viewCart = async (\n products: { productId: string; variantId: string | undefined; quantity: number }[],\n totalValue: number | undefined,\n storeId: string,\n) => {\n const productsWithVariantsAndQuantity = await getGaProductsWithVariantsList(products, storeId);\n const mappedItems = productsWithVariantsAndQuantity.map(({ productData, inputData }) =>\n mapProductToGaEcommerceItem(productData, inputData.quantity, inputData.variantId),\n );\n\n const event: ViewCartEvent = {\n event: 'view_cart',\n ecommerce: {\n currency: 'SEK',\n value: totalValue,\n items: mappedItems,\n },\n };\n\n sendGA4Event(event);\n};\n\nconst addToWishlist = async (\n products: { productId: string; variantId: string | undefined; quantity: number }[],\n storeId: string,\n type: AddToWishlistEvent['type'],\n) => {\n const productsWithVariantsAndQuantity = await getGaProductsWithVariantsList(products, storeId);\n const mappedItems = productsWithVariantsAndQuantity.map(({ productData, inputData }) =>\n mapProductToGaEcommerceItem(productData, inputData.quantity, inputData.variantId),\n );\n\n const event: AddToWishlistEvent = {\n event: 'add_to_wishlist',\n type,\n ecommerce: {\n items: mappedItems,\n },\n };\n\n sendGA4Event(event);\n};\n\nconst addProductItems =\n (analyticsOptions: ModifyCartAnalyticsOptions | null) =>\n (items: (ApiProduct & { quantity: number; selectedVariantId?: string; index?: number })[]) => {\n const list = (analyticsOptions?.list && mapGaList(analyticsOptions.list)) || undefined;\n const mappedItems = items.map((item) => ({\n ...mapProductToGaEcommerceItem(item, item.quantity, item.selectedVariantId, item.index),\n item_list_id: list?.item_list_id,\n item_list_name: list?.item_list_name,\n }));\n\n const event: AddToCartEvent = {\n event: 'add_to_cart',\n ecommerce: {\n currency: 'SEK',\n value: getGaTotalProductsValue(mappedItems),\n ...{\n recipe_list_id: analyticsOptions?.recipe_list_id,\n recipe_list_name: analyticsOptions?.recipe_list_name,\n recipe_type: analyticsOptions?.recipe_type,\n recipe_origin: analyticsOptions?.recipe_origin,\n order_status: analyticsOptions?.order_status,\n },\n items: mappedItems,\n },\n };\n\n sendGA4Event(event);\n };\n\nconst removeProductItems = (\n items: (ApiProduct & { quantity: number; selectedVariantId?: string; index?: number })[],\n analyticsOptions: ModifyCartAnalyticsOptions | null,\n) => {\n const list = (analyticsOptions?.list && mapGaList(analyticsOptions.list)) || undefined;\n\n const mappedItems = items.map((item) => ({\n ...mapProductToGaEcommerceItem(item, item.quantity, item.selectedVariantId, item.index),\n item_list_id: list?.item_list_id,\n item_list_name: list?.item_list_name,\n }));\n\n const event: RemoveFromCartEvent = {\n event: 'remove_from_cart',\n type: analyticsOptions?.removalActionType || 'remove',\n ecommerce: {\n currency: 'SEK',\n value: getGaTotalProductsValue(mappedItems),\n items: mappedItems,\n },\n };\n\n sendGA4Event(event);\n};\n\nconst replacedItemsAddItems = (\n _products: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n storeId: string,\n) => addToCart(_products, storeId, { list: REPLACED_ITEM_LIST_NAME });\n\nconst replacedItemsRemoveItems = (\n _products: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n storeId: string,\n) => removeFromCart(_products, storeId, { removalActionType: 'lost from cart' });\n\nconst miniCartRecipeAccordionClick = (newState: 'collapse' | 'expand', recipeName: string) => {\n const event: MiniCartRecipeAccordionClick = {\n event: 'minicart_recipe_accordion_click',\n recipe_name: recipeName.toLowerCase(),\n type: newState,\n };\n\n sendGA4Event(event);\n};\n\nconst cartRecipeSubstituteTriggerClick = (param: {\n productId: string;\n productName: string;\n recipeName: string;\n}) => {\n const event: CartRecipeSubstituteTriggerClick = {\n event: 'cart_change_product_click',\n item_id: param.productId,\n item_name: param.productName.toLowerCase(),\n recipe_name: param.recipeName.toLowerCase(),\n button_text: 'byt vara',\n };\n\n sendGA4Event(event);\n};\n\nconst modifyCartItems = async (\n inputProductData: {\n index?: number;\n productId: string;\n variantId: string | undefined;\n newQuantity: number;\n previousQuantity: number;\n }[],\n storeId: string,\n analyticsOptions: ModifyCartAnalyticsOptions | null,\n) => {\n const productsWithVariants = await getGaProductsWithVariantsMap(inputProductData, storeId);\n\n // split products to add and remove, based on values of newQuantity and previousQuantity\n const { productsToAdd, productsToRemove } = inputProductData.reduce(\n (acc, { productId, variantId, previousQuantity, newQuantity, index }) => {\n const product = productsWithVariants.get(\n getGaMinimalProductKey({ productId, variantId }),\n );\n\n if (!product) return acc;\n\n if (newQuantity > previousQuantity) {\n return {\n ...acc,\n productsToAdd: [\n ...acc.productsToAdd,\n {\n ...product,\n selectedVariantId: variantId,\n index,\n quantity: newQuantity - previousQuantity,\n },\n ],\n };\n }\n\n return {\n ...acc,\n productsToRemove: [\n ...acc.productsToRemove,\n {\n ...product,\n selectedVariantId: variantId,\n index,\n quantity: previousQuantity - newQuantity,\n },\n ],\n };\n },\n {\n productsToAdd: [] as (ApiProduct & {\n quantity: number;\n index?: number;\n selectedVariantId?: string;\n })[],\n productsToRemove: [] as (ApiProduct & {\n quantity: number;\n selectedVariantId?: string;\n })[],\n },\n );\n\n if (productsToAdd.length) {\n addProductItems(analyticsOptions)(productsToAdd);\n }\n\n if (productsToRemove.length) {\n removeProductItems(productsToRemove, analyticsOptions);\n }\n};\n\nexport interface OrderStatusAnalyticsOptions {\n order_status?: string;\n}\n\nexport interface RecipeAnalyticsOptions {\n recipe_list_id?: string;\n recipe_list_name?: string;\n recipe_type?: string; // Send only one category. If multiple categories are selected in \"Create Your Own Menu,\" send only \"custom\" (NOT \"familjefavoriter|prisvärt|mer smak\").\n recipe_origin?: 'weekly menu' | 'recipes';\n}\n\n// custom data sent with every modifyCartRequest, for example additional recipe data\nexport interface ModifyCartAnalyticsOptions\n extends AnalyticsListOptions,\n RecipeAnalyticsOptions,\n OrderStatusAnalyticsOptions {\n removalActionType?: RemoveFromCartType;\n}\n\nconst addToCart = (\n _products: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n storeId: string,\n analyticsOptions: ModifyCartAnalyticsOptions | null,\n) =>\n modifyCartItems(\n _products.map((item) => ({\n productId: item.productId,\n variantId: item.variantId,\n previousQuantity: 0,\n newQuantity: item.quantity,\n })),\n storeId,\n analyticsOptions,\n );\n\nconst removeFromCart = (\n _products: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n storeId: string,\n analyticsOptions: ModifyCartAnalyticsOptions | null,\n) => {\n modifyCartItems(\n _products.map((item) => ({\n productId: item.productId,\n variantId: item.variantId,\n previousQuantity: item.quantity,\n newQuantity: 0,\n })),\n storeId,\n analyticsOptions,\n );\n};\n\nexport const changeCartItems = (\n previousProducts: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n currentProducts: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n storeId: string,\n analyticsOptions: ModifyCartAnalyticsOptions | null,\n) => {\n const changedItems = getGaChangedItems(previousProducts, currentProducts);\n\n modifyCartItems(changedItems, storeId, analyticsOptions);\n};\n\nconst highAmountInCartImpression = () => {\n const event: HighAmountInCartImpressionEvent = {\n event: 'impression',\n event_key: 'impression_above_50_single_good_in_cart',\n type: 'warning above 50 of single good in cart',\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n changeCartItems: failSilently(changeCartItems),\n modifyCartItems: failSilently(modifyCartItems),\n addToCart: failSilently(addToCart),\n removeFromCart: failSilently(removeFromCart),\n\n highAmountInCartImpression: failSilently(highAmountInCartImpression),\n viewCart: failSilently(viewCart),\n addToWishlist: failSilently(addToWishlist),\n replacedItems: {\n addItems: failSilently(replacedItemsAddItems),\n removeItems: failSilently(replacedItemsRemoveItems),\n },\n miniCartRecipeAccordionClick: failSilently(miniCartRecipeAccordionClick),\n cartRecipeSubstituteTriggerClick: failSilently(cartRecipeSubstituteTriggerClick),\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst emailSubscriptionInteraction = (clickText: string) => {\n const event: EmailSubscriptionInteractionEvent = {\n event: 'interaction',\n type: 'missa inga erbjudanden pop-up',\n click_text: clickText,\n };\n sendGA4Event(event);\n};\n\nexport default {\n close: {\n sendEmailSubscriptionInteraction: failSilently(() => emailSubscriptionInteraction('Stäng')),\n },\n confirm: {\n sendEmailSubscriptionInteraction: failSilently(() =>\n emailSubscriptionInteraction('Godkänn'),\n ),\n },\n skip: {\n sendEmailSubscriptionInteraction: failSilently(() =>\n emailSubscriptionInteraction('Hoppa över'),\n ),\n },\n};\n","import { productFlow } from '../../../flow/product/productFlow';\n\nexport const mapProductToGaEcommerceItem = (\n product: ApiProduct,\n quantity: number,\n variantId?: string,\n index?: number,\n) => {\n let beforePromotionPrice = product?.priceData?.inclTaxPrice;\n\n const selectedVariant = product.variants?.find((item) => item.id === variantId);\n\n if (selectedVariant) {\n beforePromotionPrice = selectedVariant.priceData?.inclTaxPrice;\n }\n\n const data: GaEcommerceItem = {\n item_id: product.identifier,\n price: beforePromotionPrice || null,\n quantity,\n index,\n item_variant: selectedVariant?.name?.toLowerCase(),\n };\n\n return data;\n};\n\nexport const mapProductToGaItemWithDetails = (\n item: ApiProduct,\n quantity: number,\n variantId?: string,\n) => {\n const gaItem = mapProductToGaEcommerceItem(item, quantity, variantId);\n\n const mapped: GaEcommerceItem & GaEcommerceItemDetails = {\n ...gaItem,\n item_name: item.name,\n item_brand: item.manufacturer,\n item_category: item.sections?.[0]?.[0]?.name,\n item_category2: item.sections?.[0]?.[1]?.name,\n item_category3: item.sections?.[0]?.[2]?.name,\n };\n\n return mapped;\n};\n\n/**\n * Use only in GA context, never in presentational code\n */\nexport const getGaTotalProductsValue = (items: GaEcommerceItem[]) => {\n return Number(\n items.reduce((acc, curr) => acc + (curr.price || 0) * (curr.quantity || 1), 0).toFixed(2),\n );\n};\n\nexport const getGaMinimalProductKey = (product: { productId: string; variantId?: string }) =>\n product.variantId ? `${product.productId}-${product.variantId}` : product.productId;\n\nexport const getGaProductsWithVariantsMap = async <\n TItem extends {\n productId: string;\n variantId: string | undefined;\n },\n>(\n inputProductData: TItem[],\n storeId: string,\n) => {\n const productsMap = await productFlow.getProductsByIdsMap(\n inputProductData.map((item) => item.productId),\n storeId,\n );\n\n const map: typeof productsMap = new Map();\n\n inputProductData.forEach(({ productId, variantId }) => {\n const product = productsMap.get(productId);\n\n if (product) {\n map.set(getGaMinimalProductKey({ productId, variantId }), product);\n }\n });\n\n return map;\n};\n\n// Keeps the order of inputData array\nexport const getGaProductsWithVariantsList = async <\n TItem extends {\n productId: string;\n variantId: string | undefined;\n },\n>(\n inputProductData: TItem[],\n storeId: string,\n) => {\n const map = await getGaProductsWithVariantsMap(inputProductData, storeId);\n\n const list = inputProductData\n .map((inputData) => {\n const product = map.get(\n getGaMinimalProductKey({\n productId: inputData.productId,\n variantId: inputData.variantId,\n }),\n );\n\n if (!product) return null;\n\n return { productData: product, inputData };\n })\n .filter(Boolean);\n\n return list;\n};\n\n// Merge products from previous and current state with previous and new quantity\n// Includes removed, added and updated products (looking at quantity to determine)\nexport const getGaChangedItems = (\n previousProducts: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n currentProducts: {\n productId: string;\n variantId: string | undefined;\n quantity: number;\n }[],\n) => {\n let mergedProducts: {\n productId: string;\n variantId: string | undefined;\n previousQuantity: number;\n newQuantity: number;\n }[] = [];\n\n // Iterate through the previous products array and add the quantities to the map\n const previousProductsMap: Map<string, (typeof mergedProducts)[0]> = new Map();\n previousProducts.forEach((product) => {\n const key = getGaMinimalProductKey(product);\n // If the product already exists in the map, add the quantities\n previousProductsMap.set(key, {\n ...product,\n previousQuantity: product.quantity,\n newQuantity: 0,\n });\n });\n\n // Iterate through the current products array and add the quantities from previous products\n currentProducts.forEach((product) => {\n const key = getGaMinimalProductKey(product);\n\n const previousProduct = previousProductsMap.get(key);\n const previousQuantity = previousProduct ? previousProduct.previousQuantity : 0;\n\n mergedProducts.push({\n productId: product.productId,\n variantId: product.variantId,\n previousQuantity,\n newQuantity: product.quantity,\n });\n\n if (previousProduct) {\n previousProductsMap.delete(key);\n }\n });\n\n // Add any remaining products from the previous products array with a new quantity of 0\n previousProductsMap.forEach((product) => {\n mergedProducts.push({\n productId: product.productId,\n variantId: product.variantId,\n previousQuantity: product.previousQuantity,\n newQuantity: 0,\n });\n });\n\n // if quantity is the same, then it's not a changed product\n mergedProducts = mergedProducts.filter((item) => item.previousQuantity !== item.newQuantity);\n\n return mergedProducts;\n};\n","export const REPLACED_ITEM_LIST_ID = 'replacement_products';\nexport const REPLACED_ITEM_LIST_NAME = 'Replacement products';\n\nexport const UNAVAILABLE_ITEM_LIST_ID = 'unavailable_products';\nexport const UNAVAILABLE_ITEM_LIST_NAME = 'Unavailable Products';\n","import _ from 'underscore';\n\nimport type { AnalyticsListOptions } from '../../../../../analytics/analyticsHandler';\nimport { createBatcher } from '../../utils/createBatcher';\nimport { failSilently } from '../../utils/failSilently';\nimport { sendSplittedData } from '../../utils/sendSplittedData';\nimport { mapGaList } from '../shared/ga4SharedMappers';\nimport { sendGA4Event } from '../shared/sendGa4Event';\nimport {\n REPLACED_ITEM_LIST_ID,\n REPLACED_ITEM_LIST_NAME,\n UNAVAILABLE_ITEM_LIST_ID,\n UNAVAILABLE_ITEM_LIST_NAME,\n} from './ga4Items.consts';\nimport { getGaProductsWithVariantsList, mapProductToGaItemWithDetails } from './ga4Items.utils';\n\nconst buildViewItemListEvent = (\n items: (ApiProduct & {\n index?: number;\n listId?: string;\n listName?: string;\n })[],\n) => {\n const mappedItems = items.map((item) => ({\n ...mapProductToGaItemWithDetails(item, 1),\n index: item.index,\n item_list_id: item.listId,\n item_list_name: item.listName,\n }));\n\n const event: ViewItemListEvent = {\n event: 'view_item_list',\n ecommerce: {\n item_list_id: mappedItems.map((item) => item.item_list_id).filter(Boolean)?.[0],\n item_list_name: mappedItems.map((item) => item.item_list_name).filter(Boolean)?.[0],\n items: mappedItems,\n },\n };\n\n return event;\n};\n\nconst viewItemList = (\n items: {\n product: ApiProduct;\n analyticsOptions?: AnalyticsListOptions;\n }[],\n) => {\n const mappedItems = items.map((item) => {\n const gaList =\n (item.analyticsOptions?.list && mapGaList(item.analyticsOptions.list)) || undefined;\n\n return {\n ...item.product,\n quantity: 1,\n index: item.analyticsOptions?.position,\n listId: gaList?.item_list_id,\n listName: gaList?.item_list_name,\n };\n });\n\n const event = buildViewItemListEvent(mappedItems);\n\n sendGA4Event(event);\n};\n\nconst viewItem = async (productId: string, variantId: string | undefined, storeId: string) => {\n const productsWithVariantsAndQuantity = await getGaProductsWithVariantsList(\n [\n {\n productId,\n variantId,\n quantity: 1,\n },\n ],\n storeId,\n );\n\n const mappedItem = productsWithVariantsAndQuantity.map(({ productData, inputData }) =>\n mapProductToGaItemWithDetails(productData, inputData.quantity, inputData.variantId),\n )?.[0];\n\n const event: ViewItemEvent = {\n event: 'view_item',\n ecommerce: {\n currency: 'SEK',\n value: mappedItem?.price,\n items: [mappedItem],\n },\n };\n\n sendGA4Event(event);\n};\n\nconst selectItem = async (\n productId: string,\n variantId: string | undefined,\n storeId: string,\n index?: number,\n analyticsOptions?: AnalyticsListOptions,\n) => {\n const productsWithVariantsAndQuantity = await getGaProductsWithVariantsList(\n [\n {\n productId,\n variantId,\n quantity: 1,\n index,\n },\n ],\n storeId,\n );\n\n const mappedItem = productsWithVariantsAndQuantity.map(({ productData, inputData }) =>\n mapProductToGaItemWithDetails(productData, inputData.quantity, inputData.variantId),\n )?.[0];\n\n const gaList = (analyticsOptions?.list && mapGaList(analyticsOptions.list)) || undefined;\n\n const items = [{ ...mappedItem, index, ...gaList }];\n\n const event: SelectItemEvent = {\n event: 'select_item',\n ecommerce: {\n ...gaList,\n items,\n },\n };\n\n sendGA4Event(event);\n};\n\nconst viewReplacedItemList = (\n originalProductId: string,\n items: (ApiProduct & { quantity: number })[],\n) => {\n const event: ViewReplacedItemsListEvent = {\n original_product_id: originalProductId,\n ...buildViewItemListEvent(\n items.map((item, index) => ({\n ...item,\n index,\n listId: REPLACED_ITEM_LIST_ID,\n listName: REPLACED_ITEM_LIST_NAME,\n })),\n ),\n };\n\n sendGA4Event(event);\n};\n\nconst unavailableItemsViewItemList = (items: (ApiProduct & { quantity: number })[]) => {\n const event = buildViewItemListEvent(\n items.map((item, index) => ({\n ...item,\n index,\n listId: UNAVAILABLE_ITEM_LIST_ID,\n listName: UNAVAILABLE_ITEM_LIST_NAME,\n })),\n );\n\n sendGA4Event(event);\n};\n\nconst MAX_VIEW_ITEM_LIST_COUNT = 20;\n\nconst viewItemListBatcher = createBatcher<{\n product: ApiProduct;\n analyticsOptions: AnalyticsListOptions;\n}>(\n (\n products: {\n product: ApiProduct;\n analyticsOptions?: AnalyticsListOptions;\n }[],\n ) => {\n sendSplittedData(products, MAX_VIEW_ITEM_LIST_COUNT, (dataChunk) => {\n viewItemList(_.unique(dataChunk, (item) => item.product.id));\n });\n },\n 1000,\n);\n\nconst viewItemListChunked = (product: ApiProduct, analyticsOptions: AnalyticsListOptions) =>\n viewItemListBatcher({ product, analyticsOptions });\n\nexport default {\n viewItemList: failSilently(viewItemListChunked),\n viewItem: failSilently(viewItem),\n selectItem: failSilently(selectItem),\n viewReplacedItemList: failSilently(viewReplacedItemList),\n viewUnavailableItemList: failSilently(unavailableItemsViewItemList),\n};\n","import { trim } from '../../../utils/stringUtils';\nimport { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst OUTBOUND_DISALLOWED_DOMAINS = [\n 'coop.se',\n 'login.coop.se',\n 'dr.coop.se',\n 'local.coop.se',\n 'beta.coop.se',\n];\nconst OUTBOUND_DISALLOWED_KEYWORDS = ['tel:', 'mailto:'];\n\nconst OUTBOUND_DOMAINS_WITH_URL_IN_QUERYSTRING = ['clk.tradedoubler.com'];\n\nexport const getOutboundClickEventData = (href: string) => {\n if (!href) return null;\n\n const url = new URL(href);\n const domain = url.hostname.replace('www.', '');\n\n if (OUTBOUND_DOMAINS_WITH_URL_IN_QUERYSTRING.includes(domain)) {\n const queryString = new URLSearchParams(href);\n const urlInQueryString = queryString.get('url');\n if (urlInQueryString) {\n const { hostname } = new URL(urlInQueryString);\n\n return {\n linkDomain: hostname,\n linkUrl: trim(url.toString(), '/'),\n };\n }\n }\n\n const isDisallowedToSendEvent =\n domain.includes('www-test') ||\n domain.includes('cooptest') ||\n OUTBOUND_DISALLOWED_KEYWORDS.find((item) => href.includes(item)) ||\n OUTBOUND_DISALLOWED_DOMAINS.find((item) => domain === item);\n\n if (isDisallowedToSendEvent) {\n return null;\n }\n\n return {\n linkDomain: domain,\n linkUrl: trim(url.toString(), '/'),\n };\n};\n\nconst outboundClick = (href: string, clickText: string, additionalData: object) => {\n const data = getOutboundClickEventData(href);\n if (data) {\n const gaEvent: OutboundClickEvent = {\n event: 'outbound_click',\n click_domain: data.linkDomain,\n click_url: data.linkUrl,\n click_text: clickText || '',\n ...additionalData,\n };\n\n sendGA4Event(gaEvent);\n }\n};\n\nexport default {\n outboundClick: failSilently(outboundClick),\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst headerNavigationClick = (linkText: string, linkUrl: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: 'header',\n event_key: 'navigation_header',\n click_text: linkText.toLowerCase(),\n click_url: linkUrl.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst preHeaderNavigationClick = (linkText: string, linkUrl: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: 'pre-header',\n event_key: 'navigation_pre_header',\n click_text: linkText.toLowerCase(),\n click_url: linkUrl.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst sideMenuInteractionClick = (linkText: string, linkUrl: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: `side menu click`,\n event_key: `navigation_side_menu_click`,\n click_text: linkText.toLowerCase(),\n click_url: linkUrl.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst profileMenuInteractionClick = (linkText: string, linkUrl: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: `profile menu click`,\n event_key: `navigation_profile_menu_click`,\n click_text: linkText.toLowerCase(),\n click_url: linkUrl.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst profileMenuWalletInteractionTrigger =\n (type: NavigationTriggerInteractionType | NavigationClickType) =>\n (\n menuLevel1: string | undefined,\n menuLevel2: string | undefined,\n pageTypeNameForAnalytics: string,\n clickText: string | undefined,\n clickUrl: string | undefined,\n ) => {\n const event: NavigationProfileMenuClickEvent = {\n event: 'navigation',\n type: `profile menu ${type}`,\n menu_level_1: menuLevel1 || 'not selected',\n menu_level_2: menuLevel2 || 'not selected',\n click_text: clickText || 'not selected',\n click_url: clickUrl || 'not selected',\n page_type: pageTypeNameForAnalytics,\n };\n\n sendGA4Event(event);\n };\n\nconst profileMenuInteractionTrigger = (type: NavigationTriggerInteractionType) => () => {\n const event: NavigationTriggerEvent = {\n event: 'navigation',\n type: `profile menu ${type}`,\n event_key: `navigation_profile_menu_${type}`,\n };\n\n sendGA4Event(event);\n};\n\nconst savedItemsInteractionClick = (linkText: string, linkUrl: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: `saved items click`,\n event_key: `navigation_saved_items_click`,\n click_text: linkText.toLowerCase(),\n click_url: linkUrl.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst savedItemsInteractionTrigger = (type: NavigationTriggerInteractionType) => () => {\n const event: NavigationTriggerEvent = {\n event: 'navigation',\n type: `saved items ${type}`,\n event_key: `navigation_saved_items_${type}`,\n };\n\n sendGA4Event(event);\n};\n\nconst hamburgerMenuInteractionClick = (linkText: string, level: number, linkUrl?: string) => {\n const event: GlobalMenuNavigationClickEvent = {\n event: 'navigation',\n type: `hamburger menu click`,\n menu_level: level.toString(),\n click_text: linkText.toLowerCase(),\n click_url: linkUrl?.toLowerCase(),\n };\n\n sendGA4Event(event);\n};\n\nconst hamburgerMenuInteractionTrigger = (type: NavigationTriggerInteractionType) => () => {\n const event: GlobalMenuNavigationTriggerEvent = {\n event: 'navigation',\n type: `hamburger menu ${type}`,\n };\n\n sendGA4Event(event);\n};\n\nconst deliveryTimeInteractionClick = (linkText: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: 'delivery time click',\n click_text: linkText,\n click_url: 'undefined',\n event_key: `navigation_delivery_time_click`,\n };\n\n sendGA4Event(event);\n};\n\nconst deliveryTimeInteractionTrigger = (type: NavigationTriggerInteractionType) => () => {\n const event: NavigationTriggerEvent = {\n event: 'navigation',\n type: `delivery time ${type}`,\n event_key: `navigation_delivery_time_${type}`,\n };\n\n sendGA4Event(event);\n};\n\nconst onPageNavigationClick = (text: string, url: string) => {\n const event: NavigationClickEvent = {\n event: 'navigation',\n type: 'on page',\n click_text: text,\n click_url: url,\n event_key: `navigation_on_page`,\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n headerNavigationClick: failSilently(headerNavigationClick),\n preHeaderNavigationClick: failSilently(preHeaderNavigationClick),\n onPageNavigationClick: failSilently(onPageNavigationClick),\n deliveryTime: {\n click: failSilently(deliveryTimeInteractionClick),\n open: failSilently(deliveryTimeInteractionTrigger('open')),\n close: failSilently(deliveryTimeInteractionTrigger('close')),\n },\n sideMenu: {\n click: failSilently(sideMenuInteractionClick),\n },\n savedItems: {\n click: failSilently(savedItemsInteractionClick),\n open: failSilently(savedItemsInteractionTrigger('open')),\n close: failSilently(savedItemsInteractionTrigger('close')),\n },\n profileMenu: {\n click: failSilently(profileMenuInteractionClick),\n open: failSilently(profileMenuInteractionTrigger('open')),\n close: failSilently(profileMenuInteractionTrigger('close')),\n },\n profileMenuWalletInteractionTrigger: {\n click: failSilently(profileMenuWalletInteractionTrigger('click')),\n open: {\n level1Open: failSilently((clickText: string, pageTypeNameForAnalytics: string) =>\n profileMenuWalletInteractionTrigger('open')(\n clickText,\n undefined,\n pageTypeNameForAnalytics,\n clickText,\n undefined,\n ),\n ),\n },\n close: {\n level1Close: failSilently((clickText: string, pageTypeNameForAnalytics: string) =>\n profileMenuWalletInteractionTrigger('close')(\n clickText,\n undefined,\n pageTypeNameForAnalytics,\n clickText,\n undefined,\n ),\n ),\n },\n },\n hamburgerMenu: {\n click: failSilently(hamburgerMenuInteractionClick),\n open: failSilently(hamburgerMenuInteractionTrigger('open')),\n close: failSilently(hamburgerMenuInteractionTrigger('close')),\n back: failSilently(hamburgerMenuInteractionTrigger('back click')),\n },\n};\n","import type { IGaPromoData } from '../../models/IGaPromoData';\n\nexport const isPromoDataAcceptable = ({\n gaPromoId,\n gaPromoName,\n gaPromoCreative,\n gaPromoPosition,\n}: IGaPromoData): boolean => {\n const foundValues = [gaPromoId, gaPromoName, gaPromoCreative, gaPromoPosition].filter(Boolean);\n\n if (foundValues.length >= 2) {\n return true;\n }\n\n return false;\n};\n\nconst formatGaCreativeSlot = (position: string | undefined) => {\n if (position !== undefined) {\n if (position === '') {\n return undefined;\n }\n\n if (!Number.isNaN(Number(position))) {\n return Number(position);\n }\n return position;\n }\n};\n\nexport const mapToGaPromotion = (promotion: IGaPromoData) => {\n const idAndNameMissing = !promotion.gaPromoId && !promotion.gaPromoName; // only if both empty, otherwise GA allows to send just id or name\n\n const gaPromo: GaPromotion = {\n promotion_id: idAndNameMissing ? 'Error - Name and ID is missing' : promotion.gaPromoId,\n promotion_name: idAndNameMissing ? 'Error - Name and ID is missing' : promotion.gaPromoName,\n creative_name: promotion.gaPromoCreative,\n creative_slot: formatGaCreativeSlot(promotion.gaPromoPosition),\n };\n\n return gaPromo;\n};\n","import type { IGaPromoData } from '../../models/IGaPromoData';\nimport { createBatcher } from '../../utils/createBatcher';\nimport { failSilently } from '../../utils/failSilently';\nimport { sendSplittedData } from '../../utils/sendSplittedData';\nimport { sendGA4Event } from '../shared/sendGa4Event';\nimport { isPromoDataAcceptable, mapToGaPromotion } from './ga4Promotion.utils';\n\nconst viewPromotion = (promotion: IGaPromoData | IGaPromoData[]) => {\n if (Array.isArray(promotion)) {\n const promotions = promotion\n .filter(Boolean)\n .filter(isPromoDataAcceptable)\n .map(mapToGaPromotion);\n\n const event: ViewPromotionEvent = {\n event: 'view_promotion',\n ecommerce: {\n items: promotions,\n },\n };\n sendGA4Event(event);\n return;\n }\n\n const mappedPromotion = promotion && mapToGaPromotion(promotion);\n\n if (mappedPromotion && isPromoDataAcceptable(promotion)) {\n const event: ViewPromotionEvent = {\n event: 'view_promotion',\n ecommerce: mappedPromotion,\n };\n sendGA4Event(event);\n }\n};\n\nconst MAX_PROMOTIONS_COUNT = 20;\nconst viewPromotionChunked = createBatcher(\n (promotions: IGaPromoData[], maxSliceCount = MAX_PROMOTIONS_COUNT) => {\n sendSplittedData(promotions, maxSliceCount, viewPromotion);\n },\n);\n\nconst selectPromotion = (promotion: IGaPromoData) => {\n const mappedPromotion = promotion && mapToGaPromotion(promotion);\n\n if (mappedPromotion && isPromoDataAcceptable(promotion)) {\n const event: SelectPromotionEvent = {\n event: 'select_promotion',\n ecommerce: mappedPromotion,\n };\n\n sendGA4Event(event);\n }\n};\n\nexport default {\n selectPromotion: failSilently(selectPromotion),\n viewPromotion: failSilently(viewPromotionChunked),\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst filterRecipes = (filter: string) => {\n const event: FilterRecipesEvent = {\n event: 'filter',\n filter_category_1: filter.toLowerCase(),\n event_key: 'filter_recipes',\n };\n\n sendGA4Event(event);\n};\n\nconst favoriteRecipe =\n (type: FavoriteRecipeInteractionType) => (recipeId: string, recipeName: string) => {\n const event: FavoriteRecipeEvent = {\n event: 'favourite',\n recipe_id: recipeId,\n recipe_name: recipeName.toLowerCase(),\n feature_name: 'recipe',\n type,\n event_key: `favourite_recipe_${type}`,\n };\n\n sendGA4Event(event);\n };\n\nconst rateRecipe = (recipeId: number, recipeName: string, rating: number) => {\n const event: RateRecipeEvent = {\n event: 'rate',\n recipe_id: recipeId.toString(),\n rating,\n recipe_name: recipeName.toLowerCase(),\n event_key: 'rate_recipe',\n };\n\n sendGA4Event(event);\n};\n\nconst recipeAdClick = (\n promoId: string,\n promoName: string,\n creativeName: string,\n creativeSlot: string,\n) => {\n const event: RecipeAdClickEvent = {\n event: 'select_promotion',\n ecommerce: {\n promotion_id: promoId,\n promotion_name: promoName,\n creative_name: creativeName,\n creative_slot: creativeSlot,\n },\n };\n\n sendGA4Event(event);\n};\n\nconst reviewRecipe = (recipeId: number, recipeName: string) => {\n const event: ReviewRecipeEvent = {\n event: 'review',\n recipe_id: recipeId.toString(),\n recipe_name: recipeName.toLowerCase(),\n event_key: 'review_recipe',\n };\n\n sendGA4Event(event);\n};\n\nconst weeklyMenuRecipeInteraction =\n (type: WeeklyMenuRecipeInteractionType) =>\n (recipeType: string, recipeName: string, menuConfiguration: 'custom' | 'default') => {\n const event: WeeklyMenuRecipeInteractionEvent = {\n event: `weekly_menu_recipe`,\n type,\n recipe_name: recipeName.toLowerCase(),\n recipe_type: recipeType.toLowerCase(),\n menu_configuration: menuConfiguration,\n };\n\n sendGA4Event(event);\n };\n\nconst weeklyMenuRecipeHandleIngredient =\n (type: WeeklyMenuRecipeHandleIngredientType) =>\n (recipeExternalId: string, recipeName: string, productId: string, productName: string) => {\n const event: WeeklyMenuRecipeHandleIngredientEvent = {\n event: 'weekly_menu_handle_ingredients',\n event_action: type,\n item_name: productName,\n item_id: productId,\n recipe_id: recipeExternalId,\n recipe_name: recipeName,\n };\n\n sendGA4Event(event);\n };\n\nconst weeklyMenuTeaserArrowClick = (recipeType: string, cardNumber: number) => {\n const event: WeeklyMenuTeaserArrowClickEvent = {\n event: `weekly_menu_swiper_arrow_click`,\n card: cardNumber.toString(),\n recipe_type: recipeType,\n };\n\n sendGA4Event(event);\n};\n\nconst weeklyMenuCategoryPillClick = (recipeType: string) => {\n const event: WeeklyMenuCategoryPillClickEvent = {\n event: `weekly_menu_recipe_type_click`,\n recipe_type: recipeType,\n };\n\n sendGA4Event(event);\n};\n\nconst recipeRecommendationsClick =\n (eventType: RecipeRecommendationsEventType) =>\n (type: RecipeRecommendationsClickType) =>\n (recipeId: number, recipeName: string) => {\n const event: PdpRecipeRecommendationsClickEvent = {\n event: eventType,\n type,\n recipe_id: recipeId.toString(),\n recipe_name: recipeName.toLowerCase(),\n };\n\n sendGA4Event(event);\n };\n\nconst faqClick = (text: string, action: WeeklyMenuFaqClickEvent['event_action']) => {\n const event: WeeklyMenuFaqClickEvent = {\n event: 'faq_interaction',\n click_text: text,\n event_action: action,\n type: 'weekly menu',\n };\n\n sendGA4Event(event);\n};\n\nconst click = (type: ClickRecipeEvent['type']) => (id: string, name: string) => {\n const event: ClickRecipeEvent = {\n event: 'recipe_click',\n recipe_id: id,\n recipe_name: name,\n type,\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n click: {\n recipe: failSilently(click('standard recipe')),\n buyableRecipe: failSilently(click('buyable recipe')),\n foodbox: failSilently(click('standard foodbox')),\n buyableFoodbox: failSilently(click('buyable foodbox')),\n weeklyMenu: failSilently(click('weekly menu')),\n },\n filterRecipes: failSilently(filterRecipes),\n rateRecipe: failSilently(rateRecipe),\n recipeAdClick: failSilently(recipeAdClick),\n reviewRecipe: failSilently(reviewRecipe),\n favoriteRecipe: {\n add: failSilently(favoriteRecipe('add')),\n remove: failSilently(favoriteRecipe('remove')),\n },\n weeklyMenu: {\n addRecipe: failSilently(weeklyMenuRecipeInteraction('add')),\n removeRecipe: failSilently(weeklyMenuRecipeInteraction('remove')),\n arrowClick: failSilently(weeklyMenuTeaserArrowClick),\n categoryPillClick: failSilently(weeklyMenuCategoryPillClick),\n handleIngredient: failSilently(weeklyMenuRecipeHandleIngredient),\n faqClick: failSilently(faqClick),\n },\n pdpRecipeRecommendations: {\n buyButtonClick: failSilently(\n recipeRecommendationsClick('pdp_recommended_recipes')('button_recipe_click'),\n ),\n recipeTeaserClick: failSilently(\n recipeRecommendationsClick('pdp_recommended_recipes')('product_card_click'),\n ),\n },\n plpRecipeRecommendations: {\n buyButtonClick: failSilently(\n recipeRecommendationsClick('plp_recommended_recipes')('button_recipe_click'),\n ),\n recipeTeaserClick: failSilently(\n recipeRecommendationsClick('plp_recommended_recipes')('product_card_click'),\n ),\n },\n};\n","import { SearchFromPageType } from '../../../../base/models/SearchFromPageType';\nimport { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\ntype SearchType = 'resultPage' | 'overlay';\n\nconst mapSearchFeatureName = (searchFromPage?: SearchFromPageType): SearchFeatureName => {\n switch (searchFromPage) {\n case SearchFromPageType.StartPage:\n return 'homepage';\n case SearchFromPageType.Ecommerce:\n return 'products';\n case SearchFromPageType.Recipes:\n return 'recipes';\n case SearchFromPageType.Stores:\n return 'stores';\n case SearchFromPageType.Member:\n return 'member';\n case SearchFromPageType.Finance:\n return 'bank';\n case SearchFromPageType.Other:\n default:\n return 'other';\n }\n};\n\nconst mapSearchTypeToGa = (searchType: SearchType) => {\n switch (searchType) {\n case 'overlay':\n return 'autocomplete';\n case 'resultPage':\n return 'enter';\n default:\n return null;\n }\n};\n\nconst search =\n (searchFromPage?: SearchFromPageType) =>\n (actionTrigger: SearchTermActionTriggerType) =>\n ({\n actualSearchTerm,\n originalSearchTerm,\n totalResultNumber,\n }: {\n actualSearchTerm?: string;\n originalSearchTerm?: string;\n totalResultNumber?: number;\n }) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n\n const event: SearchEvent = {\n event: 'search',\n search_feature_name: featureName,\n search_term_action_type_trigger: actionTrigger,\n search_term: originalSearchTerm?.length === 0 ? undefined : originalSearchTerm,\n search_term_inferred: actualSearchTerm,\n search_results_number: totalResultNumber,\n };\n\n sendGA4Event(event);\n };\n\nconst searchDropdownAction =\n (searchFromPage?: SearchFromPageType) => (actionTrigger: SearchTermActionTriggerType) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n\n const event: SearchDropdownActionEvent = {\n event: 'search_dropdown_action',\n search_feature_name: featureName,\n type: actionTrigger,\n };\n\n sendGA4Event(event);\n };\n\nconst searchDropdownItemAction =\n (searchFromPage?: SearchFromPageType) =>\n (actionTrigger: SearchTermActionTriggerType) =>\n ({ position, itemId, itemName }: { position?: number; itemId?: string; itemName?: string }) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n\n const event: SearchDropdownItemActionEvent = {\n event: 'search_dropdown_action',\n search_feature_name: featureName,\n type: actionTrigger,\n position,\n item_id: itemId,\n item_name: itemName,\n };\n\n sendGA4Event(event);\n };\n\nconst viewSearchResults =\n (searchFromPage?: SearchFromPageType) =>\n ({\n actualSearchTerm,\n originalSearchTerm,\n totalResultNumber,\n }: {\n actualSearchTerm: string;\n originalSearchTerm: string;\n totalResultNumber: number;\n }) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n\n const event: ViewSearchResultsEvent = {\n event: 'view_search_results',\n search_term: originalSearchTerm,\n search_term_inferred: actualSearchTerm,\n search_feature_name: featureName,\n search_results_number: totalResultNumber,\n };\n\n sendGA4Event(event);\n };\n\nconst viewSearchResultSuggestionClick = (linkText: string, linkUrl: string) => {\n const event: ViewSearchResultsSuggestionClickEvent = {\n event: 'view_search_results_other_suggestions_clicks',\n type: 'other_suggestions',\n click_text: linkText,\n click_path: linkUrl,\n };\n\n sendGA4Event(event);\n};\n\nconst noSearchResults =\n (searchType: SearchType) => (searchTerm: string) => (searchFromPage?: SearchFromPageType) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n const type = mapSearchTypeToGa(searchType);\n\n const event: NoSearchResultsEvent = {\n event: 'no_search_results',\n feature_name: featureName,\n type,\n search_term: searchTerm,\n };\n\n sendGA4Event(event);\n };\n\nconst searchIconClick = (searchFromPage?: SearchFromPageType) => {\n const featureName = mapSearchFeatureName(searchFromPage);\n\n const event: SearchIconClickEvent = {\n event: 'search_icon_click',\n search_feature_name: featureName,\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n viewSearchResultSuggestionClick: failSilently(viewSearchResultSuggestionClick),\n viewSearchResults: failSilently(viewSearchResults),\n search: failSilently(search),\n searchDropdownAction: failSilently(searchDropdownAction),\n searchDropdownItemAction: failSilently(searchDropdownItemAction),\n noSearchResults: failSilently(noSearchResults),\n searchIconClick: failSilently(searchIconClick),\n};\n","import format from 'date-fns/format';\nimport getHours from 'date-fns/getHours';\n\nimport { DeliveryMode } from '../../../store/structureDefinitions/storeState';\n\nexport const mapDeliveryModeToGA = (deliveryMode: DeliveryMode) => {\n switch (deliveryMode) {\n case DeliveryMode.homedelivery:\n return 'home delivery';\n case DeliveryMode.pickup:\n return 'store pickup';\n default:\n return null;\n }\n};\n\nexport const mapDateRangeToGA = (fromDate: Date, toDate: Date) =>\n `${getHours(fromDate)}-${getHours(toDate)}` as GaHoursRange;\n\nexport const mapDateWeekdayToGA = (date: Date): GaWeekday => format(date, 'EEEE').toLowerCase();\n\nexport const mapDateToGA = (date: Date): GaDateFormatted => format(date, 'yyyyMMdd');\n\nexport const mapGaList = (listName: string): GaListItem => ({\n item_list_id: listName.toLowerCase(),\n item_list_name: listName.toLowerCase().split('|')[0],\n});\n","/* eslint-disable no-console */\nimport type { Ga4Events } from '../ga4';\n\nconst resetEcommerceEvent = () => {\n setTimeout(() => {\n window.dataLayer.push({ ecommerce: null });\n }, 0);\n};\n\nconst sendEvent = <T extends object>(eventData: T) => {\n setTimeout(() => {\n const analyticsData = JSON.parse(JSON.stringify(eventData));\n window.dataLayer.push(analyticsData);\n }, 0);\n};\n\nexport const sendGA4Event = <T extends Ga4Events & { ecommerce?: unknown }>(eventData: T) => {\n if (eventData.ecommerce) {\n resetEcommerceEvent();\n }\n sendEvent(eventData);\n};\n\nexport const sendUntypedGA4Event = <T extends object>(eventData: T) => {\n sendEvent(eventData);\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst shoppingList = (type: ShoppingListEventType) => () => {\n const event: ShoppingListEvent = {\n event: 'shopping_list',\n type,\n event_key: `shopping_list_${type}`,\n };\n\n sendGA4Event(event);\n};\n\nexport default {\n add: failSilently(shoppingList('add')),\n remove: failSilently(shoppingList('remove')),\n create: failSilently(shoppingList('create')),\n view: failSilently(shoppingList('view')),\n check: failSilently(shoppingList('check')),\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst addAddress = () => {\n const event: UserProfileEvent = {\n event: 'user_profile',\n type: 'add adress',\n event_key: 'user_profile_add',\n };\n\n sendGA4Event(event);\n};\n\nconst editAddress = () => {\n const event: UserProfileEvent = {\n event: 'user_profile',\n type: 'edit adress',\n event_key: 'user_profile_edit',\n };\n\n sendGA4Event(event);\n};\n\nconst addContactInfo = () => {\n const event: UserProfileEvent = {\n event: 'user_profile',\n type: 'add contact info',\n event_key: 'user_profile_add',\n };\n\n sendGA4Event(event);\n};\n\nconst login = (method: LoginMethodEventType, status: LoginMethodStatus) => {\n const event: LoginEvent = {\n event: 'login',\n status,\n method,\n };\n\n sendGA4Event(event);\n};\n\nconst logout = () => {\n const event: LogoutEvent = {\n event: 'logout',\n };\n\n sendGA4Event(event);\n};\n\nconst signup = (\n type: SignupMethodEventType,\n customerType: SignupCustomerType,\n method: SignupMethodType,\n) => {\n const event: SignupEvent = {\n event: 'sign_up',\n type,\n customer_type: customerType,\n method,\n };\n\n sendGA4Event(event);\n};\n\nconst accountRemoved = () => {\n const event: AccountRemovedEvent = {\n event: 'remove_account',\n };\n\n sendGA4Event(event);\n};\n\nconst connectMembership = (\n status: ConnectMembershipStatusType,\n method: ConnectMembershipMethodEventType,\n) => {\n const event: ConnectMembershipEvent = {\n event: 'connect_membership',\n status,\n method,\n };\n\n sendGA4Event(event);\n};\n\nconst accountSettingsInteraction = (clickText: string) => {\n const event: AccountSettingsInteractionEvent = {\n event: 'interaction',\n click_text: clickText,\n page_type: 'account settings',\n };\n sendGA4Event(event);\n};\n\nexport default {\n address: {\n add: failSilently(addAddress),\n edit: failSilently(editAddress),\n },\n contactInfo: {\n add: failSilently(addContactInfo),\n },\n login: failSilently(login),\n logout: failSilently(logout),\n signup: failSilently(signup),\n accountRemoved: failSilently(accountRemoved),\n connectMembership: failSilently(connectMembership),\n navigation: {\n accountSettingsInteraction: failSilently(accountSettingsInteraction),\n },\n};\n","import type { AnalyticsListOptions } from '../../../analytics/analyticsHandler';\nimport { ga4CartTracking } from './ga4/cart';\n\nexport const sendGaModifyCartEvent = (\n productId: string,\n variantId: string | undefined,\n newQuantity: number,\n previousQuantity: number,\n storeId: string,\n analyticsOptions: AnalyticsListOptions | null,\n) => {\n ga4CartTracking.modifyCartItems(\n [\n {\n productId,\n variantId,\n newQuantity,\n previousQuantity,\n index: analyticsOptions?.position,\n },\n ],\n storeId,\n analyticsOptions,\n );\n};\n","import { useEffect } from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { ga4PromotionTracking } from '../ga4/promotion';\nimport type { IGaPromoData } from '../models/IGaPromoData';\n\nconst usePromotionTracking = ({\n gaPromoCreative,\n gaPromoId,\n gaPromoName,\n gaPromoPosition,\n}: IGaPromoData) => {\n const [ref, inView] = useInView({\n triggerOnce: true,\n threshold: 0.5,\n });\n\n useEffect(() => {\n if (inView) {\n ga4PromotionTracking.viewPromotion({\n gaPromoCreative,\n gaPromoId,\n gaPromoName,\n gaPromoPosition,\n });\n }\n }, [gaPromoCreative, gaPromoId, gaPromoName, gaPromoPosition, inView]);\n\n const click = () => {\n ga4PromotionTracking.selectPromotion({\n gaPromoCreative,\n gaPromoId,\n gaPromoName,\n gaPromoPosition,\n });\n };\n\n return { ref, click };\n};\n\nexport default usePromotionTracking;\n","import { useEffect, useRef } from 'react';\n\nimport type { SearchFromPageType } from '../../../base/models/SearchFromPageType';\nimport { ga4SearchTracking } from '../ga4/search';\n\nexport const useSearchOverlayGA4ActionTracking = (\n originalQuery: string | undefined,\n queryUsed: string | undefined,\n searchFromPage: SearchFromPageType | undefined,\n isLoading: boolean,\n) => {\n const originalQueryToTrack = isLoading ? undefined : originalQuery;\n const queryUsedToTrack = isLoading ? undefined : queryUsed;\n\n const previousOriginalQuery = useRef<string | undefined>(undefined);\n useEffect(() => {\n if (previousOriginalQuery.current !== originalQueryToTrack) {\n previousOriginalQuery.current = undefined;\n }\n }, [originalQueryToTrack]);\n\n const trackSearchAction = (\n actionTrigger: SearchTermActionTriggerType,\n totalResultNumber?: number,\n ) => {\n if (\n previousOriginalQuery.current === originalQueryToTrack &&\n originalQueryToTrack !== undefined\n ) {\n return;\n }\n\n previousOriginalQuery.current = originalQueryToTrack;\n\n ga4SearchTracking.search(searchFromPage)?.(actionTrigger)({\n originalSearchTerm: originalQueryToTrack,\n actualSearchTerm: queryUsedToTrack,\n totalResultNumber,\n });\n };\n\n const trackSearchDropdownAction = ga4SearchTracking.searchDropdownAction(searchFromPage);\n const trackSearchDropdownItemAction =\n ga4SearchTracking.searchDropdownItemAction(searchFromPage);\n\n const trackAbortAction = () => {\n trackSearchAction('abort');\n trackSearchDropdownAction?.('abort');\n };\n\n const trackCloseClickAction = () => {\n trackSearchAction('click_x');\n trackSearchDropdownAction?.('click_x');\n };\n\n const trackListObjectClick = (itemId?: string, itemName?: string, position?: number) => {\n trackSearchAction('click_list_object');\n trackSearchDropdownItemAction?.('click_list_object')({ itemId, itemName, position });\n };\n\n const trackEnterAction = () => {\n trackSearchAction('enter');\n trackSearchDropdownAction?.('enter');\n };\n\n const trackSeeAllResultsClickAction = () => {\n trackSearchAction('see_all_results');\n trackSearchDropdownAction?.('see_all_results');\n };\n\n const trackLabelClick = () => {\n trackSearchAction('click_label');\n trackSearchDropdownAction?.('click_label');\n };\n\n const trackAddToCartClickAction = (itemId: string, itemName: string, position: number) => {\n trackSearchAction('add_to_cart');\n trackSearchDropdownItemAction?.('add_to_cart')({ itemId, itemName, position });\n };\n\n const trackRemoveFromCartClickAction = (itemId: string, itemName: string, position: number) => {\n trackSearchAction('remove_from_cart');\n trackSearchDropdownItemAction?.('remove_from_cart')({ itemId, itemName, position });\n };\n\n return {\n trackSearchDropdownAction,\n trackSearchDropdownItemAction,\n trackSearchAction,\n trackAbortAction,\n trackCloseClickAction,\n trackListObjectClick,\n trackEnterAction,\n trackSeeAllResultsClickAction,\n trackLabelClick,\n trackAddToCartClickAction,\n trackRemoveFromCartClickAction,\n };\n};\nexport const useEcommerceSearchOverlayGA4ActionTracking = (\n originalQuery: string | undefined,\n queryUsed: string | undefined,\n searchFromPage: SearchFromPageType | undefined,\n isLoading: boolean,\n) => {\n const { trackSearchAction, trackSearchDropdownAction, trackSearchDropdownItemAction } =\n useSearchOverlayGA4ActionTracking(originalQuery, queryUsed, searchFromPage, isLoading);\n\n const trackAbortAction = (totalResults?: number) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('abort', totalResultsToTrack);\n trackSearchDropdownAction?.('abort');\n };\n\n const trackCloseClickAction = (totalResults?: number) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('click_x', totalResultsToTrack);\n trackSearchDropdownAction?.('click_x');\n };\n\n const trackAutocompleteItemClick = (totalResults?: number) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('other_suggestions', totalResultsToTrack);\n trackSearchDropdownAction?.('other_suggestions');\n };\n\n const trackListObjectClick = (\n totalResults: number | undefined,\n itemId: string,\n itemName: string,\n position: number,\n ) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('click_list_object', totalResultsToTrack);\n trackSearchDropdownItemAction?.('click_list_object')({ itemId, itemName, position });\n };\n\n const trackEnterAction = (totalResults?: number) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('enter', totalResultsToTrack);\n trackSearchDropdownAction?.('enter');\n };\n\n const trackSeeAllResultsClickAction = (totalResults?: number) => {\n const totalResultsToTrack = isLoading ? undefined : totalResults;\n trackSearchAction('see_all_results', totalResultsToTrack);\n trackSearchDropdownAction?.('see_all_results');\n };\n\n const trackAddToCartClickAction = (\n totalResults: number | undefined,\n itemId: string,\n itemName: string,\n position: number,\n ) => {\n trackSearchAction('add_to_cart', totalResults);\n trackSearchDropdownItemAction?.('add_to_cart')({ itemId, itemName, position });\n };\n\n const trackRemoveFromCartClickAction = (\n totalResults: number | undefined,\n itemId: string,\n itemName: string,\n position: number,\n ) => {\n trackSearchAction('remove_from_cart', totalResults);\n trackSearchDropdownItemAction?.('remove_from_cart')({ itemId, itemName, position });\n };\n\n return {\n trackAbortAction,\n trackCloseClickAction,\n trackAutocompleteItemClick,\n trackListObjectClick,\n trackEnterAction,\n trackSeeAllResultsClickAction,\n trackAddToCartClickAction,\n trackRemoveFromCartClickAction,\n };\n};\n","import type { FC, ReactNode } from 'react';\nimport * as React from 'react';\nimport { createContext, useMemo } from 'react';\n\nimport type { RecipeCategoryFacet } from '../../../search/models/models';\n\nconst getSelectedCategories = (\n parentName: string,\n categoryFacets: RecipeCategoryFacet[] | null,\n): Record<string, string> => {\n if (categoryFacets === null) {\n return {};\n }\n return categoryFacets.reduce(\n (acc, categoryFacet) => {\n if (categoryFacet.selected) {\n const parentAlreadyHasValue = Boolean(acc[parentName]);\n const newValue = parentAlreadyHasValue\n ? `${acc[parentName]}+${categoryFacet.item}`\n : categoryFacet.item;\n\n return {\n ...acc,\n [parentName]: newValue,\n };\n }\n\n if (Array.isArray(categoryFacet.categories)) {\n return {\n ...acc,\n ...getSelectedCategories(categoryFacet.item, categoryFacet.categories),\n };\n }\n\n return acc;\n },\n {} as Record<string, string>,\n );\n};\n\n// mimic old tracking logic\nexport const getRecipeComboHit = (categories: RecipeCategoryFacet[]) => {\n const selectedCategoryFacets = categories.reduce(\n (acc, categoryFacet) => ({\n ...acc,\n ...getSelectedCategories(categoryFacet.item, categoryFacet.categories),\n }),\n {},\n );\n\n return Object.entries(selectedCategoryFacets).reduce((acc, [parentName, childrenStr]) => {\n if (acc.length) {\n return `${acc};${parentName}:${childrenStr}`;\n }\n\n return `${parentName}:${childrenStr}`;\n }, '');\n};\n\nconst ValueContext = createContext<{ recipeComboHit: string | null }>({\n recipeComboHit: null,\n});\n\nexport const useRecipeFilterTrackingContext = () => {\n const { recipeComboHit } = React.useContext(ValueContext);\n\n return {\n recipeComboHit,\n };\n};\n\ninterface RecipeFilterPageTrackingContextProviderProps {\n categories: RecipeCategoryFacet[];\n children: ReactNode;\n}\n\nconst RecipeFilterPageTrackingContextProvider: FC<\n React.PropsWithChildren<RecipeFilterPageTrackingContextProviderProps>\n> = ({ categories, children }) => {\n const value = useMemo(\n () => ({ recipeComboHit: getRecipeComboHit(categories ?? []) }),\n [categories],\n );\n\n return <ValueContext.Provider value={value}>{children}</ValueContext.Provider>;\n};\n\nexport default RecipeFilterPageTrackingContextProvider;\n","import { sendEvent } from '../utils';\n\nexport interface AbTestGaEvent {\n event: 'abtest';\n experiment_name: string;\n experiment_variant: string;\n}\n\n/**\n * experiment_name: Name of experiment\n * experiment_variant: Normal variant should always be A\n */\nconst userInteraction = (experiment_name: string, experiment_variant: string) => {\n sendEvent<AbTestGaEvent>({\n event: 'abtest',\n experiment_name,\n experiment_variant,\n });\n};\n\nconst AbTestTracking = {\n userInteraction,\n};\nexport default AbTestTracking;\n","import { sendInteractionEvent } from '../utils';\n\n// Checkout - Step 3 - Leverans - Hemleverans\nconst sendHomeDeliveryTabInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hemleverans',\n eventLabel,\n });\n};\n\nconst sendGaHomeDeliveryTabAddressInteractionClickAdd = () => {\n sendHomeDeliveryTabInteractionClick('Adress - Lägg till');\n};\n\nconst sendGaHomeDeliveryTabAddressInteractionClickChange = () => {\n sendHomeDeliveryTabInteractionClick('Adress - Ändra');\n};\n\nconst sendGaHomeDeliveryTabDateInteractionClickAdd = () => {\n sendHomeDeliveryTabInteractionClick('Leveranstid - Lägg till');\n};\n\nconst sendGaHomeDeliveryTabDateInteractionClickChange = () => {\n sendHomeDeliveryTabInteractionClick('Leveranstid - Ändra');\n};\n\nconst sendGaHomeDeliveryTabMessageToDriverInteractionClick = () => {\n sendHomeDeliveryTabInteractionClick('Meddelande till chauffören');\n};\n\n// Checkout - Leverans - Hemleverans - Fakturaadress\nconst sendHomeDeliveryBillingTabInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hemleverans- Fakturadress',\n eventLabel,\n });\n};\n\nconst sendGaHomeDeliveryTabBillingAddressInteractionClickAdd = () => {\n sendHomeDeliveryBillingTabInteractionClick('Lägg till fakturaadress');\n};\n\nconst sendGaHomeDeliveryTabBillingAddressInteractionClickChange = () => {\n sendHomeDeliveryBillingTabInteractionClick('Ändra fakturaadress');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress\nconst sendHomeDeliveryAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hemleverans - Leveransadress',\n eventLabel,\n });\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickAdd = () => {\n sendHomeDeliveryAddressInteractionClick('Lägg till leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickEdit = () => {\n sendHomeDeliveryAddressInteractionClick('Redigera leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickSelect = () => {\n sendHomeDeliveryAddressInteractionClick('Ändra leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickClose = () => {\n sendHomeDeliveryAddressInteractionClick('Stäng');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress - Redigera adress\nconst sendHomeDeliveryEditAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hemleverans - Leveransadress - Redigera adress',\n eventLabel,\n });\n};\n\nconst sendGaHomeDeliveryEditAddressInteractionClickRemoveAddress = () => {\n sendHomeDeliveryEditAddressInteractionClick('Ta bort adress');\n};\n\nconst sendGaHomeDeliveryEditAddressInteractionClickSaveAddress = () => {\n sendHomeDeliveryEditAddressInteractionClick('Spara ändringar');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress - Lägg till leveransadress\nconst sendHomeDeliveryAddAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction:\n 'Checkout - Leverans - Hemleverans - Leveransadress - Lägg till leveransadress',\n eventLabel,\n });\n};\n\nconst sendGaHomeDeliveryAddAddressInteractionClickSaveAddress = () => {\n sendHomeDeliveryAddAddressInteractionClick('Spara ändringar');\n};\n\nconst homeDeliveryTracking = {\n deliveryAddress: {\n add: sendGaHomeDeliveryTabAddressInteractionClickAdd,\n change: sendGaHomeDeliveryTabAddressInteractionClickChange,\n flyIn: {\n add: sendGaHomeDeliveryAddressInteractionClickAdd,\n editClick: sendGaHomeDeliveryAddressInteractionClickEdit,\n select: sendGaHomeDeliveryAddressInteractionClickSelect,\n close: sendGaHomeDeliveryAddressInteractionClickClose,\n edit: {\n save: sendGaHomeDeliveryEditAddressInteractionClickSaveAddress,\n remove: sendGaHomeDeliveryEditAddressInteractionClickRemoveAddress,\n },\n create: {\n save: sendGaHomeDeliveryAddAddressInteractionClickSaveAddress,\n },\n },\n },\n billingAddress: {\n add: sendGaHomeDeliveryTabBillingAddressInteractionClickAdd,\n change: sendGaHomeDeliveryTabBillingAddressInteractionClickChange,\n },\n timeslot: {\n add: sendGaHomeDeliveryTabDateInteractionClickAdd,\n change: sendGaHomeDeliveryTabDateInteractionClickChange,\n },\n messageToDriverClick: sendGaHomeDeliveryTabMessageToDriverInteractionClick,\n};\n\nexport default homeDeliveryTracking;\n","import { sendInteractionEvent } from '../utils';\n\nconst sendGaReplacableItemSwitchInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Varukorg',\n eventLabel,\n });\n};\n\nconst sendGaReplacableItemSwitchInteractionClickAllCheckbox = () => () => {\n sendGaReplacableItemSwitchInteractionClick('Ersätt varor - Ersätt varor');\n};\n\nconst sendGaReplacableItemSwitchInteractionClickProductCheckbox = () => () => {\n sendGaReplacableItemSwitchInteractionClick('Ersätt varor - Ersätt vara');\n};\n\nconst itemReplaceEvents = {\n clickAll: sendGaReplacableItemSwitchInteractionClickAllCheckbox,\n clickProductCheckbox: sendGaReplacableItemSwitchInteractionClickProductCheckbox,\n};\n\nexport default itemReplaceEvents;\n","import { sendInteractionEvent } from '../utils';\n\n// Checkout - Step 3 - Leverans - Hämta i butik\nconst sendPickupDeliveryTabInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hämta i butik',\n eventLabel,\n });\n};\n\nconst sendGaPickupDeliveryTabLocationInteractionClickAdd = () => {\n sendPickupDeliveryTabInteractionClick('Hämtas pÃ¥ - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabLocationInteractionClickChange = () => {\n sendPickupDeliveryTabInteractionClick('Hämtas pÃ¥ - Ändra');\n};\n\nconst sendGaPickupDeliveryTabContactDetailsInteractionClickAdd = () => {\n sendPickupDeliveryTabInteractionClick('Kontaktuppgifter - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabContactDetailsInteractionClickChange = () => {\n sendPickupDeliveryTabInteractionClick('Kontaktuppgifter - Ändra');\n};\n\nconst sendGaPickupDeliveryTabPickupDateInteractionClickAdd = () => {\n sendPickupDeliveryTabInteractionClick('Avhämtningstid - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabPickupDateInteractionClickChange = () => {\n sendPickupDeliveryTabInteractionClick('Avhämtningstid - Ändra');\n};\n\n// Checkout - Leverans - Hämta i butik - Fakturaadress\nconst sendPickupDeliveryBillingTabInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hämta i butik - Fakturadress',\n eventLabel,\n });\n};\n\nconst sendGaPickupDeliveryTabBillingAddressInteractionClickAdd = () => {\n sendPickupDeliveryBillingTabInteractionClick('Lägg till fakturaadress');\n};\n\nconst sendGaPickupDeliveryTabBillingAddressInteractionClickChange = () => {\n sendPickupDeliveryBillingTabInteractionClick('Ändra fakturaadress');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter\nconst sendPickupDeliveryAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hämta i butik - Kontaktuppgifter',\n eventLabel,\n });\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickAdd = () => {\n sendPickupDeliveryAddressInteractionClick('Lägg till kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickEdit = () => {\n sendPickupDeliveryAddressInteractionClick('Redigera kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickSelect = () => {\n sendPickupDeliveryAddressInteractionClick('Ändra kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickClose = () => {\n sendPickupDeliveryAddressInteractionClick('Stäng');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress\nconst sendPickupDeliveryEditAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress',\n eventLabel,\n });\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickBack = () => {\n sendPickupDeliveryEditAddressInteractionClick('Tillbaka');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickClose = () => {\n sendPickupDeliveryEditAddressInteractionClick('Stäng');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickSaveAddress = () => {\n sendPickupDeliveryEditAddressInteractionClick('Spara ändringar');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddress = () => {\n sendPickupDeliveryEditAddressInteractionClick('Ta bort adress');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressYes = () => {\n sendPickupDeliveryEditAddressInteractionClick('Ta bort adress - Ja');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressNo = () => {\n sendPickupDeliveryEditAddressInteractionClick('Ta bort adress - Avbryt');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress\nconst sendPickupDeliveryAddAddressInteractionClick = (eventLabel: string) => {\n sendInteractionEvent({\n eventAction:\n 'Checkout - Leverans - Hämta i butik - Kontaktuppgifter - Lägg till kontaktuppgifter',\n eventLabel,\n });\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickSaveAddress = () => {\n sendPickupDeliveryAddAddressInteractionClick('Spara ändringar');\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickBack = () => {\n sendPickupDeliveryAddAddressInteractionClick('GÃ¥ tillbaka');\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickClose = () => {\n sendPickupDeliveryAddAddressInteractionClick('Stäng');\n};\n\nconst pickupTracking = {\n pickupStore: {\n add: sendGaPickupDeliveryTabLocationInteractionClickAdd,\n change: sendGaPickupDeliveryTabLocationInteractionClickChange,\n },\n contactAddress: {\n add: sendGaPickupDeliveryTabContactDetailsInteractionClickAdd,\n change: sendGaPickupDeliveryTabContactDetailsInteractionClickChange,\n flyIn: {\n add: sendGaPickupDeliveryAddressInteractionClickAdd,\n editClick: sendGaPickupDeliveryAddressInteractionClickEdit,\n select: sendGaPickupDeliveryAddressInteractionClickSelect,\n close: sendGaPickupDeliveryAddressInteractionClickClose,\n edit: {\n back: sendGaPickupDeliveryEditAddressInteractionClickBack,\n close: sendGaPickupDeliveryEditAddressInteractionClickClose,\n save: sendGaPickupDeliveryEditAddressInteractionClickSaveAddress,\n remove: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddress,\n removeConfirm: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressYes,\n removeCancel: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressNo,\n },\n create: {\n save: sendGaPickupDeliveryAddAddressInteractionClickSaveAddress,\n back: sendGaPickupDeliveryAddAddressInteractionClickBack,\n close: sendGaPickupDeliveryAddAddressInteractionClickClose,\n },\n },\n },\n billingAddress: {\n add: sendGaPickupDeliveryTabBillingAddressInteractionClickAdd,\n change: sendGaPickupDeliveryTabBillingAddressInteractionClickChange,\n },\n timeslot: {\n add: sendGaPickupDeliveryTabPickupDateInteractionClickAdd,\n change: sendGaPickupDeliveryTabPickupDateInteractionClickChange,\n },\n};\n\nexport default pickupTracking;\n","import { sendInteractionEvent } from '../utils';\n\nconst sendGaSubscriptionInteractionEvent = (week: number | null, eventLabel: string) => {\n let interval;\n\n if (week) {\n if (week === 1) {\n interval = 'Varje vecka';\n } else if (week === 2) {\n interval = 'Varannan vecka';\n } else if (week === 3) {\n interval = 'Var tredje vecka';\n } else if (week === 4) {\n interval = 'Var fjärde vecka';\n }\n }\n\n sendInteractionEvent({\n eventAction: 'Checkout - Leverans - Abonnemang',\n eventLabel,\n subscriptionInterval: interval,\n });\n};\n\nconst sendGaSubscriptionInteractionStart = (week: number | null) => {\n sendGaSubscriptionInteractionEvent(week, 'Starta abonnemang');\n};\n\nconst sendGaSubscriptionInteractionEdit = (week: number | null) => {\n sendGaSubscriptionInteractionEvent(week, 'Ändra abonnemang');\n};\n\nconst sendGaSubscriptionInteractionCancel = (week: number | null) => {\n sendGaSubscriptionInteractionEvent(week, 'Avsluta abonnemang');\n};\n\nconst sendGaSubscriptionInteractionCancelConfirm = () => {\n sendGaSubscriptionInteractionEvent(null, 'Avsluta abonnemang - Ja');\n};\n\nconst sendGaSubscriptionInteractionCancelCancel = () => {\n sendGaSubscriptionInteractionEvent(null, 'Avsluta abonnemang - Avbryt');\n};\n\nconst sendGaSubscriptionInteractionOpen = () => {\n sendGaSubscriptionInteractionEvent(null, 'Öppna dropdown');\n};\n\nconst sendGaSubscriptionInteractionClose = () => {\n sendGaSubscriptionInteractionEvent(null, 'Stäng dropdown');\n};\n\nconst subscriptionTracking = {\n start: sendGaSubscriptionInteractionStart,\n edit: sendGaSubscriptionInteractionEdit,\n cancel: sendGaSubscriptionInteractionCancel,\n cancelConfirm: sendGaSubscriptionInteractionCancelConfirm,\n cancelCancel: sendGaSubscriptionInteractionCancelCancel,\n open: sendGaSubscriptionInteractionOpen,\n close: sendGaSubscriptionInteractionClose,\n};\n\nexport default subscriptionTracking;\n","import type { AnalyticsVoucherInteractionEvent } from '../../../../analytics/analyticsHandler';\nimport { Browser } from '../../../../utility/browser';\nimport { DeliveryMode } from '../../store/structureDefinitions/storeState';\nimport { sendGaInteractionWithoutCustomerSegment } from '../commonEvents';\nimport { sendInteractionEvent } from '../utils';\nimport editOrderTracking from './editOrderEvents';\nimport homeDeliveryTracking from './homeDeliveryEvents';\nimport itemReplaceEvents from './itemReplaceEvents';\nimport pickupTracking from './storeDeliveryEvents';\nimport subscriptionTracking from './subscriptionEvents';\n\nconst sendGaDeliveryStepInit = () => {\n const gaEvent = Browser.createNewEvent('ga:deliveryInfo');\n window.dispatchEvent(gaEvent);\n};\n\nconst sendGaDeliveryTabClickEvent = (mode: DeliveryMode) => {\n const tab = mode === DeliveryMode.homedelivery ? 'Hemleverans' : 'Hämta i butik';\n sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Leverans', tab);\n};\n\nconst sendGaAddVoucherEvent = (code: string, err: string | null) => {\n if (err) {\n const gaEvent = Browser.createNewEvent(\n 'ga:voucherInteraction',\n ) as AnalyticsVoucherInteractionEvent;\n gaEvent.eventLabel = 'Registrering kampanjkod - Felmeddelande';\n gaEvent.campaignCode = err;\n window.dispatchEvent(gaEvent);\n } else {\n const gaEvent = Browser.createNewEvent(\n 'ga:voucherInteraction',\n ) as AnalyticsVoucherInteractionEvent;\n gaEvent.eventLabel = 'Registrering kampanjkod';\n gaEvent.campaignCode = code;\n window.dispatchEvent(gaEvent);\n }\n};\n\nconst sendGaInteractionCheckoutLoginConfirm = () => {\n sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Login prompt', 'Login');\n};\n\nconst sendGaInteractionCheckoutLoginCancel = () => {\n sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Login prompt', 'Avbryt');\n};\n\nconst sendGaSaveCartOpen = () => {\n sendInteractionEvent({ eventAction: 'Checkout - Varukorg', eventLabel: 'Spara varukorg' });\n};\n\nconst sendGaSaveCartSave = () => {\n sendInteractionEvent({\n eventAction: 'Checkout - Varukorg - Spara din varukorg',\n eventLabel: 'Bekräfta - Spara varukorg',\n });\n};\n\nconst sendGaSaveCartClose = () => {\n sendInteractionEvent({\n eventAction: 'Checkout - Varukorg - Spara din varukorg',\n eventLabel: 'Stäng - Spara varukorg',\n });\n};\n\nconst checkoutTracking = {\n cart: {\n replaceItems: itemReplaceEvents,\n voucher: {\n add: sendGaAddVoucherEvent,\n },\n saveCart: {\n save: sendGaSaveCartSave,\n close: sendGaSaveCartClose,\n open: sendGaSaveCartOpen,\n },\n },\n delivery: {\n init: sendGaDeliveryStepInit,\n tabClick: sendGaDeliveryTabClickEvent,\n subscription: subscriptionTracking,\n pickup: pickupTracking,\n homeDelivery: homeDeliveryTracking,\n },\n loginDialog: {\n confirm: sendGaInteractionCheckoutLoginConfirm,\n cancel: sendGaInteractionCheckoutLoginCancel,\n },\n editOrder: editOrderTracking,\n};\n\nexport default checkoutTracking;\n","import { Helpers } from '../../../../utility/helpers';\nimport { sendInteractionEvent } from '../utils';\n\nconst sendGaEditOrderCheckoutSummary = (\n editOrderTotalPrice: number,\n total: number,\n editOrderTotalDifference: number,\n) => {\n sendInteractionEvent({\n eventAction: 'Edit Order',\n eventLabel: 'Slutför köp - edit order',\n editOrder: 'Editerad order',\n tidigareBetalt_metric9: Helpers.truncateDecimalsWithSeparator(\n editOrderTotalPrice,\n 2,\n '',\n '.',\n ).replace(/ /g, ''),\n nyttOrdervärde_metric10: Helpers.truncateDecimalsWithSeparator(total, 2, '', '.').replace(\n / /g,\n '',\n ),\n differensOrdervärde_metric11: Helpers.truncateDecimalsWithSeparator(\n editOrderTotalDifference,\n 2,\n '',\n '.',\n ).replace(/ /g, ''),\n });\n};\n\nconst editOrderTracking = {\n summary: sendGaEditOrderCheckoutSummary,\n};\n\nexport default editOrderTracking;\n","import { CncStep } from '../../store/structureDefinitions/uiState';\n\nexport const POSTAL_CODE_PREVIEW_EVENT_ACTION = 'Slider - Välj leveranssätt';\nexport const TIMESLOTS_EVENT_ACTION = 'Slider - Välj leveranstid';\nexport const POSTAL_CODE_SELECTOR_EVENT_ACTION = 'Slider - Ange ditt postnummer';\nexport const MINI_CART_EVENT_ACTION = 'Slider - Varukorg - Överblick';\nexport const MAP_EVENT_ACTION = 'Slider - Välj butik';\nexport const POPUP_CHANGE_DELIVERY_OPTION = 'Slider - Byte av leveranssätt - pop up';\nexport const OPEN_CNC_EVENT_ACTION = 'Slider - Slider öppnas';\n\nexport const getEventAction = (step: CncStep) => {\n const STEP_TO_ACTION = {\n [CncStep.Map]: MAP_EVENT_ACTION,\n [CncStep.TimeSlots]: TIMESLOTS_EVENT_ACTION,\n [CncStep.PostalCodeSelector]: POSTAL_CODE_SELECTOR_EVENT_ACTION,\n [CncStep.PostalCodePreview]: POSTAL_CODE_PREVIEW_EVENT_ACTION,\n [CncStep.MiniCart]: MINI_CART_EVENT_ACTION,\n };\n\n return STEP_TO_ACTION[step];\n};\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\nimport { sendInteractionEvent } from '../utils';\nimport { POSTAL_CODE_PREVIEW_EVENT_ACTION } from './utils';\n\nconst sendDeliveryOptionEvent = (eventLabel: string, additionalData?: object) => {\n sendInteractionEvent({\n eventAction: POSTAL_CODE_PREVIEW_EVENT_ACTION,\n eventLabel,\n ...additionalData,\n });\n};\n\nconst createSendDeliveryOptionEvent = (eventLabel: string) => () =>\n sendDeliveryOptionEvent(eventLabel);\n\nconst sendDeliveryHomeOptionSelect = (\n zipCode: string | undefined,\n newStore: IApiStore | undefined,\n) => {\n sendDeliveryOptionEvent('Hemleverans valt - leveranstid', {\n zipCode,\n deliverySearch: zipCode,\n deliveryMethod: 'Hemleverans - Leveranssätt vald av kund\"',\n storeId: newStore?.id,\n storeName: newStore?.name,\n Utbud: 'Fullsortiment',\n });\n};\n\nexport default {\n goToZipCode: createSendDeliveryOptionEvent('GÃ¥ till byt postnummer'),\n readMoreExpress: createSendDeliveryOptionEvent('Läs mer om snabbleverans'),\n home: {\n select: sendDeliveryHomeOptionSelect,\n seeMore: createSendDeliveryOptionEvent('Se fler tider'),\n },\n pickup: {\n select: createSendDeliveryOptionEvent('Hämta valt - gÃ¥ till tidsbokning - Hämta i butik'), // This doesn't really select - it navigates to store map.\n seeMore: createSendDeliveryOptionEvent('Se fler butiker och tider'),\n },\n};\n","import type { CncStep } from '../../store/structureDefinitions/uiState';\nimport { sendInteractionEvent } from '../utils';\nimport { getEventAction, MINI_CART_EVENT_ACTION } from './utils';\n\nconst sendCncHeaderGoToDeliveryOption = () => {\n sendInteractionEvent({\n eventAction: MINI_CART_EVENT_ACTION,\n eventLabel: 'GÃ¥ till byte av leveranssätt och leveranstid',\n });\n};\n\nconst sendCncHeaderGoToZipCode = () => {\n sendInteractionEvent({\n eventAction: MINI_CART_EVENT_ACTION,\n eventLabel: 'GÃ¥ till postnummer-sidan',\n });\n};\n\nconst sendCncHeaderGoToMap = () => {\n sendInteractionEvent({\n eventAction: MINI_CART_EVENT_ACTION,\n eventLabel: 'GÃ¥ till sök efter butik',\n });\n};\n\nconst sendCncHeaderGoToTimeslots = () => {\n sendInteractionEvent({\n eventAction: MINI_CART_EVENT_ACTION,\n eventLabel: 'GÃ¥ till byte av leveranstid',\n });\n};\n\nconst sendCncNavigationGoBack = (currentStep: CncStep) => {\n sendInteractionEvent({\n eventAction: getEventAction(currentStep),\n eventLabel: 'GÃ¥ tillbaka pilen',\n });\n};\n\nconst sendCncNavigationClose = (currentStep: CncStep) => {\n sendInteractionEvent({\n eventAction: getEventAction(currentStep),\n eventLabel: 'Stänger pop up',\n });\n};\n\nexport default {\n navigationClose: sendCncNavigationClose,\n navigationGoBack: sendCncNavigationGoBack,\n goToDeliveryOption: sendCncHeaderGoToDeliveryOption,\n goToZipCode: sendCncHeaderGoToZipCode,\n goToTimeslots: sendCncHeaderGoToTimeslots,\n goToMap: sendCncHeaderGoToMap,\n};\n","import { sendInteractionEvent } from '../utils';\nimport { MINI_CART_EVENT_ACTION } from './utils';\n\nconst createSendMiniCartEvent = (eventLabel: string) => () => {\n sendInteractionEvent({ eventAction: MINI_CART_EVENT_ACTION, eventLabel });\n};\n\nexport default {\n goToCheckout: createSendMiniCartEvent('GÃ¥ till kassan'),\n startShopping: createSendMiniCartEvent('Börja handla'),\n startEmptyCart: createSendMiniCartEvent('Töm varukorg'),\n saveCart: {\n open: createSendMiniCartEvent('Spara varukorg'),\n save: createSendMiniCartEvent('Bekräfta spara varor'),\n close: createSendMiniCartEvent('Avbryt spara varor'),\n },\n};\n","import { sendInteractionEvent } from '../utils';\nimport { POPUP_CHANGE_DELIVERY_OPTION } from './utils';\n\nconst createSendStoreChangeEvent = (eventAction: string, eventLabel: string) => () => {\n sendInteractionEvent({ eventAction, eventLabel });\n};\n\nexport default {\n storeChange: {\n deliveryOption: {\n accept: createSendStoreChangeEvent(POPUP_CHANGE_DELIVERY_OPTION, 'Fortsätt'),\n decline: createSendStoreChangeEvent(POPUP_CHANGE_DELIVERY_OPTION, 'Avbryt'),\n },\n },\n};\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\nimport { sendInteractionEvent } from '../utils';\nimport { POSTAL_CODE_SELECTOR_EVENT_ACTION } from './utils';\n\nconst sendPostalCodeSelectorEvent = (eventLabel: string, additionalData?: object) => {\n sendInteractionEvent({\n eventAction: POSTAL_CODE_SELECTOR_EVENT_ACTION,\n eventLabel,\n ...additionalData,\n });\n};\n\nconst sendPostalCodeZipCodeUpdateInteraction = (\n eventLabel: string,\n zipCode: string,\n newStore: IApiStore,\n) => {\n sendPostalCodeSelectorEvent(eventLabel, {\n zipCode,\n deliverySearch: zipCode,\n deliveryMethod: 'Hemleverans - Leveranssätt ej vald av kund',\n storeId: newStore?.id,\n storeName: newStore?.name,\n Utbud: 'Fullsortiment',\n });\n};\n\nconst sendPostalCodeSelectorZipFirstSelect = (zipCode: string, newStore: IApiStore) => {\n sendPostalCodeZipCodeUpdateInteraction('Angett postnummer', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipUpdated = (zipCode: string, newStore: IApiStore) => {\n sendPostalCodeZipCodeUpdateInteraction('Ändra postnummer', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipSelectedWithPreviousAddress = (\n zipCode: string,\n newStore: IApiStore,\n) => {\n sendPostalCodeZipCodeUpdateInteraction('Förvalt postnummer valt', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipSelectedError = (zipCode: string) => {\n sendPostalCodeSelectorEvent('Postnummer finns ej', {\n Utbud: 'Utbud hos butik hittades ej',\n deliveryMethod: 'Leveranssätt och butik hittades ej',\n deliverySearch: zipCode,\n eventLabel: 'Postnummer finns ej',\n storeId: 'StoreID hittades ej',\n storeName: 'Store Name hittades ej',\n zipCode: 'name not picked',\n });\n};\n\nconst sendPostalCodeSelectorGoToStoreSearch = () => {\n sendPostalCodeSelectorEvent('GÃ¥ till sök efter butik');\n};\n\nconst sendPostalCodeSelectorGoToCreateLogin = () => {\n sendPostalCodeSelectorEvent('GÃ¥ till Skapa Inloggning');\n};\n\nconst sendPostalCodeSelectorGoToLogin = () => {\n sendPostalCodeSelectorEvent('GÃ¥ till Logga in');\n};\n\nexport default {\n select: {\n inputFirst: sendPostalCodeSelectorZipFirstSelect,\n inputUpdate: sendPostalCodeSelectorZipUpdated,\n address: sendPostalCodeSelectorZipSelectedWithPreviousAddress,\n error: sendPostalCodeSelectorZipSelectedError,\n },\n goToMap: sendPostalCodeSelectorGoToStoreSearch,\n goToCreateLogin: sendPostalCodeSelectorGoToCreateLogin,\n goToLogin: sendPostalCodeSelectorGoToLogin,\n};\n","import { sendInteractionEvent } from '../utils';\nimport deliveryOption from './deliveryOptionEvents';\nimport header from './headerEvents';\nimport miniCart from './miniCartEvents';\nimport notification from './notificationEvents';\nimport selectPostalCode from './selectPostalCodeEvents';\nimport { OPEN_CNC_EVENT_ACTION } from './utils';\n\nconst sendOpenCncEvent = (hasSelectedZip: boolean, eventLabel: string) => {\n const zipCodeAlreadyChosen = hasSelectedZip\n ? '​Postnummer populerat'\n : 'Postnummer icke populerat​';\n\n sendInteractionEvent({\n eventAction: OPEN_CNC_EVENT_ACTION,\n eventLabel,\n zipCodeAlreadyChosen,\n });\n};\n\nconst sendOpenFromAddToCart = (hasSelectedZip: boolean) => {\n sendOpenCncEvent(hasSelectedZip, 'Add to Cart');\n};\n\nconst sendOpenFromIcon = (hasSelectedZip: boolean) => {\n sendOpenCncEvent(hasSelectedZip, 'Cart ikon');\n};\n\nconst sendOpenFromNoticeRibbonDefaultStore = (hasSelectedZip: boolean) => {\n sendOpenCncEvent(hasSelectedZip, 'Default store notice ribbon');\n};\n\nconst cncTracking = {\n openFrom: {\n cartIcon: sendOpenFromIcon,\n addToCart: sendOpenFromAddToCart,\n noticeRibbonDefaultStore: sendOpenFromNoticeRibbonDefaultStore,\n },\n notification,\n deliveryOption,\n header,\n miniCart,\n selectPostalCode,\n};\n\nexport default cncTracking;\n","import interactionClickEvents from './interactionClickEvents';\n\nconst commonTracking = {\n interaction: interactionClickEvents,\n};\n\nexport default commonTracking;\n","import type { DynamicYieldAnalyticsMetadataBody } from '../../../models/product/productDomainModels';\nimport { sendEvent } from '../../utils';\n\nconst sendGaCampaignEvent = (\n selectorName: string,\n analyticsData?: DynamicYieldAnalyticsMetadataBody,\n) => {\n if (analyticsData && selectorName) {\n sendEvent({\n event: 'experiment',\n type: 'dynamic yield',\n selector_name: selectorName,\n campaign_id: analyticsData.campaignId,\n campaign_name: analyticsData.campaignName,\n experience_id: analyticsData.experienceId,\n experience_name: analyticsData.experienceName,\n variation_id: analyticsData.variationId,\n variation_name: analyticsData.variationName,\n });\n }\n};\n\nexport default {\n campaign: sendGaCampaignEvent,\n};\n","import type { ApiRecipe } from '../../../../models/recipe/recipeModel';\nimport { Helpers } from '../../../../utility/helpers';\nimport type {\n RecipeCalculationType,\n RecipeModalTab,\n RecipePrioritizationType,\n} from '../../../recipe/models';\nimport { sendEvent, sendInteractionEvent } from '../utils';\nimport type {\n ModalPopupGaEvent,\n RecipeEcommerceInteractionGaEvent,\n RecipeInteractionGaEvent,\n RecipeModalInteractionGaEvent,\n RecipeSubstituteProductGaEvent,\n} from './recipesTrackingTypes';\n\nconst sendModalPopupEvent = (\n recipe: ApiRecipe,\n modalTabToDisplay: RecipeModalTab,\n portions?: number,\n) => {\n if (recipe) {\n const { name, externalId, recipePart, cookingTime, totalTime } = recipe;\n const actualCookingTime = totalTime || cookingTime;\n const amountOfIngredients =\n recipePart?.reduce((acc, curr) => acc + curr.ingredients.length, 0) || 0;\n\n sendEvent<ModalPopupGaEvent>({\n event: 'modalPopup',\n recipeName: name,\n modalName: `Receptmodal - ${name}`,\n modalTitle: `${window.location.pathname}receptmodal/${Helpers.slugify(name)}`,\n recipeId: externalId.toString(),\n recipeCookingTime: actualCookingTime,\n recipeStartTab: modalTabToDisplay === 2 ? 'Varor' : 'Recept',\n recipePrefilledPortions: portions?.toString() || 'undefined',\n recipeAmountOfIngredients: amountOfIngredients.toString(),\n });\n }\n};\n\nconst sendRecipeBuyInteractionEvent = (recipeName: string, recipeId: string, portions?: number) => {\n sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n event: 'interaction',\n eventLabel: 'Köp varor',\n eventAction: 'Receptmodal',\n recipeName,\n recipeId,\n portions: portions?.toString() || 'undefined',\n });\n};\n\nconst sendRecipePortionChangeInteractionEvent = (\n recipeName: string,\n recipeId: string,\n previousPortions?: number,\n portions?: number,\n) => {\n let eventLabel = '';\n if (portions !== undefined && previousPortions !== undefined) {\n if (previousPortions > portions) {\n eventLabel = 'Minska portioner';\n } else {\n eventLabel = 'Öka portioner';\n }\n }\n\n sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n event: 'interaction',\n eventLabel,\n eventAction: 'Receptmodal',\n recipeName,\n recipeId,\n portions: portions?.toString() || 'undefined',\n });\n};\n\nconst sendModalButtonClickEvent = (recipeName: string, recipeId: string) => {\n sendInteractionEvent<RecipeModalInteractionGaEvent>({\n event: 'interaction',\n eventLabel: 'Öppna receptmodal - Knapp',\n eventAction: 'Köpklara recept',\n recipeName,\n recipeId,\n });\n};\n\nconst sendModalLinkClickEvent = (recipeName: string, recipeId: string) => {\n sendInteractionEvent<RecipeModalInteractionGaEvent>({\n event: 'interaction',\n eventLabel: 'Öppna receptmodal - Bild',\n eventAction: 'Köpklara recept',\n recipeName,\n recipeId,\n });\n};\n\nconst sendRecipeCalculationInteractionEvent = (\n recipeName: string,\n recipeId: string,\n calculationType: RecipeCalculationType,\n prioritization: RecipePrioritizationType | null,\n portions?: number,\n) => {\n let eventLabel = '';\n\n switch (calculationType) {\n case 'price':\n eventLabel = 'Ändra kalkyleringstyp - Billigt';\n break;\n case 'waste':\n if (prioritization === 'organic') {\n eventLabel = 'Ändra kalkyleringstyp - Eko';\n break;\n }\n eventLabel = 'Ändra kalkyleringstyp - Bästa val';\n break;\n default:\n break;\n }\n\n sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n event: 'interaction',\n eventLabel,\n eventAction: 'Receptmodal',\n recipeName,\n recipeId,\n portions: portions?.toString() || 'undefined',\n });\n};\n\nconst sendCustomInteractionEvent = <T extends {}>(eventData: T) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Recept',\n ...eventData,\n });\n};\n\nconst sendCustomRecipeInteractionEvent = (\n eventAction: string,\n eventLabel: string,\n recipeName: string,\n) => {\n sendCustomInteractionEvent<RecipeInteractionGaEvent>({\n event: 'interaction',\n eventAction,\n eventLabel,\n recipeName,\n });\n};\n\nconst sendRecipeLinkInteractionEvent = (\n recipeName: string,\n recipeId: string,\n portions?: number,\n) => {\n sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n event: 'interaction',\n eventLabel: 'GÃ¥ till receptsidan',\n eventAction: 'Receptmodal',\n recipeName,\n recipeId,\n portions: portions?.toString() || 'undefined',\n });\n};\n\nconst sendSubstituteProductEvent = (\n recipeName: string,\n recipeId: string,\n productId: string,\n productName: string,\n) => {\n sendInteractionEvent<RecipeSubstituteProductGaEvent>({\n event: 'interaction',\n eventLabel: 'Byt Vara',\n eventAction: 'Köpklara recept',\n recipeName,\n recipeId,\n productId,\n productName,\n });\n};\n\nexport default {\n modalPopup: sendModalPopupEvent,\n modalButtonClick: sendModalButtonClickEvent,\n modalLinkClick: sendModalLinkClickEvent,\n buyRecipe: sendRecipeBuyInteractionEvent,\n portionChange: sendRecipePortionChangeInteractionEvent,\n calculationChange: sendRecipeCalculationInteractionEvent,\n linkClick: sendRecipeLinkInteractionEvent,\n substituteProduct: sendSubstituteProductEvent,\n interaction: sendCustomRecipeInteractionEvent,\n};\n","import currentProductOffers from './currentProductOffers';\nimport dynamicYield from './dynamicYield/dynamicYield';\nimport filter from './filter';\nimport recipes from './recipes';\nimport sustainability from './sustainability';\n\nexport default {\n sustainability,\n filter,\n currentProductOffers,\n recipes,\n dynamicYield,\n};\n","import { sendInteractionEvent } from '../utils';\n\ninterface GaSustainabilityOpenPayload {\n ean: string;\n name: string;\n manufacturer: string;\n price?: number;\n}\n\nconst open = (data: GaSustainabilityOpenPayload) => {\n sendInteractionEvent({\n eventLabel: 'HÃ¥llbarhetsdeklaration - öppna',\n product: {\n id: data.ean,\n name: data.name,\n brand: data.manufacturer,\n price: data.price,\n },\n });\n};\n\nexport default {\n open,\n};\n","import { sendEvent } from '../utils';\n\ninterface FilterGaEvent {\n event: 'filtrering';\n eventCategory: 'Filtrering';\n filterMärkning: string | null;\n filterVarumärke: string | null;\n}\n\nexport type GaFilterEvents = FilterGaEvent;\n\nconst openFlyin = () => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Filtrering',\n eventAction: 'Navigation',\n eventLabel: 'Start - Alla filter',\n });\n};\n\nconst closeFlyin = () => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Filtrering',\n eventAction: 'Navigation',\n eventLabel: 'Start - Stänger filter',\n });\n};\n\nconst clearFilters = (view: string) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Filtrering',\n eventAction: 'Navigation',\n eventLabel: `Rensa filter - ${view}`,\n });\n};\n\nconst applyFilter = (selectedFilters: {\n selectedEnvironmentalLabels?: string[];\n selectedBrands?: string[];\n}) => {\n let hasAnyFiltersSelected = false;\n let markning = null;\n let varumkare = null;\n\n if (selectedFilters.selectedEnvironmentalLabels?.length) {\n const filters: string[] = [];\n hasAnyFiltersSelected = true;\n\n selectedFilters.selectedEnvironmentalLabels?.forEach((f) =>\n filters.push(f.indexOf('onlineEnvironmentalLabels') === -1 ? f : f.split('=')[1]),\n );\n markning = filters.join(',');\n }\n\n if (selectedFilters.selectedBrands?.length) {\n const filters: string[] = [];\n hasAnyFiltersSelected = true;\n\n selectedFilters.selectedBrands?.forEach((f) =>\n filters.push(f.indexOf('brand') === -1 ? f : f.split('=')[1]),\n );\n varumkare = filters.join(',');\n }\n\n const eventPayload: FilterGaEvent = {\n event: 'filtrering',\n eventCategory: 'Filtrering',\n filterMärkning: markning,\n filterVarumärke: varumkare,\n };\n\n if (hasAnyFiltersSelected) {\n sendEvent(eventPayload);\n }\n};\n\nexport default {\n openFlyin,\n closeFlyin,\n applyFilter,\n clearFilters,\n};\n","import { sendInteractionEvent } from '../utils';\n\nconst createSendLoginReminderEvent = (eventLabel: string) => () => {\n sendInteractionEvent({\n eventCategory: 'login',\n eventAction: 'Psst-logga-in-puff',\n eventLabel,\n });\n};\n\nexport default {\n goToLogin: createSendLoginReminderEvent('Logga in'),\n goToCreateAccount: createSendLoginReminderEvent('Skapa inloggning'),\n close: createSendLoginReminderEvent('Stäng'),\n};\n","import loginReminderEvents from './loginReminderEvents';\n\nexport default {\n loginReminder: loginReminderEvents,\n};\n","import { sendEvent } from '../../utils';\n\ntype MatkontoAccountType = 'Matkonto' | 'Matkonto_Credit' | 'Matkonto_Invoice';\n\nconst ACCOUNT_TYPE_TO_TEXT: { [key in MatkontoAccountType]: string } = {\n Matkonto: 'Debet',\n Matkonto_Credit: 'Kredit',\n Matkonto_Invoice: 'Faktura',\n};\n\nconst loginWithBankIdStart = (accountType: MatkontoAccountType) =>\n sendEvent({\n event: 'bankId',\n login: 'bankId',\n loginService: 'Login - matkonto',\n loginAttempt: 'PÃ¥börjad',\n userService: `Matkonto - ${ACCOUNT_TYPE_TO_TEXT[accountType]}`,\n });\n\nconst loginWithBankIdSuccess = (accountType: MatkontoAccountType) =>\n sendEvent({\n event: 'bankId',\n login: 'bankId',\n loginService: 'Login - matkonto',\n loginAttempt: 'Slutförd',\n userService: `Matkonto - ${ACCOUNT_TYPE_TO_TEXT[accountType]}`,\n });\n\nexport default {\n loginWithBankIdStart,\n loginWithBankIdSuccess,\n};\n","import { isB2BMode } from '../../../utils/b2bUtils';\nimport { sendEvent } from '../../utils';\n\nconst getCustomerSegment = () => {\n return isB2BMode() ? 'Företag' : 'Privat';\n};\n\nconst showAllPointsHistory = () =>\n sendEvent({\n event: 'interaction',\n eventCategory: 'Poängtrappan',\n eventAction: 'Poänghistorik',\n customerSegment: getCustomerSegment(),\n });\n\nconst showWithdrawnPointsHistory = () =>\n sendEvent({\n event: 'interaction',\n eventCategory: 'Poängtrappan',\n eventAction: 'Uttagna poäng',\n customerSegment: getCustomerSegment(),\n });\n\nconst togglePositiveTransaction = () =>\n sendEvent({\n event: 'interaction',\n eventCategory: 'Poängtrappan',\n eventAction: 'Utökad flik insamlade poäng',\n customerSegment: getCustomerSegment(),\n });\n\nconst toggleNegativeTransaction = () =>\n sendEvent({\n event: 'interaction',\n eventCategory: 'Poängtrappan',\n eventAction: 'Utökad flik uttagna poäng',\n customerSegment: getCustomerSegment(),\n });\n\nexport default {\n showAllPointsHistory,\n showWithdrawnPointsHistory,\n togglePositiveTransaction,\n toggleNegativeTransaction,\n};\n","import { isB2BMode } from '../../../utils/b2bUtils';\nimport { sendInteractionEvent } from '../../utils';\n\nconst getServiceEventAction = (service: string): string => {\n // AC name - remove when bloomreach is active\n const isStoreNewsletter = service.includes('store_');\n if (isStoreNewsletter) {\n return 'Butikserbjudanden frÃ¥n Coop';\n }\n\n switch (service) {\n case 'cooNewsletter':\n return 'Medlemsutskick frÃ¥n Coop'; // AC name - remove when bloomreach is active\n case 'cooOnline':\n return 'Nyhetsbrev frÃ¥n Coop'; // AC name - remove when bloomreach is active\n case 'cooPartnermail':\n return 'Utskick frÃ¥n Coops medlemsprogram'; // AC name - remove when bloomreach is active\n case 'cooDRDigital':\n return 'Veckans reklamblad'; // AC name - remove when bloomreach is active\n case 'coop_offers':\n return 'Min Coop-butik';\n case 'xtra_offers':\n return 'X:-tra butiker';\n case 'member_association':\n return 'Min konsumentförening';\n case 'membership_program':\n return 'Coops medlemsprogram';\n case 'sms':\n return 'Erbjudanden via SMS';\n case 'other':\n return 'Personliga annonser';\n default:\n return service;\n }\n};\n\nconst subscribe = (service: string) => {\n sendInteractionEvent({\n eventCategory: 'Mina sidor',\n eventAction: getServiceEventAction(service),\n eventLabel: 'PÃ¥',\n });\n};\n\nconst unsubscribe = (service: string) => {\n sendInteractionEvent({\n eventCategory: 'Mina sidor',\n eventAction: getServiceEventAction(service),\n eventLabel: 'Av',\n });\n};\n\nconst subscribeToWeeklyNewsletter = (page: string, storeName?: string) => {\n sendInteractionEvent({\n eventCategory: page,\n eventAction: 'Inskickad E-postadress DR',\n eventLabel: storeName,\n customerSegment: isB2BMode() ? 'Företag' : 'Privat',\n });\n};\n\nexport default {\n subscribe,\n unsubscribe,\n subscribeToWeeklyNewsletter,\n};\n","import matkonto from './matkonto';\nimport myPoints from './myPoints';\nimport myProfile from './myProfile';\n\nexport default {\n matkonto,\n myPoints,\n myProfile,\n};\n","import { AnalyticsHelper } from '../../../../analytics/analyticsHandler';\nimport { DefaultProductSection } from '../../../../models/ecommerce/product/productSectionModel';\nimport type { OrderReclamationProduct } from '../../../myCoop/orderReclamation/models/OrderReclamationProduct';\nimport type { Order } from '../../models/domain/order';\nimport { orderEntryItemEqualsPredicate } from '../../utils/orderUtils';\nimport { sendEvent } from '../utils';\n\nconst ORDER_RECLAMATION_EVENT_CATEGORY = 'Reklamationsflöde';\nconst REFUND_INTERACTION_EVENT = 'refundInteraction';\nconst REFUND_EVENT = 'refund';\n\ntype OrderReclamationRefundType = 'Ã…terbetalning' | 'Tillgodokvitto';\ntype OrderReclamationProductEvent = {\n name: string;\n id: string;\n variantId?: string;\n price?: number;\n brand: string;\n quantity: number;\n category: string;\n refundReason?: string;\n};\n\nconst getStepEventAction = (step: number) => {\n switch (step) {\n case -1:\n return 'Mina beställningar - Reklamation - PÃ¥börjad reklamation';\n case 0:\n return 'Steg 1 - Välj varor att Reklamera';\n case 1:\n return 'Steg 2 - Ange anledning';\n case 2:\n return 'Steg 3 - Välj Kompensation';\n default:\n return 'Mina beställningar - Reklamation - Inskickad reklamation';\n }\n};\n\nconst getNextStepEventAction = (nextStep: number) => {\n switch (nextStep) {\n case 1:\n return 'GÃ¥ vidare till Steg 2 - Ange Anledning';\n case 2:\n return 'GÃ¥ vidare till Steg 3 - Välj kompensation';\n case 3:\n return 'GÃ¥ vidare - Skicka in';\n default:\n return getStepEventAction(nextStep);\n }\n};\n\nconst sendInitEvent = () => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(-1),\n eventLabel: 'Reklamera vara-knapp',\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendGoToStepEvent = (currentStep: number, nextStep: number) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(currentStep),\n eventLabel: getNextStepEventAction(nextStep),\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendSelectCompensationEvent = (refundType: OrderReclamationRefundType) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(2),\n refundType,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendAddReclamationProductEvent = () => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(0),\n eventLabel: 'Lägg till vara',\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendRemoveReclamationProductEvent = (currentStep: number) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(currentStep),\n eventLabel: 'Ta bort vara',\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendSaveReclamationProductEvent = (refundReason: string) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(1),\n eventLabel: 'Bekräfta',\n refundReason,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendCancelReclamationProductEvent = (refundReason?: string) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(1),\n eventLabel: 'Avbryt',\n refundReason,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendCancelOrderReclamationEvent = (eventLabel: string, currentStep: number) => {\n sendEvent({\n event: REFUND_INTERACTION_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(currentStep),\n eventLabel: `Avsluta reklamation - ${eventLabel}`,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst sendOrderReclamationSubmittedEvent = (\n refundType: OrderReclamationRefundType,\n orderReclamationProducts: OrderReclamationProduct[],\n productList: ApiProduct[],\n order: Order,\n) => {\n const products = orderReclamationProducts\n .map((product): OrderReclamationProductEvent | null => {\n const apiProduct = productList.find((pl) => pl.identifier === product.productId);\n\n if (!apiProduct) {\n return null;\n }\n\n const topSection =\n apiProduct && apiProduct.sections && apiProduct.sections[0]\n ? apiProduct.sections[0][0]\n : new DefaultProductSection();\n\n const orderItem = order.entries.find(orderEntryItemEqualsPredicate(product));\n\n return {\n name: apiProduct.name,\n id: product.productId,\n variantId: product.variantId,\n price: orderItem?.totalPrice?.inclTaxPrice,\n brand: apiProduct.manufacturer,\n quantity: product.quantity,\n category: topSection.name,\n refundReason: product.reclamationReason,\n };\n })\n .filter(Boolean);\n\n const totalRefundAmount = orderReclamationProducts.reduce(\n (currentTotal, orderReclamationProduct) => {\n const orderItem = order.entries.find(\n orderEntryItemEqualsPredicate(orderReclamationProduct),\n );\n\n if (orderItem && orderItem.piecePrice) {\n return (\n currentTotal +\n (orderItem.piecePrice.inclTaxPrice || 0) * orderReclamationProduct.quantity\n );\n }\n return currentTotal;\n },\n 0,\n );\n\n sendEvent({\n event: REFUND_EVENT,\n eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n eventAction: getStepEventAction(3),\n ecommerce: {\n refund: {\n products,\n },\n },\n refundType,\n refundAmount: totalRefundAmount,\n storeId: order.pointOfService?.storeId || order.store,\n transactionId: order.code,\n loginStatus: AnalyticsHelper.getLoginStatus(),\n });\n};\n\nconst orderReclamationTracking = {\n init: sendInitEvent,\n cancel: sendCancelOrderReclamationEvent,\n goToStep: sendGoToStepEvent,\n submit: sendSelectCompensationEvent,\n submitFinished: sendOrderReclamationSubmittedEvent,\n product: {\n add: sendAddReclamationProductEvent,\n remove: sendRemoveReclamationProductEvent,\n save: sendSaveReclamationProductEvent,\n cancel: sendCancelReclamationProductEvent,\n },\n};\n\nexport default orderReclamationTracking;\n","import type { LightSearchRecipe, RecipeCategoryFacet } from '../../../search/models/models';\nimport { sendEvent } from '../utils';\nimport { useRecipeFilterTrackingContext } from './RecipeFilterPageTrackingContextProvider';\n\nconst sendRecipeTeaserClick = ({\n recipe,\n recipeComboHit,\n}: {\n recipe: LightSearchRecipe;\n recipeComboHit: string;\n}) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Receptsidor',\n eventAction: 'GÃ¥ till recept',\n eventLabel: recipe.name,\n recipeComboHit,\n });\n};\n\nconst sendRecipeCategoryInteractionClick = ({\n recipeCategoryFacet,\n parentCategoryFacet,\n recipeComboHit,\n}: {\n recipeCategoryFacet: RecipeCategoryFacet;\n parentCategoryFacet: RecipeCategoryFacet;\n recipeComboHit: string;\n}) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Receptsidor',\n eventAction: 'Tillagd kategori',\n recipeComboHit: recipeComboHit || undefined,\n recipeCategory: `${parentCategoryFacet.item}:${recipeCategoryFacet.item}`,\n });\n};\n\nconst sendRecipeNonInteractionEvent = ({\n recipeComboHit,\n recipeHits,\n}: {\n recipeComboHit: string;\n recipeHits: number | null;\n}) => {\n sendEvent({\n event: 'nonInteraction',\n eventCategory: 'Dimensioner',\n eventAction: 'Klar',\n recipeCombo: recipeComboHit || undefined,\n recipeHits: recipeHits && recipeHits > 0 ? recipeHits : undefined,\n });\n};\n\nconst useRecipeFilterPageTracking = () => {\n const { recipeComboHit } = useRecipeFilterTrackingContext();\n\n if (recipeComboHit === null) {\n return null;\n }\n\n return {\n nonInteractionEvent: (data: { recipeHits: number | null }) =>\n sendRecipeNonInteractionEvent({ ...data, recipeComboHit }),\n\n categoryLinkClick: (\n recipeCategoryFacet: RecipeCategoryFacet,\n parentCategoryFacet: RecipeCategoryFacet,\n ) =>\n sendRecipeCategoryInteractionClick({\n recipeCategoryFacet,\n parentCategoryFacet,\n recipeComboHit,\n }),\n\n recipeTeaserClick: (recipe: LightSearchRecipe) =>\n sendRecipeTeaserClick({ recipe, recipeComboHit }),\n };\n};\n\nexport default {\n useFilterPageTracking: useRecipeFilterPageTracking,\n};\n","import { ga4PromotionTracking } from '../ga4/promotion';\nimport type { IGaPromoData } from '../models/IGaPromoData';\nimport { getLoginStatus, sendEvent } from '../utils';\n\nconst sendGaGlobalSearchPageNavigationEvent = (formattedSearchResultType: string) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Globalt Sök',\n eventAction: 'Navigering',\n eventLabel: formattedSearchResultType,\n loginStatus: getLoginStatus(),\n });\n};\n\nconst sendGaGlobalSearchOverlayNavigationEvent = (formattedSearchResultType: string) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Globalt Sök dropdown',\n eventAction: 'Navigering',\n eventLabel: formattedSearchResultType,\n loginStatus: getLoginStatus(),\n });\n};\n\nconst sendGaGlobalSearchPagePromoImpressionEvent = (\n items: { name: string }[],\n formattedSearchResultType: string,\n) => {\n items\n .map<IGaPromoData>((item, index) => ({\n gaPromoId: 'Intern',\n gaPromoName: `globalt-sök_${formattedSearchResultType}`,\n gaPromoCreative: item.name,\n gaPromoPosition: index.toString(),\n }))\n .forEach((promotion) => {\n ga4PromotionTracking.viewPromotion(promotion);\n });\n};\n\nconst sendGaGlobalSearchOverlayPromoImpressionEvent = (\n items: { name: string }[],\n formattedSearchResultType: string,\n) => {\n items\n .map<IGaPromoData>((item, index) => ({\n gaPromoId: 'Intern',\n gaPromoName: `globalt-sök_${formattedSearchResultType} dropdown`,\n gaPromoCreative: item.name,\n gaPromoPosition: index.toString(),\n }))\n .forEach((promotion) => {\n ga4PromotionTracking.viewPromotion(promotion);\n });\n};\n\nconst sendGaSearchResultClick = (\n name: string,\n position: number,\n formattedSearchResultType?: string,\n) => {\n const promotion: IGaPromoData = {\n gaPromoId: 'Intern',\n gaPromoName: `globalt-sök_${formattedSearchResultType}`,\n gaPromoCreative: name,\n gaPromoPosition: position.toString(),\n };\n\n ga4PromotionTracking.selectPromotion(promotion);\n};\nconst sendGaSearchResultOverlayClick = (\n name: string,\n position: number,\n formattedSearchResultType?: string,\n) => {\n const promotion: IGaPromoData = {\n gaPromoId: 'Intern',\n gaPromoName: `globalt-sök_${formattedSearchResultType} dropdown`,\n gaPromoCreative: name,\n gaPromoPosition: position.toString(),\n };\n\n ga4PromotionTracking.selectPromotion(promotion);\n};\n\nconst searchTracking = {\n resultsPage: {\n navigation: sendGaGlobalSearchPageNavigationEvent,\n promoImpression: sendGaGlobalSearchPagePromoImpressionEvent,\n resultClick: sendGaSearchResultClick,\n },\n overlay: {\n navigation: sendGaGlobalSearchOverlayNavigationEvent,\n promoImpression: sendGaGlobalSearchOverlayPromoImpressionEvent,\n resultClick: sendGaSearchResultOverlayClick,\n },\n};\n\nexport default searchTracking;\n","import AbTestTracking from './abtest/abTestEvent';\nimport checkoutTracking from './checkout/checkoutEvents';\nimport cncTracking from './cnc/cncEvents';\nimport commonTracking from './common/commonEvents';\nimport timeslotTracking from './contextAware/timeslotEvents';\nimport ecommerce from './ecommerce/ecommerceEvents';\nimport headerEvents from './header/headerEvents';\nimport myCoop from './myCoop';\nimport orderReclamationTracking from './orderReclamation/orderReclamationEvents';\nimport recipe from './recipe/recipeEvents';\nimport searchTracking from './search/searchEvents';\n\nconst gaTracking = {\n abTest: AbTestTracking,\n common: commonTracking,\n header: headerEvents,\n cnc: cncTracking,\n checkout: checkoutTracking,\n contextAware: {\n timeslots: timeslotTracking,\n },\n orderReclamation: orderReclamationTracking,\n search: searchTracking,\n myCoop,\n ecommerce,\n recipe,\n};\n\nexport default gaTracking;\n","/**\n * A file intended to decouple tracking from the massive analyticsHandler.ts file\n *\n * Should contain simple functions that's easy to customize instead of strict events\n *\n * Furthermore, in analyticsHandler.ts a lot of CustomEvents where created, here we just push it\n * directly in the dataLayer - tracking team has accepted this - if in the future they change their mind\n * I recommend just sending a simple CustomEvent after push\n *\n */\nimport { appConfig } from '../../../appConfig';\nimport type { GaEvents } from './trackingTypes';\n\nexport type GaLoginStatus = 'Inloggad medlem' | 'Inloggad ej medlem' | 'Utloggad';\n\nexport const getLoginStatus = (): GaLoginStatus | undefined => {\n const isMember = appConfig.coopUserSettings.isMedmeraCustomer;\n const isLoggedIn = appConfig.coopUserSettings.isAuthenticated;\n\n if (isMember && isLoggedIn) {\n return 'Inloggad medlem';\n }\n\n if (isLoggedIn) {\n return 'Inloggad ej medlem';\n }\n\n if (isLoggedIn === false) {\n return 'Utloggad';\n }\n\n return undefined;\n};\n\n/**\n * Tracking want to combine some parameters sent as a \"event key\"\n */\nexport const getGa4EventKey = (parametersToCombine: string[]) => {\n return parametersToCombine\n .filter(Boolean)\n .map((str) => str?.split?.(' ')?.join?.('_')) // use replaceAll instead when possible\n .join('_')\n .toLowerCase();\n};\n\n/**\n * Use case 1:\n * sendEvent({ event: 'interaction' })\n *\n * Use case 2:\n * interface SomeEvent extends GaEvent { ..\n * sendInteractionEvent<SomeEvent>({ ... })\n *\n * @param eventData Event data\n */\nexport const sendEvent = <T extends GaEvents>(eventData: T) => {\n setTimeout(() => {\n const gaEvent: T = {\n ...eventData,\n loginStatus: getLoginStatus(),\n };\n\n const analyticsData = JSON.parse(JSON.stringify(gaEvent));\n window.dataLayer.push({ ecommerce: null });\n window.dataLayer.push(analyticsData);\n }, 0);\n};\n\n/**\n * Use case 1:\n * sendInteractionEvent({ someAttribute: 'someAttribute' })\n *\n * Use case 2:\n * interface SomeEvent { ... }\n * sendInteractionEvent<SomeEvent>({ ... })\n */\nexport const sendInteractionEvent = <T extends {}>(eventData: T) => {\n sendEvent({\n event: 'interaction',\n eventCategory: 'Ecommerce',\n ...eventData,\n });\n};\n","import _ from 'underscore';\n\nexport const createBatcher = <T>(\n callback: (batchToSend: T[]) => void,\n batchDebounceTime: number = 200,\n) => {\n let currentBatch: T[] = [];\n\n const sendDebounced = _.debounce(() => {\n if (!currentBatch.length) return;\n callback(currentBatch);\n currentBatch = [];\n }, batchDebounceTime);\n\n return (itemToBatch: T) => {\n currentBatch.push(itemToBatch);\n sendDebounced();\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const failSilently =\n <CallbackFunction extends (...args: any[]) => any>(\n callback: CallbackFunction,\n callbackWhenError?: () => void,\n ) =>\n (...params: Parameters<CallbackFunction>) => {\n try {\n return callback(...params) as ReturnType<CallbackFunction>;\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error('Silent fail: ', ex);\n callbackWhenError?.();\n }\n };\n","export const sendSplittedData = <T>(\n data: T[],\n maxCountPerSplit: number,\n sendEventFunction: (splittedData: T[]) => void,\n) => {\n setTimeout(() => {\n if (!data?.length) return;\n\n let dataSplitted: T[];\n\n do {\n dataSplitted = data.splice(0, maxCountPerSplit);\n if (dataSplitted && dataSplitted.length > 0) {\n sendEventFunction(dataSplitted);\n }\n } while (dataSplitted.length > 0);\n }, 0);\n};\n","import { trimEnd } from '../utils/stringUtils';\nimport { ensureTrailingSlash } from '../utils/urlUtils';\nimport { sendEvent } from './utils';\n\ninterface GaVirtualPageData {\n pathName: string;\n pageTitle: string;\n pageType?: string;\n queryString?: string;\n}\n\nexport const sendGaVirtualPageView = (data: GaVirtualPageData) => {\n const { pathName } = data;\n if (!pathName) {\n return;\n }\n\n let virtualPageURL = window.location.origin + pathName;\n if (data.queryString) {\n virtualPageURL = `${trimEnd(virtualPageURL, '/')}${data.queryString}`;\n } else {\n virtualPageURL = ensureTrailingSlash(virtualPageURL);\n }\n\n sendEvent({\n event: 'virtualPageView',\n virtualPageURL,\n virtualPageTitle: data.pageTitle,\n pageType: data.pageType,\n });\n};\n","import { appConfig } from '../../../appConfig';\nimport { safeSplit } from './stringUtils';\n\nexport const isAriaCurrentPage = (pathToMatch: string, currentPagePath: string) => {\n const b2bStartPageSegment = appConfig.coopSettings.b2b.startPage?.segmentUrl;\n\n const currentSegments = safeSplit(currentPagePath, '/', { removeEmptyEntries: true });\n const segmentsToMatch = safeSplit(pathToMatch, '/', { removeEmptyEntries: true });\n\n // means we check against b2c startpage itself, need to check if we are on b2b startpage\n if (\n segmentsToMatch.length === 0 &&\n b2bStartPageSegment &&\n currentSegments.includes(b2bStartPageSegment)\n ) {\n return false;\n }\n\n for (let i = 0; i < currentSegments.length; i += 1) {\n if (currentSegments[i] === segmentsToMatch[i]) {\n currentSegments.splice(i, 1);\n segmentsToMatch.splice(i, 1);\n i -= 1; // we need to check the same index again, as we removed the element\n }\n }\n\n if (currentSegments.length === 0 && segmentsToMatch.length === 0) {\n return 'page';\n }\n\n // we exhausted all segments to match, but there are still some on current path. This is partial match.\n if (currentSegments.length > 0 && segmentsToMatch.length === 0) {\n return true;\n }\n\n return false;\n};\n","import { useLocation } from 'react-router-dom';\n\nimport { appConfig } from '../../../appConfig';\nimport { Cookies } from '../../../utility/cookies';\nimport { BUSINESS_TOGGLE_COOKIE } from '../persistance/cookie/cookieKeys';\nimport { trimSlashes } from './stringUtils';\n\nexport const B2B_SEGMENT = appConfig.coopSettings.b2b.startPage\n ? trimSlashes(appConfig.coopSettings.b2b.startPage.url)\n : 'notsetup';\n\nexport const isB2BMode = () => {\n if (appConfig.coopSettings.featureFlags.enableB2B) {\n return isB2BWindowLocation();\n }\n\n return Cookies.read(BUSINESS_TOGGLE_COOKIE);\n};\n\nconst getIsRouteB2B = (pathName: string) => {\n const firstSegmentsOfB2Broutes = appConfig.coopSettings.b2b.b2bRoutes\n ?.map(trimSlashes)\n .map((segments) => segments.split('/')[0]);\n\n const currentPathnameFirstSegment = trimSlashes(pathName).split('/')[0];\n\n // check only first segments of the urls to automatically include all their child pages\n const isB2BRoute = firstSegmentsOfB2Broutes.some(\n (item) => item.toLowerCase() === currentPathnameFirstSegment.toLowerCase(),\n );\n return isB2BRoute;\n};\n\nexport const isB2BWindowLocation = () => {\n return getIsRouteB2B(window.location.pathname);\n};\n\nexport const useIsB2BRoute = () => {\n const isWindowB2BRoute = isB2BWindowLocation();\n const isRouterB2BRoute = getIsRouteB2B(useLocation().pathname);\n\n return isWindowB2BRoute || isRouterB2BRoute;\n};\n\n/**\n * Cross-context means that a user is on a site that is not intended for their user type.\n * So a private user on the company site or a company user on the private site.\n */\nexport const isInB2BCrossContext = ({\n isB2BRoute,\n isUserCompany: isCompany,\n isAuthenticated,\n}: {\n isB2BRoute: boolean;\n // if the user is a company user\n isUserCompany: boolean;\n // if the user is authenticated\n isAuthenticated: boolean;\n}) => {\n const privateUserOnCompanySite =\n appConfig.coopSettings.featureFlags.enableB2B &&\n isAuthenticated &&\n !isCompany &&\n isB2BRoute;\n\n const companyUserOnPrivateSite =\n appConfig.coopSettings.featureFlags.enableB2B &&\n isAuthenticated &&\n isCompany &&\n !isB2BRoute;\n\n return {\n privateUserOnCompanySite,\n companyUserOnPrivateSite,\n };\n};\n","import { Cloudinary } from '../../../utility/cloudinary';\n\n// Cloudinary url api:\n// http://cloudinary.com/documentation/image_transformations#reference\n\nexport const getCloudinaryUrl = (\n url: string,\n transform: string,\n fallbackUrl?: string,\n fileExtenson?: string,\n retinaTransform?: string,\n altText?: string,\n) => {\n if (!url) {\n return getFallbackImgUrl(fallbackUrl);\n }\n return getTransformedImageUrl(url, transform, fileExtenson, retinaTransform, altText);\n};\n\nexport const getFallbackImgUrl = (fallbackUrl?: string) => {\n const missingImageUrl = '/Assets/Images/missing-image.png';\n const src = fallbackUrl || missingImageUrl;\n\n return src;\n};\n\nexport const getTransformedImageUrl = (\n url: string,\n transform: string,\n fileExtenson?: string,\n retinaTransform?: string,\n altText?: string,\n) => {\n const sanitizedUrl = Cloudinary.sanitize(url, fileExtenson); // //res.cloudinary.com/coopsverige/image/upload/v1442921161/52045.jpg\n let imagePath = Cloudinary.imagePath(sanitizedUrl); // //res.cloudinary.com/coopsverige/image/upload/\n let imageIdentifier = Cloudinary.imageIdentifier(sanitizedUrl); // /v1442921161/52045.jpg\n\n if (!imageIdentifier) {\n return sanitizedUrl;\n }\n\n // Make more SEO friendly\n if (altText) {\n if (imagePath) {\n imagePath = Cloudinary.makeImagePathSeoFriendly(imagePath);\n }\n\n imageIdentifier = Cloudinary.makeImageIdentifierSeoFriendly(imageIdentifier, altText);\n }\n\n const transformedUrl = retinaTransform\n ? `${imagePath}${retinaTransform}/${removeStartingSlash(imageIdentifier)} 2x`\n : `${imagePath}${transform}/${removeStartingSlash(imageIdentifier)}`;\n\n return transformedUrl;\n};\n\nconst removeStartingSlash = (str: string) => {\n if (!str) {\n return str;\n }\n\n if (str[0] === '/') {\n return str.slice(1);\n }\n\n return str;\n};\n","import { appConfig } from '../../../appConfig';\nimport { isB2BMode } from './b2bUtils';\n\nconst allCustomerGroups = ['CUSTOMER_PRIVATE', 'CUSTOMER_COMPANY', 'CUSTOMER_MEDMERA'] as const;\nexport type CustomerGroup = (typeof allCustomerGroups)[number];\n\nexport const isCustomerGroupSupported = (customerGroup: string): customerGroup is CustomerGroup => {\n return allCustomerGroups.includes(customerGroup as CustomerGroup);\n};\n\nexport const getAnonymousCustomerGroups = () => {\n const customerGroups: CustomerGroup[] = [];\n\n if (appConfig.coopUserSettings.isCompany || isB2BMode()) {\n customerGroups.push('CUSTOMER_COMPANY');\n } else {\n customerGroups.push('CUSTOMER_PRIVATE');\n }\n\n return customerGroups;\n};\n","import { addQueryParamsToUrl } from './urlUtils';\n\nexport const getRobotsContent = (noIndex?: boolean, noFollow?: boolean) => {\n if (noIndex && noFollow) {\n return 'NOINDEX,NOFOLLOW';\n }\n\n if (noIndex) {\n return 'NOINDEX';\n }\n\n if (noFollow) {\n return 'NOFOLLOW';\n }\n\n return undefined;\n};\n\nexport const getCanonical = ({ path, page }: { path: string; page?: number }) => {\n const url = new URL(path, window.location.origin).toString();\n\n return Number.isInteger(page) && page !== 1\n ? addQueryParamsToUrl(url, { page: String(page) })\n : url;\n};\n\nexport const getNextPage = (currentPage: number) => {\n const searchParams = new URLSearchParams();\n searchParams.set('page', (currentPage + 1).toString());\n\n const newUrl = `${\n window.location.origin + window.location.pathname\n }?${searchParams.toString()}`;\n\n return newUrl;\n};\n\nexport const getPrevPage = (currentPage: number) => {\n const searchParams = new URLSearchParams();\n const prevPage = currentPage - 1;\n if (prevPage > 1) {\n searchParams.set('page', prevPage.toString());\n } else {\n searchParams.delete('page');\n }\n const stringifiedParams = searchParams.toString();\n\n const newUrl =\n window.location.origin +\n window.location.pathname +\n (stringifiedParams ? `?${searchParams.toString()}` : '');\n\n return newUrl;\n};\n","import { appConfig } from '../../../appConfig';\nimport { Helpers } from '../../../utility/helpers';\n\nconst NEOID_HEADER = 'neoId';\nconst SESSION_STORAGE_NEO_IDENTITY = 'user.identity.neo';\n/**\n * This will return neoId if it exists as a query parameter.\n * If user is not authenticated, it will store neoId to session storage.\n * If user doesn't have it in query parameter and is still not authenticated it will return neoId from session storage.\n */\nexport const getNeoId = () => {\n const neoId = Helpers.getParameterByName(NEOID_HEADER);\n\n if (!appConfig.coopUserSettings.isAuthenticated) {\n if (neoId) {\n window.sessionStorage.setItem(SESSION_STORAGE_NEO_IDENTITY, neoId);\n } else {\n const storedNeoId = window.sessionStorage.getItem(SESSION_STORAGE_NEO_IDENTITY);\n return storedNeoId ?? undefined;\n }\n }\n\n return neoId;\n};\n","/* eslint-disable no-restricted-globals */\n\nexport const isNumeric = (n: unknown): n is number => {\n return typeof n === 'number';\n};\n\nexport const isNumber = (n: string) => {\n const num = parseFloat(n);\n return !isNaN(num) && isFinite(num);\n};\n","import { Helpers } from '../../../utility/helpers';\nimport type { OrderEntry } from '../models/domain/order';\n\nexport const orderEntryEqualsPredicate =\n (orderEntry: OrderEntry) => (productId: string, variantId?: string) => {\n return (\n orderEntry.product.code === productId &&\n (!variantId || orderEntry.variance?.code === variantId)\n );\n };\n\nexport const orderEntryItemEqualsPredicate =\n <TItem extends { productId: string; variantId?: string }>(item: TItem) =>\n (orderEntry: OrderEntry) => {\n return orderEntryEqualsPredicate(orderEntry)(item.productId, item.variantId);\n };\n\nexport const convertToFriendlyDateString = (\n date?: Date,\n lowerCase = false,\n comma = false,\n allowYesterday = false,\n) => {\n if (!date) return '';\n\n const weekdays = ['Söndag', 'MÃ¥ndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'lördag'];\n const months = [\n 'jan',\n 'feb',\n 'mar',\n 'apr',\n 'maj',\n 'jun',\n 'jul',\n 'aug',\n 'sep',\n 'okt',\n 'nov',\n 'dec',\n ];\n\n const day = date.getDate();\n const weekday = weekdays[date.getDay()];\n const month = months[date.getMonth()];\n\n const today: boolean = Helpers.dateIsToday(date);\n const tommorow: boolean = Helpers.dateIsTomorrow(date);\n const yesterday: boolean = Helpers.dateIsYesterday(date);\n\n if (today) {\n return lowerCase ? 'idag' : 'Idag';\n }\n\n if (tommorow) {\n return lowerCase ? 'imorgon' : 'Imorgon';\n }\n\n if (yesterday && allowYesterday) {\n return lowerCase ? 'igÃ¥r' : 'IgÃ¥r';\n }\n\n return lowerCase\n ? `${weekday.toLowerCase()}${comma ? ',' : ''} ${day} ${month}`\n : `${weekday}, ${day} ${month}`;\n};\n\nexport const convertTimeWindowToFriendlyString = (window: {\n startTime?: Date;\n endTime?: Date;\n}): string => {\n const start = window.startTime;\n const end = window.endTime;\n\n let startTime = '';\n\n if (start) {\n const sHours = start !== null ? start.getHours().toString().padStart(2, '0') : '00';\n const sMins = start !== null ? start.getMinutes().toString().padStart(2, '0') : '00';\n\n startTime = `${sHours}.${sMins}`;\n }\n\n let endTime = '';\n\n if (end) {\n const eHours = end !== null ? end.getHours().toString().padStart(2, '0') : '00';\n const eMins = end !== null ? end.getMinutes().toString().padStart(2, '0') : '00';\n\n endTime = `${eHours}.${eMins}`;\n }\n\n return startTime && endTime ? `${startTime}–${endTime}` : '';\n};\n\nexport const orderTimelineStepAccessibleName = (\n item: { accessibleTitle?: string; description?: string; title: string; checked: boolean },\n isActive: boolean,\n orderStatus: OrderStatus,\n) => {\n const title = item.accessibleTitle || item.title;\n\n if (isActive) {\n return `${title} - PÃ¥gÃ¥r. ${item.description || ''}`;\n }\n if (item.checked) {\n return `${title} - ${orderStatus === 'picked' ? 'Klart' : 'Klar'}. ${\n item.description || ''\n }`;\n }\n\n return `${title}. ${item.description || ''}`;\n};\n","import { appConfig } from '../../../appConfig';\nimport { DefaultProductSection } from '../../../models/ecommerce/product/productSectionModel';\nimport { Helpers } from '../../../utility/helpers';\nimport type { ProductBadgeProps, ProductProps } from '../models/props/itemTeaserProps';\n\nexport const isAttributeEko = (identifier: string) => {\n return identifier === 'EKO_SV' || identifier === 'EKO';\n};\nexport const isAttributeExcluded = (identiier: string) => {\n return appConfig.coopSettings.ecommerce?.hiddenProductLabelsIds?.includes(identiier);\n};\n\nexport const isAttributeNicotine = (identifier: string) => {\n return identifier?.toLowerCase() === 'nikotinlakemedel';\n};\n\nexport const isAttributeAgeRestriction = (identifier: string) => {\n return identifier?.toLowerCase() === '18' || identifier?.toLowerCase() === '18arlakemedel';\n};\n\nexport const getAgeRestrictionBadge = (\n product: ApiProduct | undefined,\n): ProductBadgeProps | undefined => {\n const ageRestrictionAttribute = product?.details?.attributes.find((attr) =>\n isAttributeAgeRestriction(attr.identifier),\n );\n\n if (ageRestrictionAttribute) {\n return {\n alt: ageRestrictionAttribute.name,\n url: ageRestrictionAttribute.image?.url,\n };\n }\n\n return undefined;\n};\n\nexport const filterProductAttributes = (attributes: ApiProductAttribute[]) => {\n const isKrav = (identifier: string) =>\n identifier === 'KRAV0U0MARK' || identifier === 'KRAV_MARK';\n const isEuOrganic = (identifier: string) =>\n identifier === 'EU0U0ORGANIC0U0FARMING' || identifier === 'EU_ORGANIC_FARMING';\n\n let filteredAttributes = [...attributes];\n\n // If both KRAV and EKO is on product, only KRAV should be shown.\n if (filteredAttributes.some((attribute) => isKrav(attribute.identifier))) {\n filteredAttributes = filteredAttributes.filter(\n (attribute) =>\n !isAttributeEko(attribute.identifier) && !isEuOrganic(attribute.identifier),\n );\n }\n\n // If both EKO and Ekologiskt is on product, only EKO should be shown.\n if (filteredAttributes.some((attribute) => isAttributeEko(attribute.identifier))) {\n filteredAttributes = filteredAttributes.filter(\n (attribute) => !isEuOrganic(attribute.identifier),\n );\n }\n\n filteredAttributes = filteredAttributes.filter((item) => !isAttributeExcluded(item.identifier));\n\n return attributes;\n};\n\nexport const getTopProductSection = (product: ApiProduct): ApiProductSection => {\n if (!product) return new DefaultProductSection();\n if (!product.sections || !product.sections.length) {\n return new DefaultProductSection();\n }\n return product.sections[0][0];\n};\n\nexport const mapProductToEcomPromotion = (product?: ApiProduct): EcomPromotion | undefined => {\n if (product && product.promos && product.promos.length > 0) {\n const { promos } = product;\n // Assortment API sort this by priority desc and picks the first one, so highest priority wins\n // They use that high prio promo to populate promotionPriceData on product\n const promoHighestPriority = promos\n .slice()\n .sort((a, b) => (b.priority || 0) - (a.priority || 0))[0];\n\n if (promoHighestPriority) {\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { priority, ...rest } = promoHighestPriority;\n return rest;\n }\n }\n\n return undefined;\n};\n\nexport const mapProductToProps = (product: ApiProduct): ProductProps => {\n const promotion = mapProductToEcomPromotion(product);\n\n const productData: ProductProps = {\n identifier: product.identifier,\n eanCode: product.ean,\n imageUrl: product.image ? product.image.url : undefined,\n name: product.name,\n url: product.url,\n attributeLabels: product.details?.attributes || [],\n healthattributeLabels: product.details?.healthAttributes || [],\n healthSafetySignalWordsCode: product.details?.healthSafetySignalWordsCode || [],\n healthSafetyPrecautionaryStatementText:\n product.details?.healthSafetyPrecautionaryStatementText || [],\n healthSafetySignalStatementText: product.details?.healthSafetySignalStatementText || [],\n promotion,\n comparativePriceData: product.comparativePriceData,\n comparativeText: product.comparativeText,\n fromSweden: product.details?.fromSweden || false,\n manufacturer: product.manufacturer,\n variants: product.variants,\n consumerInformationText: product.details?.consumerInformationText,\n packageSizeInformation: product.details?.size?.packageSizeInformation,\n priceData: product.priceData,\n promotionPriceData: product.promotionPriceData,\n recycleFeeData: product.details?.recycleFeeData,\n declarationOfOrigin: product.details?.declarationOfOrigin,\n countriesOfOrigin: product.details?.countryOfOriginCodes,\n description: product.details?.description,\n nutrientInformation: product.details?.nutrientInformation,\n nutritionFacts: product.details?.nutritionFacts,\n listOfIngredients: product.details?.content,\n listOfNonFoodIngredients: product.details?.nonFoodIngredientStatement,\n maxStorageTemperature: product.details?.maximumStorageTemperature,\n catchData: product.details?.catchData,\n storageState: product.details?.storageStateCode,\n isMagazine: product.isMagazine,\n isNicotineProduct: product.details?.isNicotineProduct,\n isPharmaceutical: product.details?.pharmaceuticalData?.isPharmaceutical,\n historicalPriceData: product.historicalPriceData,\n compulsoryAdditiveLabel: product.compulsoryAdditiveLabelInformation,\n consumerInstructions: product.consumerInstructions,\n replacementCountries: product.replacementCountries,\n originCountry: product.originCountry,\n variety: product.variety,\n class: product.class,\n preparationInstructionsList: product.preparationInstructionsList,\n sustainabilityInfo: product.details?.sustainabilityInfo?.productScore,\n regulatedArticleDescription: product.regulatedArticleDescription,\n sustainabilityInfoApplicable: product.details?.sustainabilityInfoApplicable,\n regulatedProductName: product.regulatedProductName,\n animalFoodData: product.animalFoodData,\n };\n\n return productData;\n};\n\nexport const isProductObjectsEqualPredicate =\n (product1: { productId: string; variantId?: string }) =>\n (product2: { productId: string; variantId?: string }) => {\n return isProductEqualPredicate(product1.productId, product1.variantId)(\n product2.productId,\n product2.variantId,\n );\n };\n\nexport const isProductEqualPredicate =\n (product1Id: string, variant1Id?: string) => (product2Id: string, variant2Id?: string) => {\n return (\n product1Id === product2Id && (variant1Id === variant2Id || (!variant1Id && !variant2Id))\n );\n };\n\nexport const getFormattedPackagingInfo = (\n variantName?: string,\n packageSizeInformation?: string,\n) => {\n const formatted =\n (variantName && `${variantName} `) ||\n (packageSizeInformation && `${packageSizeInformation}`) ||\n undefined;\n\n return formatted;\n};\n\nexport const getFormattedComparativePrice = (\n comparativePrice?: number,\n comparativeText?: string,\n) => {\n const formatted =\n (comparativePrice &&\n comparativeText &&\n `Jfr-pris: ${Helpers.toEcommercePrice(comparativePrice)} ${comparativeText}`) ||\n null;\n\n return formatted;\n};\n","import { appConfig } from '../../../appConfig';\nimport type {\n ApiRecipe,\n ApiRecipeComment,\n ApiRecipeIngredient,\n ApiRecipePart,\n} from '../../../models/recipe/recipeModel';\nimport { Helpers } from '../../../utility/helpers';\nimport type {\n CookingInstructions,\n ImageSticker,\n Ingredient,\n RecipeCategory,\n RecipeComment,\n RecipePart,\n RecipeProps,\n} from '../../recipe/models';\nimport type { ApiGastrofyRecipe } from '../api/gastrofy/responses/gastrofyResponses';\n\nexport const isNortforkRecipeFoodBox = (recipe: ApiGastrofyRecipe) => {\n if (!recipe.tags) {\n return false;\n }\n\n const foodBagTagId = appConfig.coopSettings.recipe.foodBoxTagId;\n\n if (!foodBagTagId) {\n return false;\n }\n\n return recipe.tags.some((gt) => gt.id === foodBagTagId);\n};\n\nconst getStickerUrl = (keyword?: string, imageStickers?: ImageSticker[]) => {\n if (!keyword) return undefined;\n if (!imageStickers) return undefined;\n\n const sticker = imageStickers\n .filter((_sticker) => !!_sticker.keyword)\n .find(\n (_sticker) => _sticker.keyword.trim().toLowerCase() === keyword.trim().toLowerCase(),\n )?.imageUrl;\n\n return sticker;\n};\n\nexport const mapToIngredientProps = (ingredients: ApiRecipeIngredient[]) => {\n const ingredientProps = ingredients.map<Ingredient>((ingredient) => {\n const displayName = ingredient.usePlural\n ? ingredient.ingredient.pluralName\n : ingredient.ingredient.singularName;\n const { sequenceNumber } = ingredient;\n let friendlyText = `${ingredient.prePreparation || ''} ${displayName} ${\n ingredient.postPreparation || ''\n }`.trim();\n\n friendlyText = friendlyText.replace(/\\s+(?=[,.])/g, '');\n\n let quantityFromattedText: string | null = null;\n const parsedQuantity = parseFloat(ingredient.quantity);\n if (!Number.isNaN(parsedQuantity) && parsedQuantity > 0) {\n quantityFromattedText = Helpers.formatNumber(\n parseFloat(ingredient.quantity).toString(),\n undefined,\n ',',\n );\n }\n\n // if halv of something, show 1/2 instead of 0.5. (0,5 = 1/2, 1,5 = 1 1/2)\n if (parsedQuantity % 1 === 0.5) {\n quantityFromattedText = `${parsedQuantity >= 1 ? `${parsedQuantity - 0.5} ` : ''} 1/2`;\n }\n\n return {\n friendlyText,\n formattedQuantity: quantityFromattedText || '',\n unit: ingredient.unit,\n sequenceNumber,\n };\n });\n\n return ingredientProps;\n};\n\nconst mapToRecipePartProps = (recipeParts: ApiRecipePart[]) => {\n const recipePartProps = recipeParts.map<RecipePart>((recipePart) => ({\n name: recipePart.name,\n ingredients: mapToIngredientProps(recipePart.ingredients),\n }));\n return recipePartProps;\n};\n\nexport const mapToRecipeCookingInstructions = (recipeCookingInstructions: string) => {\n const regexTitleStart = /<h3>/g;\n const regexAllTags = /(<([^>]+)>)/gi;\n const cookingInstructions: CookingInstructions[] = [];\n\n if (recipeCookingInstructions) {\n const instructions = recipeCookingInstructions.split(regexTitleStart);\n let instructionTitle = '';\n let instruction = '';\n\n instructions.forEach((value, index) => {\n const regexTitleEnd = /<\\/h3>/g; // this needs to be inside foreach to work for all items.\n if (regexTitleEnd.test(value)) {\n const titleAndInstruction = value.split(regexTitleEnd);\n instructionTitle = titleAndInstruction[0].replace(regexAllTags, '');\n instruction = titleAndInstruction[1].replace(regexAllTags, '');\n cookingInstructions.push({ title: instructionTitle, instructions: [instruction] });\n } else {\n instruction = value.replace(regexAllTags, '');\n\n // If first is missing title\n if (index === 0) {\n cookingInstructions.push({\n title: instructionTitle,\n instructions: instruction ? [instruction] : [],\n });\n } else {\n cookingInstructions[cookingInstructions.length - 1].instructions.push(\n instruction,\n );\n }\n }\n });\n }\n\n return cookingInstructions;\n};\n\ntype RecipeMainCategoryNames =\n | 'Typ av rätt'\n | 'MÃ¥ltid'\n | 'Ingrediens'\n | 'Tillagningssätt'\n | 'Tillfälle'\n | 'Världens mat'\n | 'Specialkost';\n\nexport const getRecipeSubCategories = (\n categoryName: RecipeMainCategoryNames,\n recipeCategories: RecipeCategory[],\n) => {\n const categories =\n recipeCategories?.filter(\n (recipeCategory) =>\n !!recipeCategory.categories?.length &&\n recipeCategory.categories[0] === categoryName,\n ) || [];\n\n return categories;\n};\n\nexport const getRecipeSubCategoryNames = (\n categoryName: RecipeMainCategoryNames,\n categories: RecipeCategory[],\n) => {\n const recipeSubCategories = getRecipeSubCategories(categoryName, categories);\n const subCategoryNames = recipeSubCategories.map((x) => x.categories[x.categories.length - 1]);\n\n return subCategoryNames;\n};\n\nconst getMinutesFromTimeParts = (timeDigit?: string, timeUnit?: string) => {\n const digit = timeDigit ? parseFloat(timeDigit.replace(',', '.')) : NaN;\n let timeInMinutes = 0;\n\n if (!Number.isNaN(digit) && timeUnit) {\n const unit = timeUnit.toLowerCase();\n\n if (unit.startsWith('min')) {\n timeInMinutes = digit;\n }\n\n if (unit.startsWith('tim')) {\n timeInMinutes = digit * 60; // timeDigit is an hour.\n }\n\n if (unit.startsWith('dag') || unit.startsWith('dygn')) {\n timeInMinutes = digit * 60 * 24; // timeDigit is an day.\n }\n\n if (unit.startsWith('veck')) {\n timeInMinutes = digit * 60 * 24 * 7; // timeDigit is an week.\n }\n }\n\n return timeInMinutes;\n};\n\nexport const getCookingTimeInMinutes = (cookingTime: string) => {\n const cookingOneTimeRegex =\n /^(?<time>[\\d.,]+)\\s?(?<unit>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)(\\s?\\+.*)?$/;\n\n const cookingTwoTimeRegExp =\n /^(?<time>[\\d.,]+)\\s?(?<unit>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)([\\s+]|och)*(?<time2>[\\d.,]+)\\s?(?<unit2>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)(\\s?\\+.*)?$/;\n\n const cookingThreeTimeRegExp =\n /^(?<time>[\\d.,]+)\\s?(?<unit>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)([\\s+]|och)*(?<time2>[\\d.,]+)\\s?(?<unit2>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)([\\s+]|och)*(?<time3>[\\d.,]+)\\s?(?<unit3>veckor|vecka|dagar|dag|dygn|timmar|timme|tim|minuter|minut|min)(\\s?\\+.*)?$/;\n\n if (!cookingTime) {\n return 0;\n }\n\n let timeMatch = cookingThreeTimeRegExp.exec(cookingTime.trim());\n\n if (!timeMatch) {\n timeMatch = cookingTwoTimeRegExp.exec(cookingTime.trim());\n\n if (!timeMatch) {\n timeMatch = cookingOneTimeRegex.exec(cookingTime.trim());\n }\n }\n if (!timeMatch || !timeMatch.groups) {\n return 0;\n }\n\n const totalTimeInMinutes =\n getMinutesFromTimeParts(timeMatch.groups.time, timeMatch.groups.unit) +\n getMinutesFromTimeParts(timeMatch.groups.time2, timeMatch.groups.unit2) +\n getMinutesFromTimeParts(timeMatch.groups.time3, timeMatch.groups.unit3);\n return totalTimeInMinutes;\n};\n\nexport const mapToComments = (comments: ApiRecipeComment[]) => {\n const domainComments =\n comments?.map<RecipeComment>((comment) => ({\n id: comment.id,\n recipeId: comment.recipeId,\n name: comment.name,\n comment: comment.comment,\n isAdmin: comment.isAdmin,\n date: new Date(comment.date),\n })) || [];\n\n return domainComments;\n};\n\nexport const mapToRecipeProps = (recipe: ApiRecipe, stickers?: ImageSticker[]) => {\n if (!recipe) return undefined;\n\n const numberOfAllIngredients = recipe.recipePart.reduce((prev, next) => {\n return prev + next.ingredients.length;\n }, 0);\n\n const recipeProps: RecipeProps = {\n id: recipe.id,\n externalId: recipe.externalId.toString(),\n name: recipe.name,\n imageUrl: recipe.imageUrl,\n portions: recipe.yieldValue,\n portionsUnit: recipe.yieldUnit,\n parts: mapToRecipePartProps(recipe.recipePart),\n stickerUrl: recipe.keywords && stickers && getStickerUrl(recipe.keywords, stickers),\n averageRating: recipe.avgRating,\n ratingPercent: recipe.avgRating > 0 ? Math.ceil(recipe.avgRating * 2 * 10) : 0,\n ratingCount: recipe.numberOfVotes,\n preamble: recipe.preamble,\n climateImpactKg: recipe.climateImpactKg,\n ovenTemperature: recipe.ovenTemperature,\n cookingTime: recipe.totalTime ? recipe.totalTime : recipe.cookingTime,\n prepTime: recipe.preparationTime,\n totalTime: recipe.totalTime,\n cookingInstructions: mapToRecipeCookingInstructions(recipe.cookingInstructions),\n servingTips: recipe.servingTips,\n tips: recipe.tips,\n numberOfIngredients: numberOfAllIngredients,\n recipeCreator: recipe.recipeCreator,\n categories: recipe.categories,\n comments: mapToComments(recipe.comments),\n isFoodBox: recipe.isFoodBox,\n };\n\n return recipeProps;\n};\n","const diactricMap: Record<string, string> = {\n Ã¥: 'a',\n ä: 'a',\n á: 'a',\n à : 'a',\n ã: 'a',\n â: 'a',\n ć: 'c',\n Ä: 'c',\n ç: 'c',\n Ä‘: 'd',\n è: 'e',\n é: 'e',\n ê: 'e',\n ë: 'e',\n Ã: 'i',\n ì: 'i',\n ï: 'i',\n î: 'i',\n ÄŸ: 'g',\n ö: 'o',\n æ: 'o',\n ø: 'o',\n ô: 'o',\n ó: 'o',\n ò: 'o',\n Å¡: 's',\n ÅŸ: 's',\n ß: 's',\n ü: 'u',\n û: 'u',\n ú: 'u',\n ù: 'u',\n ž: 'z',\n};\n\nconst trim = (str: string, ch: string) => {\n let start = 0;\n let end = str.length;\n\n while (start < end && str[start] === ch) start += 1;\n while (end > start && str[end - 1] === ch) end -= 1;\n\n return start > 0 || end < str.length ? str.substring(start, end) : str;\n};\n\nconst alphaNumericAndDashOnlyRegEx = new RegExp('[^a-zA-Z0-9-]', 'g');\nconst doubleDashesRegEx = new RegExp('-{2,}', 'g');\nexport const urlFriendlySlug = (str?: string) => {\n if (!str) return undefined;\n\n let sanitizedUrl = str.toLowerCase();\n\n // this needs to imitate what is in UrlHelper.CleanupUrl on backend\n let cleanedUrl = '';\n\n for (let i = 0; i < sanitizedUrl.length; i += 1) {\n if (sanitizedUrl[i] === ' ' || !sanitizedUrl[i].match(alphaNumericAndDashOnlyRegEx)) {\n cleanedUrl += sanitizedUrl[i];\n continue;\n }\n\n if (diactricMap[sanitizedUrl[i]]) {\n cleanedUrl += diactricMap[sanitizedUrl[i]];\n }\n }\n\n sanitizedUrl = cleanedUrl;\n sanitizedUrl = sanitizedUrl.replace(alphaNumericAndDashOnlyRegEx, '-');\n sanitizedUrl = sanitizedUrl.replace(doubleDashesRegEx, '-');\n sanitizedUrl = trim(sanitizedUrl, '-');\n\n return sanitizedUrl;\n};\n","export const trimEnd = (input: string, toTrim: string): string => {\n if (!input || !toTrim) return input;\n\n if (!input.endsWith(toTrim)) return input; // stop recursion\n\n const trimmed = trimEnd(input.slice(0, -toTrim.length), toTrim);\n return trimmed;\n};\n\nexport const trimStart = (input: string, toTrim: string): string => {\n if (!input || !toTrim) return input;\n\n if (!input.startsWith(toTrim)) return input; // stop recursion\n\n const trimmed = trimStart(input.slice(toTrim.length), toTrim);\n return trimmed;\n};\n\nexport const trim = (input: string, toTrim: string) => {\n const trimmed = trimEnd(trimStart(input, toTrim), toTrim);\n return trimmed;\n};\n\nexport const ensureLeadingCharacter = (input: string, leadingCharacter: string) => {\n if (!input.startsWith(leadingCharacter)) return leadingCharacter + input;\n return input;\n};\n\nexport const ensureTrailingCharacter = (input: string, trailingCharacter: string) => {\n if (!input.endsWith(trailingCharacter)) return input + trailingCharacter;\n return input;\n};\n\nexport const ensureLeadingSlash = (input: string) => {\n return ensureLeadingCharacter(input, '/');\n};\n\nexport const ensureTrailingSlash = (input: string) => {\n return ensureTrailingCharacter(input, '/');\n};\n\nexport const ensureSlashes = (input: string) => {\n return ensureLeadingSlash(ensureTrailingSlash(input));\n};\n\nexport const trimTrailingSlash = (input: string) => {\n return trimEnd(input, '/');\n};\n\nexport const trimLeadingSlash = (input: string) => {\n return trimStart(input, '/');\n};\n\nexport const trimSlashes = (input: string) => {\n return trim(input, '/');\n};\n\nexport const toTitleCase = (input: string) => {\n if (!input || input.length === 0) return input;\n\n const newInputText = safeSplit(input, ' ')\n .map((val) => firstLetterTitleCase(val))\n .join(' ');\n\n return newInputText;\n};\n\nconst firstLetterTitleCase = (input: string) => {\n return input.charAt(0).toUpperCase() + input.substr(1).toLowerCase();\n};\n\ninterface SplitOptions {\n removeEmptyEntries: boolean;\n}\n\nexport const safeSplit = (\n input: string,\n separator: string,\n options: SplitOptions | null = null,\n) => {\n if (!input || !input.length) return [];\n\n let values = input.split(separator);\n\n if (options && options.removeEmptyEntries) {\n values = values.filter(Boolean);\n }\n\n return values;\n};\n","import { appConfig } from '../../../appConfig';\n\nexport const ensureTrailingSlash = (url: string) => {\n return url.replace(/(\\/*)?$/, '/');\n};\n\nexport const ensureLeadingSlash = (url: string) => {\n return url.replace(/^(\\/*)?/, '/');\n};\n\ntype LoginServerIntent = 'login' | 'create';\ntype LoginServerUserType = 'company' | 'private';\ntype LoginServerPrompt = 'none' | 'login';\n\nconst getLoginParams = ({\n intent,\n userType,\n prompt,\n returnUrl,\n}: {\n intent?: LoginServerIntent;\n userType?: LoginServerUserType;\n prompt?: LoginServerPrompt;\n returnUrl?: string;\n}) => {\n const queryString = new URLSearchParams();\n if (intent) {\n queryString.set('intent', intent);\n }\n\n if (userType) {\n queryString.set('loginType', userType);\n }\n\n if (prompt === 'login') {\n queryString.set('prompt', prompt);\n }\n\n if (returnUrl) {\n queryString.set('returnUrl', returnUrl);\n }\n\n return queryString;\n};\n\nexport const getCreateAccountUrl = (userType: LoginServerUserType = 'private') => {\n const { loginUrl } = appConfig.coopSettings;\n const queryString = getLoginParams({\n intent: 'create',\n userType,\n });\n\n return `${loginUrl}?${queryString.toString()}`;\n};\n\nexport const getLoginUrl = (\n userType: LoginServerUserType = 'private',\n prompt?: LoginServerPrompt,\n returnUrl?: string,\n) => {\n const { loginUrl } = appConfig.coopSettings;\n const queryString = getLoginParams({\n intent: 'login',\n userType,\n prompt,\n returnUrl,\n });\n\n return `${loginUrl}?${queryString.toString()}`;\n};\n\nexport const getLoginUrlWithReturnUrl = (\n userType: LoginServerUserType = 'private',\n prompt?: LoginServerPrompt,\n stayOnPage?: boolean,\n) => {\n const defaultReturnUrl =\n userType === 'company'\n ? undefined // on the backend in OpenIdController we always return B2B user to the B2B Handla page after successful login, so we skip this returnUrl for them\n : appConfig.coopSettings.myCoop.myCoopUrl;\n\n const url = getLoginUrl(\n userType,\n prompt,\n stayOnPage ? window.location.pathname : defaultReturnUrl,\n );\n return url;\n};\n\nexport const addQueryParamsToUrl = (\n url: string,\n paramValues: Record<string, string | undefined>,\n) => {\n const [path, currQueryString = ''] = url.split('?');\n\n const removedPotentialLastSlashFromPath =\n path.slice(-1) === '/' ? path.slice(0, path.length - 1) : path;\n\n const urlSearchParams = Object.entries(paramValues).reduce((params, [key, value]) => {\n if (value && value?.length > 0) {\n params.set(key, value);\n }\n return params;\n }, new URLSearchParams(currQueryString));\n\n const correctEnding = urlSearchParams.toString() ? `?${urlSearchParams.toString()}` : '/';\n\n return `${removedPotentialLastSlashFromPath}${correctEnding}`;\n};\n","import { useMutation } from '@tanstack/react-query';\n\nimport kimProxyFlow from '../../../common/flow/kimProxyFlow';\nimport { ga4EmailSubscriptionEvents } from '../../../common/tracking/ga4/emailSubscription';\n\nexport const useSubscribeConsent = () => {\n const subscribeMutation = useMutation({\n mutationFn: (consent: string[]) => {\n return kimProxyFlow.subscribeConsents(consent);\n },\n onSuccess: () => {\n ga4EmailSubscriptionEvents.confirm.sendEmailSubscriptionInteraction();\n },\n });\n\n return subscribeMutation;\n};\n","import type React from 'react';\n\nimport { HeaderSearch } from '../../../base/components/Header';\nimport EcommerceProductSearchStateContextProvider from '../../contexts/ecommerceProductSearchStateContext';\nimport EcommerceSearchBar from '../EcommerceSearchBar';\nimport EcommerceSearchOverlay from '../EcommerceSearchBar/EcommerceSearchOverlay';\nimport { SearchAutocompleteAbTestProvider } from '../EcommerceSearchBar/SearchAutocompleteAbTestContext';\n\nconst EcommerceSearch = (props: React.PropsWithChildren<{}>) => {\n return (\n <SearchAutocompleteAbTestProvider>\n <EcommerceProductSearchStateContextProvider initialQuery=\"\">\n <HeaderSearch searchSlot={<EcommerceSearchBar size=\"small\" />} />\n <EcommerceSearchOverlay dontNavigateToFullResults={false} addToCartSilent />\n\n {props.children}\n </EcommerceProductSearchStateContextProvider>\n </SearchAutocompleteAbTestProvider>\n );\n};\n\nexport default EcommerceSearch;\n","import { appConfig } from '../../../../appConfig';\n\nexport const buildAllProductResultsUrl = (query?: string, originalQuery?: string) => {\n const { url } = appConfig.coopSettings.ecommerce.search;\n const searchQuery = new URLSearchParams();\n if (query) {\n searchQuery.set('q', query);\n }\n\n if (originalQuery && originalQuery !== query) searchQuery.set('oq', originalQuery);\n\n return `${url}?${searchQuery.toString()}`;\n};\n","import type { FC } from 'react';\nimport * as React from 'react';\nimport { useCallback, useRef, useState } from 'react';\n\nimport SearchOverlay from '../../../base/components/SearchOverlay';\nimport CartSummaryAccessibilityLogger from '../../../cart/components/atoms/CartSummaryAccessibilityLogger';\nimport DelayedA11yAnnouncer from '../../../common/components/A11yAnnouncer/DelayedA11yAnnouncer';\nimport { useEcommerceSearchOverlayGA4ActionTracking } from '../../../common/tracking/hooks/useSearchOverlayGA4Tracking';\nimport { useProductSearchStateContext } from '../../../search/hooks/useProductSearchStateContext';\nimport useReactRouting from '../../hooks/useReactRouting';\nimport { buildAllProductResultsUrl } from './EcommerceSearchBar.utils';\n\nexport const EcommerceSearchOverlayResults = React.lazy(\n () => import('./EcommerceSearchOverlayResults'),\n);\n\ninterface EcommerceSearchOverlayProps {\n dontNavigateToFullResults: boolean;\n addToCartSilent: boolean;\n}\n\nconst EcommerceSearchOverlay: FC<React.PropsWithChildren<EcommerceSearchOverlayProps>> = (\n props,\n) => {\n const {\n query,\n queryUsed,\n isLoading,\n clear,\n result,\n searchFromPage,\n a11yResultAnnounceMessage,\n } = useProductSearchStateContext();\n const { push } = useReactRouting();\n const searchRef = useRef<HTMLInputElement>(null);\n\n const {\n trackAbortAction,\n trackCloseClickAction,\n trackAutocompleteItemClick,\n trackListObjectClick,\n trackEnterAction,\n trackSeeAllResultsClickAction,\n trackAddToCartClickAction,\n trackRemoveFromCartClickAction,\n } = useEcommerceSearchOverlayGA4ActionTracking(\n query,\n result?.queryUsed,\n searchFromPage,\n isLoading,\n );\n\n const [disableModalFocusBackToTrigger, setDisableModalFocusBackToTrigger] = useState(false);\n\n const handleOutsideClick = () => {\n trackAbortAction(result?.totalResults);\n };\n\n const handleClearClick = () => {\n trackCloseClickAction(result?.totalResults);\n };\n\n const handleOnHintClick = () => {\n trackAutocompleteItemClick(result?.totalResults);\n searchRef.current?.focus();\n };\n\n const handleItemClick = (item: ApiProduct, index: number) => {\n trackListObjectClick(result?.totalResults, item.identifier, item.name, index);\n };\n\n const handleItemAddToCartClick = (item: ApiProduct, index: number) => {\n trackAddToCartClickAction(result?.totalResults, item.identifier, item.name, index);\n };\n\n const handleItemRemoveFromCartClick = (item: ApiProduct, index: number) => {\n trackRemoveFromCartClickAction(result?.totalResults, item.identifier, item.name, index);\n };\n\n const usedQuery = isLoading ? query : queryUsed;\n\n const navigateToResultsPage = (_usedQuery?: string, _originalQuery?: string) => {\n if (_usedQuery) {\n const viewAllResultsUrl = buildAllProductResultsUrl(_usedQuery, _originalQuery);\n push(viewAllResultsUrl);\n clear();\n setDisableModalFocusBackToTrigger(true);\n }\n };\n\n const handleOnEnterPress = () => {\n if (!props.dontNavigateToFullResults) {\n trackEnterAction(result?.totalResults);\n navigateToResultsPage(usedQuery, query);\n }\n };\n\n const handleFullResultsClick = () => {\n trackSeeAllResultsClickAction(result?.totalResults);\n navigateToResultsPage(usedQuery, query);\n };\n\n const onResultScroll = useCallback(() => searchRef.current?.blur(), [searchRef]);\n\n return (\n <SearchOverlay\n submitLabel=\"Sök vara\"\n onEnterPress={handleOnEnterPress}\n onOutsideClick={handleOutsideClick}\n onClearClick={handleClearClick}\n ref={searchRef}\n inputPlaceholder=\"Sök bland tusentals varor\"\n inputDescription=\"Förslag visas nedan\"\n announcerSlot={\n <DelayedA11yAnnouncer\n a11yMessage={a11yResultAnnounceMessage}\n name=\"EcommerceSearchResultsAnnouncer\"\n delayFirstMessage\n />\n }\n onExiting={() => {\n setDisableModalFocusBackToTrigger(false);\n }}\n dangerouslyDisableFocusBackToTrigger={disableModalFocusBackToTrigger}\n >\n <EcommerceSearchOverlayResults\n onScroll={onResultScroll}\n onFullResultsClick={handleFullResultsClick}\n dontNavigateAway={props.dontNavigateToFullResults}\n addToCartSilent={props.addToCartSilent}\n onHintClick={handleOnHintClick}\n onItemClick={handleItemClick}\n onItemAddToCartClick={handleItemAddToCartClick}\n onItemRemoveFromCartClick={handleItemRemoveFromCartClick}\n useMaxHeightCalculation\n />\n <CartSummaryAccessibilityLogger />\n </SearchOverlay>\n );\n};\n\nexport default EcommerceSearchOverlay;\n","import React, { createContext, useContext } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport { useAbTest } from '../../hooks/useAbTests';\n\nconst SearchAutocompleteAbTestContext = createContext<{\n isVariant: boolean;\n}>({\n isVariant: false,\n});\n\nexport const useSearchAutocompleteAbTestContext = () => {\n const context = useContext(SearchAutocompleteAbTestContext);\n return context;\n};\n\nexport const SearchAutocompleteAbTestProvider = ({ children }: React.PropsWithChildren<{}>) => {\n const { isVariant } = useAbTest({\n name: 'search_autocomplete_abtest',\n userId: appConfig.coopUserSettings.userId,\n enabled: true,\n });\n\n const obj = React.useMemo(() => ({ isVariant }), [isVariant]);\n\n return (\n <SearchAutocompleteAbTestContext.Provider value={obj}>\n {children}\n </SearchAutocompleteAbTestContext.Provider>\n );\n};\n","import { Search, SearchAutocomplete, SearchAutocompleteItem } from '@coop/components';\nimport { SearchAutocompleteItemLabel } from '@coop/components/src/SearchAutocomplete/SearchAutocomplete';\nimport { type FC, useEffect } from 'react';\n\nimport {\n useEcommerceSearchOverlayGA4ActionTracking,\n useSearchOverlayGA4ActionTracking,\n} from '../../../common/tracking/hooks/useSearchOverlayGA4Tracking';\nimport { useProductSearchStateContext } from '../../../search/hooks/useProductSearchStateContext';\nimport useReactRouting from '../../hooks/useReactRouting';\nimport { buildAllProductResultsUrl } from './EcommerceSearchBar.utils';\nimport { useSearchAutocompleteAbTestContext } from './SearchAutocompleteAbTestContext';\n\ninterface EcommerceSearchBarProps {\n size: React.ComponentProps<typeof Search>['size'];\n dontNavigateToFullResults?: boolean;\n}\n\nconst EcommerceSearchBar: FC<React.PropsWithChildren<EcommerceSearchBarProps>> = (props) => {\n const {\n query,\n queryUsed,\n isOpen,\n isLoading,\n open,\n clear,\n setQuery,\n show,\n searchFromPage,\n autocompleteResult,\n error,\n } = useProductSearchStateContext();\n\n const { isVariant } = useSearchAutocompleteAbTestContext();\n\n const { trackEnterAction } = useSearchOverlayGA4ActionTracking(\n query,\n queryUsed,\n searchFromPage,\n isLoading,\n );\n\n const { trackAutocompleteItemClick } = useEcommerceSearchOverlayGA4ActionTracking(\n query,\n queryUsed,\n searchFromPage,\n isLoading,\n );\n\n const { push } = useReactRouting();\n\n useEffect(() => {\n if (show && !isVariant) {\n open();\n }\n }, [show, open, isVariant]);\n\n const handleEnterPress = () => {\n trackEnterAction();\n navigateToResultsPage(query, queryUsed);\n };\n\n const navigateToResultsPage = (_usedQuery?: string, _originalQuery?: string) => {\n if (_usedQuery) {\n const viewAllResultsUrl = buildAllProductResultsUrl(_usedQuery, _originalQuery);\n push(viewAllResultsUrl);\n clear();\n }\n };\n\n const handleOnHintAbTestClick = (hint: string) => {\n trackAutocompleteItemClick(autocompleteResult?.hints.length);\n navigateToResultsPage(hint);\n };\n\n const hints = autocompleteResult?.hints.map((ss) => ({ text: ss, key: ss })) || [];\n\n return isVariant ? (\n <SearchAutocomplete\n placeholder=\"Sök vara\"\n size={props.size}\n inputValue={query}\n onInputChange={setQuery}\n showEmptyStateWhen={false}\n showErrorStateWhen={!!error}\n items={query ? hints : []}\n onSubmit={handleEnterPress}\n onSelectionChange={(key) => {\n if (key) {\n handleOnHintAbTestClick(key.toString());\n }\n }}\n overlayMaxHeight={500}\n >\n {(item) => (\n <SearchAutocompleteItem textValue={item.text}>\n <SearchAutocompleteItemLabel>{item.text}</SearchAutocompleteItemLabel>\n </SearchAutocompleteItem>\n )}\n </SearchAutocomplete>\n ) : (\n <Search\n submitLabel=\"Sök vara\"\n inputText={query}\n setInputText={setQuery}\n size={props.size}\n hide={isOpen}\n inputPlaceholder=\"Sök bland tusentals varor\"\n onEnterPress={(!props.dontNavigateToFullResults && handleEnterPress) || undefined}\n onEscapePress={clear}\n onReset={clear}\n aria-haspopup=\"dialog\"\n description=\"Sökresultaten kommer att visas medan du skriver\"\n />\n );\n};\n\nexport default EcommerceSearchBar;\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nexport const calculateRowFromIndex = (index: number, elementsInRow: number) => {\n const row = Math.trunc(index / elementsInRow);\n const rowPosition = index % elementsInRow;\n\n return {\n row,\n rowPosition,\n };\n};\n\nexport interface ItemGridProps<TItem> {\n cellsInRow: number;\n styles?: React.CSSProperties;\n gridClasses?: string;\n itemClasses?: string;\n noDefaultClasses?: boolean;\n items?: TItem[];\n renderItem: (item: TItem, index: number) => React.ReactNode;\n itemUniqueKey: (item: TItem, index: number) => string;\n renderAtRowStart?: (row: number) => React.ReactNode;\n renderAtRowEnd?: (row: number) => React.ReactNode;\n renderLast?: () => React.ReactNode;\n ariaLabel?: string;\n}\n\nconst ItemGrid = <T,>(props: ItemGridProps<T>, ref?: React.Ref<HTMLUListElement>) => {\n if (!props.items) {\n return null;\n }\n\n return (\n // Voiceover needs explicit role for ul elements, otherwise it might not treat it as a list landmark when list-style: none is used in CSS\n // eslint-disable-next-line jsx-a11y/no-redundant-roles\n <ul\n ref={ref}\n role=\"list\"\n aria-label={props.ariaLabel}\n className={classNames('Grid Grid-items', props.gridClasses)}\n style={props.styles}\n >\n {props.items.map((item, index, array) => (\n // eslint-disable-next-line react/no-array-index-key\n <React.Fragment key={props.itemUniqueKey(item, index)}>\n {index % props.cellsInRow === 0 &&\n props.renderAtRowStart &&\n props.renderAtRowStart(calculateRowFromIndex(index, props.cellsInRow).row)}\n <li\n className={classNames(\n 'Grid-cell',\n props.noDefaultClasses ? null : `u-size1of${props.cellsInRow}`,\n props.itemClasses,\n )}\n >\n {props.renderItem(item, index)}\n </li>\n\n {((index + 1) % props.cellsInRow === 0 || index === array.length - 1) && // append block after full row end OR after last item in a partially empty row\n props.renderAtRowEnd &&\n props.renderAtRowEnd(calculateRowFromIndex(index, props.cellsInRow).row)}\n </React.Fragment>\n ))}\n {props.renderLast && props.renderLast()}\n </ul>\n );\n};\n\nexport default React.forwardRef(ItemGrid);\n","import { ConfirmInfo, Icon } from '@coop/components';\nimport { Info1Icon } from '@coop/icons';\nimport classNames from 'classnames';\n\nimport useModal from '../../../common/hooks/useModal';\nimport styles from './MaxPromotionUsage.module.scss';\n\nconst MaxPromotionUsageNotification = (props: { text: string }) => {\n const { isOpen, open, close } = useModal('MaxPromotionUsage');\n\n return (\n <>\n <button\n type=\"button\"\n className={classNames(styles.Trigger)}\n onClick={open}\n aria-label={`Max ${props.text} per hushÃ¥ll`}\n >\n <Icon icon={Info1Icon} aria-hidden width={16} height={16} />\n <span>Max {props.text}/hushÃ¥ll</span>\n </button>\n <ConfirmInfo\n show={isOpen}\n heading={`Max ${props.text} per hushÃ¥ll`}\n message=\"Erbjudandet gäller ett begränsat antal per hushÃ¥ll. Utöver den angivna mängden gäller ordinarie pris.\"\n close={close}\n />\n </>\n );\n};\n\nexport default MaxPromotionUsageNotification;\n","// extracted by mini-css-extract-plugin\nexport default {\"Text\":\"SS0GynIn\",\"Trigger\":\"_P0yDhA5\"};","import styles from './MaxPromotionUsage.module.scss';\nimport MaxPromotionUsageNotification from './MaxPromotionUsageNotification';\n\ninterface MaxPromotionUsageProps {\n text: string;\n withNotification?: boolean;\n}\n\nconst MaxPromotionUsage = (props: MaxPromotionUsageProps) => {\n if (props.withNotification) {\n return <MaxPromotionUsageNotification text={props.text} />;\n }\n\n return <div className={styles.Text}>Max {props.text}/hushÃ¥ll</div>;\n};\n\nexport default MaxPromotionUsage;\n","import { type FC, useCallback } from 'react';\n\nimport { SearchFromPageType } from '../../base/models/SearchFromPageType';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../common/selectors/storeSelectors';\nimport { SearchStateProvider } from '../../search/contexts/searchStateContext';\nimport searchFlow from '../../search/flow/searchFlow';\nimport { useSearchAutocompleteAbTestContext } from '../components/EcommerceSearchBar/SearchAutocompleteAbTestContext';\n\ninterface ProviderProps {\n initialQuery?: string;\n}\n\nconst searchProductsAbortable = async (\n abortSignal: AbortSignal,\n query: string,\n storeId: string,\n isAutocompleteAbTest: boolean,\n) => {\n // fake emtpy result if we are in the autocomplete abtest\n const searchPromise = isAutocompleteAbTest\n ? new Promise<Awaited<ReturnType<typeof searchFlow.searchProductsLoop>>>((resolve) => {\n resolve({\n items: [],\n query,\n queryUsed: query,\n totalResults: 0,\n spellingSuggestions: [],\n });\n })\n : searchFlow.searchProductsLoop(\n {\n page: 0,\n resultsPerPage: 15,\n searchTerm: query,\n facets: [],\n sortBy: [],\n storeId,\n },\n abortSignal,\n null,\n true,\n );\n\n return Promise.all([\n searchPromise,\n searchFlow.autocomplete(query, 0, 6, abortSignal, null, storeId),\n ]);\n};\n\nconst EcommerceProductSearchStateContextProvider: FC<React.PropsWithChildren<ProviderProps>> = (\n props,\n) => {\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n const { isVariant } = useSearchAutocompleteAbTestContext();\n\n const searchProductsFunction = useCallback(\n async (_abortSignal: AbortSignal, _query: string) =>\n searchProductsAbortable(_abortSignal, _query, currentProductionUnit, isVariant),\n [currentProductionUnit, isVariant],\n );\n\n return (\n <SearchStateProvider\n initialQuery={props.initialQuery || null}\n searchFunction={searchProductsFunction}\n searchFromPage={SearchFromPageType.Ecommerce}\n minimumQueryLength={2}\n >\n {props.children}\n </SearchStateProvider>\n );\n};\n\nexport default EcommerceProductSearchStateContextProvider;\n","import type { FC } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\ninterface IRouterContext {}\n\nconst RouterContext = createContext<IRouterContext | null>(null);\n\nconst useRouterContext = () => {\n const routerContext = useContext(RouterContext);\n return routerContext;\n};\n\ninterface RouterContextProviderProps {}\n\nconst RouterContextProvider: FC<React.PropsWithChildren<RouterContextProviderProps>> = ({\n children,\n}) => {\n const contextValue = useMemo(() => ({}), []);\n\n return <RouterContext.Provider value={contextValue}>{children}</RouterContext.Provider>;\n};\n\nexport { RouterContextProvider, useRouterContext };\n","import { appConfig } from '../appConfig';\nimport abTestStorage from '../microApps/common/persistance/localStorage/abTestStorage';\n\n/** Randomize between 0-99, if a user is logged in, always create same hash */\nexport const randomizePersistant = (name: string, userId?: string) => {\n if (!name || !userId) {\n return Math.random() * 100;\n }\n const stringToHash = name + userId;\n let hash = 0;\n let i;\n let chr;\n\n for (i = 0; i < stringToHash.length; i += 1) {\n chr = stringToHash.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash = (hash << 5) - hash + chr;\n // eslint-disable-next-line no-bitwise\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash) % 100;\n};\n\nexport const isAbTestPreview = () =>\n new URLSearchParams(window.location.search)?.get('abTestPreview') === 'true';\n\nexport const calculateAbTestValue = (name: string, percentage: number, userId?: string) => {\n const nameWithPercentage = `${name}_${percentage}`;\n const randomNumber = randomizePersistant(nameWithPercentage, userId);\n return randomNumber < percentage ? '1' : '0';\n};\n\nexport const setupAbTest = (epiAbTest: RecursiveReadonly<EpiAbTest>, userId?: string) => {\n const { name } = epiAbTest;\n let abTest = abTestStorage.get(name);\n\n if (!abTest) {\n abTest = {\n name: epiAbTest.name,\n percentage: epiAbTest.percentage,\n created: new Date(),\n modified: new Date(),\n abTestValue: calculateAbTestValue(name, epiAbTest.percentage, userId),\n };\n abTestStorage.set(abTest);\n }\n // if the percentage is changed in CMS on an existing test, we need to recalculate ab test value\n else if (abTest.percentage !== epiAbTest.percentage) {\n abTest.percentage = epiAbTest.percentage;\n abTest.abTestValue = calculateAbTestValue(name, epiAbTest.percentage, userId);\n abTest.modified = new Date();\n abTestStorage.set(abTest);\n }\n\n return abTest;\n};\n\nexport const cleanupAbTests = () => {\n const epiAbTests = appConfig.coopSettings.featureFlags.abTests;\n\n if (epiAbTests) {\n const abTestsToRemove = abTestStorage\n .all()\n .filter((test) => epiAbTests.every((epiTest) => epiTest.name !== test.name));\n\n abTestStorage.remove(abTestsToRemove.map((test) => test.name));\n }\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { appConfig } from '../../../appConfig';\nimport { cleanupAbTests, isAbTestPreview, setupAbTest } from '../../../utility/abTests';\nimport gaTracking from '../../common/tracking/tracking';\n\n/**\n * This hook makes the user responsible for triggering interaction tracking\n */\nexport const useImperativeAbTest = (args: {\n name: string;\n contentId?: string;\n userId?: string;\n}) => {\n const { name, contentId, userId } = args;\n\n const { isVariant: isResultVariant, isEnabled: isTestEnabled } = useMemo(() => {\n const epiAbTest = appConfig.coopSettings.featureFlags.abTests\n ?.filter((item) => !!item.enabled)\n .find(\n (t) =>\n (t.contentId.length === 0 && t.name === name) ||\n (t.contentId.length !== 0 &&\n t.name === name &&\n !!contentId &&\n t.contentId.includes(contentId)),\n );\n\n let isVariant = false;\n let isEnabled = false;\n\n if (epiAbTest) {\n const abTest = setupAbTest(epiAbTest, userId);\n isVariant = abTest.abTestValue === '1';\n isEnabled = true;\n }\n\n return { isVariant: isVariant || isAbTestPreview(), isEnabled };\n }, [contentId, name, userId]);\n\n const trackInteraction = useCallback(\n (variant: string) => {\n // eslint-disable-next-line no-console\n console.logDev(`Triggered ${name} AB test. Result: ${variant}`);\n\n if (isAbTestPreview()) return;\n\n gaTracking.abTest.userInteraction(name, variant);\n },\n [name],\n );\n\n return { isVariant: isResultVariant, trackInteraction, isEnabled: isTestEnabled };\n};\n\n/**\n * This hook will automatically trigger the test when component loads\n */\nexport const useAbTest = ({\n name,\n contentId,\n userId,\n enabled,\n trackOnce = false,\n}: {\n name: string;\n contentId?: string;\n userId?: string;\n enabled: boolean;\n trackOnce?: boolean;\n}) => {\n const { isVariant, isEnabled, trackInteraction } = useImperativeAbTest({\n name,\n contentId,\n userId,\n });\n\n const alreadyTrackedRef = useRef(false);\n\n const trackAbTest = useCallback(\n (variant: string) => {\n if (!trackOnce) {\n trackInteraction(variant);\n return;\n }\n\n if (!alreadyTrackedRef.current) {\n alreadyTrackedRef.current = true;\n trackInteraction(variant);\n }\n },\n [trackInteraction, trackOnce],\n );\n\n useEffect(() => {\n cleanupAbTests();\n }, []);\n\n useEffect(() => {\n if (isEnabled && enabled) {\n if (isVariant) {\n trackAbTest('B');\n } else {\n trackAbTest('A');\n }\n }\n }, [trackAbTest, isEnabled, enabled, isVariant, name, contentId]);\n\n // to become variant you need to check all flags. We dont want to show variant if someone had previously saved abtest \"B\" and the test is disabled\n return { isVariant: isEnabled && enabled && isVariant };\n};\n","import { useElementEvent } from '@coop/hooks';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport _ from 'underscore';\n\nimport type {\n CoopContentPageSize,\n CoopLayoutSize,\n SwiperBreakpointsCollection,\n} from '../../../utility/coopSwiperBreakpoints';\nimport {\n CoopSwiperBreakpoints,\n getGridBreakpointRanges,\n} from '../../../utility/coopSwiperBreakpoints';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\n\nexport const useBreakpoints = (\n breakpointAreaName: keyof SwiperBreakpointsCollection,\n hasSideBar: boolean,\n contentPageSize: CoopContentPageSize,\n layoutSize: CoopLayoutSize,\n) => {\n const [windowSize, setWindowSize] = useState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const handleResize = useCallback(\n _.throttle(() => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, 100),\n [],\n );\n\n useElementEvent(window, 'resize', handleResize, true);\n\n const breakpointArray = useMemo(() => {\n const breakpoints = CoopSwiperBreakpoints.getBreakpointsFor(\n breakpointAreaName,\n hasSideBar,\n contentPageSize,\n layoutSize,\n );\n return breakpoints;\n }, [breakpointAreaName, hasSideBar, contentPageSize, layoutSize]);\n\n const breakpointRanges = useMemo(() => {\n const ranges = getGridBreakpointRanges(breakpointArray);\n return ranges;\n }, [breakpointArray]);\n\n const getCellsInRow = useCallback(\n (width: number) => {\n const range = breakpointRanges.find((x) => width >= x.from && width <= x.to);\n if (!range) {\n return 1;\n }\n return Math.round(range?.cellsInRow);\n },\n [breakpointRanges],\n );\n\n const [cellsInRow, setCellsInRow] = useState(getCellsInRow(windowSize.width));\n\n useEffect(() => {\n const inRow = getCellsInRow(windowSize.width);\n setCellsInRow(inRow);\n }, [windowSize.width, getCellsInRow]);\n\n return {\n breakpoints: breakpointArray,\n cellsInRow,\n };\n};\n\nexport const useBreakpointsSidebar = (breakpointAreaName: keyof SwiperBreakpointsCollection) => {\n const hasSideBar = useAppSelector((state) => state.ui.shared.hasSideBar);\n const layoutSize = useAppSelector((state) => state.ui.shared.layoutSize);\n const contentPageSize = useAppSelector((state) => state.ui.shared.contentPageSize);\n\n const result = useBreakpoints(breakpointAreaName, hasSideBar, contentPageSize, layoutSize);\n return result;\n};\n","import { useCallback } from 'react';\n\nimport { getStaticPageContext } from '../../common/flow/dynamicYield/dynamicYield.utils';\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\nimport type {\n ProductRecommendationSlot,\n RecommendationItem,\n} from '../../common/models/product/productDomainModels';\nimport { RecommendationType } from '../../common/models/product/productDomainModels';\nimport { storeSelectors } from '../../common/selectors/storeSelectors';\nimport { fetchProductRecommendations } from '../utils/recommendationUtils';\n\nexport const isProductRecommendation = (\n recommendationItem: RecommendationItem,\n): recommendationItem is ProductRecommendationSlot =>\n recommendationItem.type === RecommendationType.Product;\n\nexport const getRecommendationUniqueIdentifier = (recommendationItem: RecommendationItem) => {\n if (isProductRecommendation(recommendationItem)) {\n return `${recommendationItem.identifier}_product`;\n }\n return `${recommendationItem.id}_other`;\n};\n\nexport const useDynamicYieldRecommendations = (\n recommendationId: string,\n onlyPromotions: boolean,\n) => {\n const { execute, result, error, isLoading } = useAsyncDispatcher(fetchProductRecommendations, {\n initialLoadingState: true,\n });\n\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const getRecommendations = useCallback(() => {\n if (recommendationId) {\n const context = getStaticPageContext();\n if (context) {\n execute(recommendationId, onlyPromotions, currentProductionUnit, {\n data: context.data,\n type: context.type,\n location: window.location.href,\n });\n }\n }\n }, [currentProductionUnit, execute, onlyPromotions, recommendationId]);\n\n return {\n getRecommendations,\n getRecommendationUniqueIdentifier,\n isProductRecommendation,\n recommendation: result,\n error,\n isLoading,\n };\n};\n","export const getStaticPageContext = () => {\n if (window.DY) {\n return DY.recommendationContext;\n }\n\n return null;\n};\n","import { useEffect } from 'react';\n\nimport type { DynamicYieldAnalyticsMetadata } from '../../common/models/product/productDomainModels';\nimport tracking from '../../common/tracking/tracking';\n\nconst useDynamicYieldTracking = (\n selector: string,\n result: DynamicYieldAnalyticsMetadata | null | undefined,\n) => {\n useEffect(() => {\n if (result?.analyticsMetadata) {\n tracking.ecommerce.dynamicYield.campaign(selector, result.analyticsMetadata);\n }\n }, [result, selector]);\n};\n\nexport default useDynamicYieldTracking;\n","import classnames from 'classnames';\nimport { useMemo } from 'react';\nimport type { SwiperOptions } from 'swiper/types';\n\nimport type { SwiperBreakpointsCollection } from '../../../utility/coopSwiperBreakpoints';\nimport { CoopSwiperBreakpoints } from '../../../utility/coopSwiperBreakpoints';\nimport { useSwiperOverflowClasses } from '../../common/hooks/useSwiperOverflowClasses';\nimport { useBreakpointsSidebar } from './useBreakpoints';\n\nconst getProductTeaserContainerBreakpointAreaName = (\n containerType: 'grid' | 'list',\n hasBanner: boolean = false,\n): keyof SwiperBreakpointsCollection => {\n if (containerType === 'grid') {\n return CoopSwiperBreakpoints.AREA_NEW_PRODUCT_GRID;\n }\n\n if (hasBanner) {\n return CoopSwiperBreakpoints.AREA_NEW_PRODUCT_LIST_WITH_BANNER;\n }\n\n return CoopSwiperBreakpoints.AREA_NEW_PRODUCT_LIST;\n};\n\nexport const useVerticalProductTeaserContainer = (\n containerType: 'list' | 'grid',\n hasBanner: boolean = false,\n) => {\n const gridAdditionalClasses = classnames('Grid--gutterAxsm');\n\n const breakpointAreaName = getProductTeaserContainerBreakpointAreaName(\n containerType,\n hasBanner,\n );\n\n const { cellsInRow, breakpoints } = useBreakpointsSidebar(breakpointAreaName);\n\n const { mainSwiperClasses, spaceBetween } = useSwiperOverflowClasses();\n\n const swiperOptions: SwiperOptions = useMemo(\n () => ({ breakpoints, spaceBetween }),\n [breakpoints, spaceBetween],\n );\n return {\n gridAdditionalClasses,\n swiperOptions,\n swiperMainClass: mainSwiperClasses,\n cellsInRow,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport userFlow from '../../common/flow/userFlow';\nimport { useUserTypeQuery } from '../../common/hooks/useUserType';\nimport { UserType } from '../../common/store/structureDefinitions/userState';\n\nexport const punchoutQueryKeys = {\n orgUnit: ['punchout:orgUnit'],\n};\n\nexport const usePunchoutOrgUnit = () => {\n const userTypeQuery = useUserTypeQuery();\n\n const query = useQuery({\n queryFn: userFlow.getPunchoutUnit,\n queryKey: punchoutQueryKeys.orgUnit,\n staleTime: Infinity,\n enabled: userTypeQuery.isSuccess && userTypeQuery.data === UserType.punchout,\n });\n\n return query;\n};\n","import { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRouterContext } from '../contexts/useRouterContext';\n\ntype Path = string;\n\nexport interface AppHistoryState {\n noScroll?: boolean;\n}\n\ninterface RouteState {\n state?: AppHistoryState;\n search?: string;\n}\n\nconst isPath = (arg: Path | RouteState): arg is Path => {\n return typeof arg === 'string';\n};\n\nconst useReactRouting = () => {\n const navigate = useNavigate();\n const routerContext = useRouterContext();\n const isReactRouted = routerContext !== null;\n\n const pushPath = useCallback(\n (path: string, isRedirect: boolean = false) => {\n if (!path.startsWith('/')) {\n window.location.href = path;\n return;\n }\n\n if (isRedirect) {\n window.location.href = path;\n return;\n }\n\n if (!isReactRouted) {\n window.location.href = path;\n return;\n }\n\n navigate(path);\n },\n [isReactRouted, navigate],\n );\n\n const prepareLocation = useCallback(\n (location: RouteState) => {\n const newLocationState = { ...location };\n\n if (routerContext) {\n newLocationState.state = {\n ...location.state,\n };\n } else {\n newLocationState.state = {};\n }\n\n return newLocationState;\n },\n [routerContext],\n );\n\n const pushLocation = useCallback(\n (location: RouteState) => {\n const newLocation = prepareLocation(location);\n navigate(newLocation);\n },\n [navigate, prepareLocation],\n );\n\n const push = useCallback(\n (path: Path | RouteState, isRedirect: boolean = false) => {\n if (isPath(path)) {\n pushPath(path, isRedirect);\n return;\n }\n\n pushLocation(path);\n },\n [pushLocation, pushPath],\n );\n\n const replace = useCallback(\n (location: Path | RouteState) => {\n if (isPath(location)) {\n navigate(location);\n return;\n }\n\n const newLocation = prepareLocation(location);\n navigate(newLocation);\n },\n [navigate, prepareLocation],\n );\n\n const goBack = useCallback(() => {\n navigate(-1);\n }, [navigate]);\n\n return {\n push,\n pushLocation,\n replace,\n goBack,\n };\n};\n\nexport default useReactRouting;\n","import type { ApiDYPageContext } from '../../common/api/products/apiProductRequests';\nimport dynamicYieldFlow, {\n getStaticPageContext,\n} from '../../common/flow/dynamicYield/dynamicYieldFlow';\n\nexport const fetchProductRecommendations = async (\n recommendationId: string,\n onlyPromotions: boolean,\n storeId: string,\n pageContext?: ApiDYPageContext, // if someone wants to override pageContext\n) => {\n const context = pageContext || getStaticPageContext();\n\n if (recommendationId && context) {\n const recommendation = await dynamicYieldFlow.getProductRecommendation(\n { recommendationId, onlyPromotions },\n storeId,\n {\n data: context.data,\n type: context.type,\n location: window.location.href,\n },\n );\n return recommendation;\n }\n\n return null;\n};\n","import { appConfig } from '../../../appConfig';\nimport { urlFriendlySlug } from '../../common/utils/sanitizeUtils';\nimport { trimEnd } from '../../common/utils/stringUtils';\nimport type { SectionTreeItem } from '../components/SectionMenu';\n\nexport const buildEcommerceSectionUrl = (escapedNames: string[]) => {\n return `${trimEnd(appConfig.coopSettings.ecommerce.url, '/')}/varor/${escapedNames.join('/')}`;\n};\n\nexport const buildAbsoluteUrl = (relativeUrl: string) => {\n return window.location.origin + trimEnd(relativeUrl, '/');\n};\n\nexport const buildSubSectionUrl = (sectionTrail: SectionTreeItem[], sectionsUntilIndex: number) => {\n const subSections = sectionTrail\n .slice(0, sectionsUntilIndex + 1)\n .map((item) => item.escapedName);\n\n const url = buildEcommerceSectionUrl(subSections);\n return url;\n};\n\nexport const buildProductUrl = (\n productData: { name: string; id: string },\n sections?: { id: string; escapedName?: string }[],\n) => {\n if (!productData.name) {\n // eslint-disable-next-line no-console\n console.warn(`Incomplete product - name missing, product id: ${productData.id}`);\n }\n\n let productUrl = urlFriendlySlug(productData.name);\n const baseProductUrl = appConfig.coopSettings.ecommerce?.productBaseUrl;\n\n if (sections && sections.length > 0 && sections.every((category) => category.escapedName)) {\n const categoryUrl = sections.map((category) => category.escapedName).join('/');\n productUrl = `${baseProductUrl}${categoryUrl}/${productUrl}-${productData.id}`;\n } else {\n productUrl = `${baseProductUrl}${productUrl}-${productData.id}`;\n }\n\n return productUrl;\n};\n\nexport const buildProductRedirectUrl = (productId: string) =>\n `/redirect/ecommerce/product/${productId}`;\n","import type { AxiosInstance, AxiosRequestConfig } from 'axios';\n\nimport axiosClientFactory from '../../common/api/clients/clientFactory';\n\nconst getDirectContentApiClient = (config?: AxiosRequestConfig): AxiosInstance => {\n const directContentClient = axiosClientFactory.createLocalApiClient({\n headers: {\n 'Accept-Language': 'sv',\n 'Content-Api': true, // important, thats how content api knows it should use its own routing for friendly url\n ...config?.headers,\n },\n ...config,\n });\n\n return directContentClient;\n};\n\nexport default getDirectContentApiClient;\n","import { ensureTrailingSlash } from '../../common/utils/urlUtils';\nimport getDirectContentApiClient from './contentApiClient';\n\nconst baseUrl = '/api/episerver/v3.0/content/';\n\nexport interface ContentParams<T> {\n expand?: (keyof T | '*')[];\n select?: (keyof T)[];\n depth: number;\n}\n\nexport interface GetChildParams<T> {\n /** must end with slash / */\n url?: string;\n contentReferenceId?: string;\n expand?: (keyof T | '*')[];\n select?: (keyof T)[];\n}\n\nexport const mapContentParams = <T>(params: ContentParams<T>) => ({\n ...params,\n select: params?.select?.map((s) => encodeURIComponent(s.toString())).join(','),\n expand: params?.expand?.map((s) => encodeURIComponent(s.toString())).join(','),\n});\n\nconst getContentByUrl = async <T extends IContent>(\n url: string,\n params: ContentParams<T> = { depth: 1 },\n): Promise<T> => {\n const client = getDirectContentApiClient({\n baseURL: '', // dont add default /api here, as this endpoint needs to have URL relative to the origin\n });\n\n const urlPath = ensureTrailingSlash(url);\n\n const response = await client.get<T>(`${urlPath}extended`, {\n params: mapContentParams<T>(params),\n });\n\n return response.data;\n};\n\nconst getContentExtended = async <T extends IContent>(\n contentReferenceId: string,\n params: ContentParams<T> = { depth: 1 },\n): Promise<T> => {\n const client = getDirectContentApiClient({ baseURL: baseUrl });\n const response = await client.get<T>(`${contentReferenceId}/extended`, {\n params: mapContentParams<T>(params),\n });\n return response.data;\n};\n\nconst getContent = async <T extends IContent>(\n contentReferenceId: string,\n params: ContentParams<T> = { depth: 1 },\n): Promise<T> => {\n const client = getDirectContentApiClient({ baseURL: baseUrl });\n const response = await client.get<T>(`${encodeURIComponent(contentReferenceId)}/extended`, {\n params: mapContentParams<T>(params),\n });\n return response.data;\n};\n\nconst getMultipleContents = async <T extends IContent>(\n contentReferenceIds: string[],\n params: ContentParams<T> = { depth: 1 },\n): Promise<T[]> => {\n const client = getDirectContentApiClient({ baseURL: baseUrl });\n\n const response = await client.get<T[]>(`multiple/extended`, {\n params: {\n ...mapContentParams<T>(params),\n references: `${contentReferenceIds.map((s) => encodeURIComponent(s)).join(',')}`,\n },\n });\n return response.data;\n};\n\nconst getChildren = async <T extends IContent>(props: GetChildParams<T>): Promise<T[]> => {\n const searchParams = new URLSearchParams();\n if (props.select)\n searchParams.set(\n 'select',\n props.select.map((s) => encodeURIComponent(s.toString())).join(','),\n );\n if (props.expand)\n searchParams.set(\n 'expand',\n props.expand.map((s) => encodeURIComponent(s.toString())).join(','),\n );\n\n const serializedParams = searchParams.toString();\n let requestUrl;\n if (props.url) {\n requestUrl = `${props.url}children${serializedParams ? `?${searchParams.toString()}` : ''}`;\n } else {\n requestUrl = `${baseUrl}${props.contentReferenceId}/children${\n serializedParams ? `?${searchParams.toString()}` : ''\n }`;\n }\n\n const client = getDirectContentApiClient({ baseURL: '' });\n const response = await client.get<T[]>(requestUrl);\n return response.data;\n};\n\ntype ContentMenuNodeType = 'Link' | 'Shortcut';\n\nexport interface ContentMenuNode {\n id: number;\n name: string;\n url: string;\n segmentUrl: string;\n ancestors: ContentMenuNode[];\n nodes: ContentMenuNode[];\n type: ContentMenuNodeType;\n}\n\nconst getMenu = async (\n contentReferenceId: string,\n depth: number = 1,\n withAncestors: boolean = false,\n withContainers: boolean = false,\n): Promise<ContentMenuNode> => {\n const searchParams = new URLSearchParams();\n searchParams.set('depth', depth.toString());\n searchParams.set('withAncestors', withAncestors.toString());\n searchParams.set('withContainers', withContainers.toString());\n const serializedParams = searchParams.toString();\n const url = `${contentReferenceId}/menu${\n serializedParams ? `?${searchParams.toString()}` : ''\n }`;\n\n const client = getDirectContentApiClient({ baseURL: baseUrl });\n const response = await client.get<ContentMenuNode>(url);\n return response.data;\n};\n\nconst getMenuByUrl = async (\n url: string,\n depth: number = 1,\n withAncestors: boolean = false,\n withContainers: boolean = false,\n): Promise<ContentMenuNode> => {\n const searchParams = new URLSearchParams();\n searchParams.set('depth', depth.toString());\n searchParams.set('withAncestors', withAncestors.toString());\n searchParams.set('withContainers', withContainers.toString());\n const serializedParams = searchParams.toString();\n const apiUrl = `${url}menu${serializedParams ? `?${searchParams.toString()}` : ''}`;\n\n const client = getDirectContentApiClient();\n const response = await client.get<ContentMenuNode>(apiUrl);\n return response.data;\n};\n\nexport const contentDeliveryApi = {\n getContentByUrl,\n getContent,\n getContentExtended,\n getMultipleContents,\n getChildren,\n getMenu,\n getMenuByUrl,\n};\n","/* eslint-disable no-console */\nimport type { IEventTelemetry } from '@microsoft/applicationinsights-web';\nimport type { ComponentType, LazyExoticComponent } from 'react';\nimport { lazy } from 'react';\n\nimport { appInsights } from '../../appInsights';\nimport type { ComponentModule } from '../common/init/componentLoader';\nimport { trimEnd } from '../common/utils/stringUtils';\nimport * as EpiEmptyComponent from './components/base/EpiEmptyComponent';\n\nenum EpiComponentTypeEnum {\n Block = 'Block',\n Page = 'Page',\n PagePartial = 'PagePartial',\n}\n\ntype EpiComponentType =\n | EpiComponentTypeEnum.Block\n | EpiComponentTypeEnum.Page\n | EpiComponentTypeEnum.PagePartial;\n\nconst lazyComponents: Record<\n string,\n LazyExoticComponent<ComponentType<React.PropsWithChildren<IContent>>>\n> = {};\n\nconst getEpiComponentModule = (componentType: EpiComponentType, componentName: string) => {\n let module: Promise<ComponentModule<IContent>>;\n const cacheKey = componentName + componentType;\n\n if (lazyComponents[cacheKey]) {\n return lazyComponents[cacheKey];\n }\n\n switch (componentType) {\n case 'Block':\n module = import(`./components/blocks/${componentName}/${componentName}`);\n break;\n case 'Page':\n module = import(`./components/pages/${componentName}/${componentName}`);\n break;\n case 'PagePartial':\n module = import(`./components/pagePartials/${componentName}/${componentName}`);\n break;\n default:\n module = import(`./components/base/EpiEmptyComponent`);\n console.error(`componentLoader - could not load (default) ${componentName}`);\n break;\n }\n\n const modulePromise = new Promise<ComponentModule<IContent>>((resolve) => {\n module.then(\n (response) => {\n console.logDev(`componentLoader - loaded: ${componentName}`);\n resolve(response);\n },\n (reason) => {\n const messageText = `componentLoader - could not load ${componentName}`;\n console.error(messageText);\n console.logDev(reason);\n const message: IEventTelemetry = {\n name: messageText,\n };\n\n appInsights.trackEvent(message, { currentUrl: window.location.href });\n resolve(EpiEmptyComponent);\n },\n );\n });\n\n const lazyModule = lazy(() => modulePromise);\n lazyComponents[cacheKey] = lazyModule;\n\n return lazyModule;\n};\n\ntype ContentType = Pick<IContent, 'contentType'>;\n\nconst getEpiComponentType = (content: ContentType, options?: LoadComponentOptions) => {\n let componentType = content.contentType.find(\n (x) => x === EpiComponentTypeEnum.Block || x === EpiComponentTypeEnum.Page,\n ) as EpiComponentType;\n\n /* check if we are in the context of content area. If so if the content is a page, we need to load a partial page view later on\n consider moving that to content api expand content area resolver */\n if (componentType === EpiComponentTypeEnum.Page && options?.isContentAreaItem) {\n componentType = EpiComponentTypeEnum.PagePartial;\n }\n\n return componentType;\n};\n\nconst getEpiComponentData = (content: ContentType, options?: LoadComponentOptions) => {\n if (!content) return null;\n\n const componentType = getEpiComponentType(content, options);\n\n let contentTypeToMount = content.contentType.find((contentType) =>\n contentType.endsWith('Type'),\n );\n\n if (!contentTypeToMount && content.contentType[1]) {\n // eslint-disable-next-line prefer-destructuring\n contentTypeToMount = content.contentType[1];\n }\n\n if (!contentTypeToMount) {\n return { componentType, componentName: content.contentType?.join() };\n }\n\n let componentName = `Epi${trimEnd(contentTypeToMount, 'Type')}`;\n if (componentType === EpiComponentTypeEnum.PagePartial) {\n componentName += 'Partial';\n }\n\n return { componentType, componentName };\n};\n\nexport interface LoadComponentOptions {\n isContentAreaItem?: boolean;\n}\n\nexport const getEpiComponent = (content: ContentType, options?: LoadComponentOptions) => {\n const componentData = getEpiComponentData(content, options);\n\n if (componentData) {\n const LazyComponent = getEpiComponentModule(\n componentData?.componentType,\n componentData?.componentName,\n );\n return LazyComponent;\n }\n\n return null;\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport type { ReactNode } from 'react';\nimport { Suspense } from 'react';\n\nimport type { LoadComponentOptions } from '../../epiComponentLoader';\nimport { getEpiComponent } from '../../epiComponentLoader';\n\ninterface EpiComponentLoaderProps {\n options?: LoadComponentOptions;\n expandedValue: IContent;\n children?: (\n epiComponent: React.LazyExoticComponent<\n React.ComponentType<React.PropsWithChildren<IContent>>\n >,\n epiComponentProps: IContent,\n ) => ReactNode;\n fallback?: ReactNode;\n}\n\nconst EpiComponentLoader = (props: EpiComponentLoaderProps) => {\n const LazyComponent = getEpiComponent(props.expandedValue, props.options);\n\n if (!LazyComponent) {\n return null;\n }\n\n return (\n <Suspense fallback={props.fallback || null}>\n {props.children ? (\n props.children(LazyComponent, props.expandedValue)\n ) : (\n <LazyComponent {...props.expandedValue} />\n )}\n </Suspense>\n );\n};\n\nexport default EpiComponentLoader;\n","/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport classNames from 'classnames';\n\nimport { getCssClassForDisplayOptionWithDefaultTag } from '../../epiUtils';\nimport EpiComponentLoader from './EpiComponentLoader';\n\ninterface EpiContentAreaProps {\n items: ContentAreaItem[];\n epiTag?: DisplayOption;\n itemCssClass?: string;\n /** If you pass renderItem function, you are responsible for generating item itself as well as it's Grid cell.\n * Use contentAreaItem, contentAreaItemClasses parameters to get access to default values for items.\n */\n renderItem?: (\n componentProps: IContent,\n contentAreaItem: ContentAreaItem,\n contentAreaItemClasses: string,\n ) => React.ReactNode;\n}\n\nconst EpiContentArea = ({ items, epiTag, itemCssClass, renderItem }: EpiContentAreaProps) => {\n const areaItems = items?.filter((x) => !!x && !!x.contentLink.expanded) || [];\n\n return (\n <>\n {areaItems.map((contentAreaItem, index) => (\n <EpiComponentLoader\n expandedValue={contentAreaItem.contentLink.expanded!}\n options={{\n isContentAreaItem: true,\n }}\n key={`{${contentAreaItem.contentLink.guidValue}_${index}}`}\n >\n {(LazyComponent, epiComponentProps) => {\n const contentAreaItemClasses = classNames(\n getCssClassForDisplayOptionWithDefaultTag(\n contentAreaItem.displayOption || epiTag,\n ),\n itemCssClass,\n );\n\n return (\n <>\n {(renderItem &&\n renderItem(\n epiComponentProps,\n contentAreaItem,\n contentAreaItemClasses,\n )) || (\n <div className={contentAreaItemClasses}>\n <LazyComponent {...epiComponentProps} />\n </div>\n )}\n </>\n );\n }}\n </EpiComponentLoader>\n ))}\n </>\n );\n};\n\nexport default EpiContentArea;\n","// component used when dynamic import fails\nconst EpiEmptyComponent = () => {\n return null;\n};\n\nexport default EpiEmptyComponent;\n","import type { EpiButtonLinkPropertyBlockType } from './epiButtonLinkPropertyBlock.types';\n\nexport const mapEpiButtonLinkPropertyBlock = (props: EpiButtonLinkPropertyBlockType) => {\n return {\n linkUrl: props.link,\n target: props.target,\n };\n};\n","import type { Button } from '@coop/components';\n\nimport type { EpiButtonPropertyBlockType, EpiButtonThemes } from './EpiButtonPropertyBlock.types';\n\nexport const mapEpiButtonPropertyBlock = (\n props: EpiButtonPropertyBlockType,\n): React.ComponentPropsWithoutRef<typeof Button> => {\n return {\n theme: mapEpiButtonTheme(props.theme),\n disabled: props.disabled,\n size: props.size || 40,\n fullWidth: props.fullWidth,\n 'aria-label': props.ariaLabel || undefined,\n style: {\n marginRight:\n props.alignment === 'start' || props.alignment === 'center' ? 'auto' : undefined,\n marginLeft:\n props.alignment === 'end' || props.alignment === 'center' ? 'auto' : undefined,\n },\n children: props.text,\n };\n};\n\nexport const mapEpiButtonTheme = (theme?: EpiButtonThemes) => {\n switch (theme) {\n case 'Button--white':\n case 'Button--invertedGreen':\n return 'whiteGreen';\n case 'Button--greenDark':\n case 'Button--green':\n return 'primary';\n case 'Button--transparentWhite':\n return 'whiteOutline';\n case 'Button--transparentGreenDark':\n case 'Button--transparentGreen':\n return 'primaryOutline';\n\n case 'Button--light':\n return 'light';\n case 'Button--whiteBlack':\n return 'whiteBlack';\n case undefined:\n return 'primary';\n default:\n return exhaustiveGuard(theme);\n }\n};\n\nconst exhaustiveGuard = (_value: never): never => {\n throw new Error(\n `ERROR! Reached forbidden guard function with unexpected value: ${JSON.stringify(_value)}`,\n );\n};\n","import type { EpiImagePropertyBlock } from './epiImagePropertyBlockType';\n\nexport const mapEpiImagePropertyBlock = (imageBlock: EpiImagePropertyBlock) => {\n return {\n srcSet:\n imageBlock.images\n ?.map((item) => {\n const url = item.cloudinaryImageUrl || item.imageUrl;\n if (!url) return null;\n\n return {\n srcSet: url,\n height: item.height,\n minWidth: item.breakpointFrom || (0 as const),\n };\n })\n .filter(Boolean) || [],\n defaultImageUrl: imageBlock.defaultCloudinaryImageUrl || imageBlock.defaultImage?.url,\n defaultImageHeight: imageBlock.defaultImageHeight,\n imageAltText: imageBlock.altText,\n };\n};\n","import type { ImageTextPropertyBlockProps } from '../../../../common/components/organisms/ImageTextPropertyBlock/ImageTextPropertyBlock';\nimport { mapEpiImagePropertyBlock } from '../EpiImagePropertyBlock/epiImagePropertyBlock.utils';\nimport type { EpiRecipeAdBlockType } from './epiRecipeAdBlockType';\n\nexport const mapBlockPropToImageTextPropertyBlock = (\n adBlock: EpiRecipeAdBlockType,\n): ImageTextPropertyBlockProps => {\n const imageProperty = adBlock.imageBlock && mapEpiImagePropertyBlock(adBlock.imageBlock);\n\n return {\n imageUrl: imageProperty?.defaultImageUrl,\n imageHeight: imageProperty?.defaultImageHeight,\n srcSet: imageProperty?.srcSet,\n imageAltText: imageProperty?.imageAltText,\n ariaLabel: '',\n gaPromoCreative: adBlock.gaPromoCreative,\n gaPromoId: adBlock.gaPromoId,\n gaPromoName: adBlock.gaPromoName,\n gaPromoPosition: adBlock.gaPromoPosition,\n isClickable: true,\n target: '_self',\n contentLessHorizontalPadding: false,\n contentLessPadding: false,\n centerBlockHorizontally: false,\n centerBlockVertically: false,\n };\n};\n","import { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport { useLocation, useParams } from 'react-router-dom';\n\nimport type { ContentParams } from '../../api/contentDeliveryApi';\nimport { contentDeliveryApi } from '../../api/contentDeliveryApi';\nimport { epiPageQueryKeys } from '../../epiQueryKeys';\nimport type { EpiSitePageType } from '../pages/epiSitePageType';\n\nexport const useEpiPageByContentId = <T extends IContent>(\n contentReferenceId: string | undefined,\n params: ContentParams<T>,\n queryOptions?: Pick<Parameters<typeof useQuery<T>>[0], 'enabled' | 'staleTime' | 'gcTime'>,\n) => {\n const query = useQuery({\n queryKey: epiPageQueryKeys.getByContentReference(contentReferenceId!, params),\n queryFn: () => contentDeliveryApi.getContentExtended<T>(contentReferenceId!, params),\n staleTime: 1000 * 60 * 1,\n placeholderData: keepPreviousData,\n enabled: !!contentReferenceId,\n ...queryOptions,\n });\n\n return query;\n};\n\nexport const useEpiPageByUrl = <T extends IContent>(\n route: string,\n params: ContentParams<T> | undefined = undefined,\n) => {\n const query = useQuery({\n queryKey: epiPageQueryKeys.getByUrl(route, params),\n queryFn: () => contentDeliveryApi.getContentByUrl<T>(route, params),\n staleTime: 1000 * 60 * 1,\n placeholderData: keepPreviousData,\n enabled: !!route,\n });\n\n return query;\n};\n\nexport const useCurrentPageEpiBasePath = (allowWildCards: boolean) => {\n const location = useLocation();\n const pathParams = useParams<Record<string, string>>();\n\n const clientOnlySegments =\n Object.entries(pathParams)\n .filter((item) => item[0] !== '*' || allowWildCards)\n ?.map((item) => ({\n segment: item[0],\n value: item[1],\n })) || [];\n const firstClientOnlySegmentValue = clientOnlySegments[0]?.value;\n\n const firstClientOnlyParamIndex =\n firstClientOnlySegmentValue && location.pathname.indexOf(firstClientOnlySegmentValue);\n\n // strip client-side route segment, so that only the exact Epi page URL is sent to Content Delivery API\n let basePath = location.pathname;\n if (firstClientOnlyParamIndex && firstClientOnlyParamIndex > -1) {\n basePath = basePath.substring(0, firstClientOnlyParamIndex);\n }\n\n // if we fuck up routers uncomment this\n // const basePathTrimmed = trimEnd(basePath, '/');\n return basePath;\n};\n\nexport const useCurrentEpiPage = <T extends EpiSitePageType>(\n params: ContentParams<T> = { depth: 1 },\n allowWildCards?: boolean,\n) => {\n const basePath = useCurrentPageEpiBasePath(!!allowWildCards);\n\n const query = useQuery<T>({\n queryKey: epiPageQueryKeys.getByUrl(basePath, params),\n queryFn: () => contentDeliveryApi.getContentByUrl<T>(basePath, params),\n staleTime: 1000 * 60 * 1,\n placeholderData: keepPreviousData,\n enabled: !!basePath,\n });\n\n return query;\n};\n","import type { QueryKey } from '@tanstack/react-query';\n\nimport { ensureLeadingSlash, trimEnd } from '../common/utils/stringUtils';\nimport type { ContentParams } from './api/contentDeliveryApi';\n\nconst EPI_PAGE_KEY = 'epiPage';\nconst BY_URL_KEY = 'byUrl';\nconst BY_CONTENT_REFERENCE_KEY = 'byContentReference';\n\nconst getEpiPageByUrlQueryKey = <T extends IContent>(\n route: string,\n params: ContentParams<T> | undefined = undefined,\n) => [...epiPageQueryKeys.byUrl, ensureLeadingSlash(trimEnd(route, '/')), params] as const;\n\nconst getEpiPageByContentReferenceQueryKey = <T extends IContent>(\n contentReferenceId: string,\n params: ContentParams<T>,\n) => [...epiPageQueryKeys.byContentReference, contentReferenceId, params] as const;\n\nexport const epiPageQueryKeys = {\n all: [EPI_PAGE_KEY] as const,\n byUrl: [EPI_PAGE_KEY, BY_URL_KEY] as const,\n byContentReference: [EPI_PAGE_KEY, BY_CONTENT_REFERENCE_KEY] as const,\n getByUrl: getEpiPageByUrlQueryKey,\n getByContentReference: getEpiPageByContentReferenceQueryKey,\n};\n\nexport const isEpiPageByUrlQueryKey = (\n queryKey: QueryKey,\n): queryKey is ReturnType<typeof epiPageQueryKeys.getByUrl> =>\n Array.isArray(queryKey) && queryKey[0] === EPI_PAGE_KEY && queryKey[1] === BY_URL_KEY;\n\nexport const isEpiPageByContentReferenceQueryKey = (\n queryKey: QueryKey,\n): queryKey is ReturnType<typeof epiPageQueryKeys.getByContentReference> =>\n Array.isArray(queryKey) &&\n queryKey[0] === EPI_PAGE_KEY &&\n queryKey[1] === BY_CONTENT_REFERENCE_KEY;\n","import { appConfig } from '../../appConfig';\nimport type { PageHeadData } from '../common/components/atoms/PageHead';\nimport { ensureTrailingSlash } from '../common/utils/urlUtils';\nimport type { EpiPageTypes } from './components/pages/epiPageTypes';\nimport type { EpiSitePageType } from './components/pages/epiSitePageType';\n\nexport const getCssClassForDisplayOptionWithDefaultTag = (name: DisplayOption) => {\n const potentialCssClass = appConfig.coopSettings.epi.blockDisplayOptionToCssClass[name];\n\n if (potentialCssClass) {\n return `${appConfig.coopSettings.epi.baseChildrenCssClass} ${potentialCssClass}`;\n }\n\n return appConfig.coopSettings.epi.baseChildrenCssClass;\n};\n\nexport const filterContentArea = <T extends IContent>(\n contentArea: ContentAreaItem[],\n predicate: (content: IContent) => content is T,\n): T[] => {\n const contents =\n contentArea\n ?.map((x) => x.contentLink?.expanded)\n .filter(Boolean)\n .filter(predicate) || [];\n return contents;\n};\n\nexport const filterContent = <T extends IContent>(\n contentItems: IContent[],\n predicate: (content: IContent) => content is T,\n): T[] => {\n const filteredContents = contentItems?.filter(predicate) || [];\n return filteredContents;\n};\n\nexport const filterContentType = <T extends EpiPageTypes[keyof EpiPageTypes]>(\n contents: IContent[],\n contentType: keyof EpiPageTypes,\n): T[] => {\n return (contents?.filter((item) => item.contentType.includes(contentType)) as T[]) || [];\n};\n\n/**\n * Use with caution, EPI adds ?epieditmode=True in edit mode, but so can users\n */\nexport const isEpiEditMode = () =>\n new URLSearchParams(window.location.search).get('epieditmode') === 'True';\n\nexport const editTableProp = (name: string) => (window.epi?.inEditMode ? name : undefined);\n\nexport const mapEpiPageHeadData = (page: EpiSitePageType): PageHeadData => {\n const canonicalUrl = page.canonicalUrl && ensureTrailingSlash(page.canonicalUrl);\n\n return {\n title: page.pageTitle,\n link: {\n canonical: canonicalUrl,\n },\n meta: {\n description: page.metaDescription,\n 'og:url': canonicalUrl,\n 'og:description': page.metaDescription,\n },\n };\n};\n\nexport const isEpiPageViewSettings = (page: IContent): page is PageViewSettingsIContent => {\n return 'contentPageSize' in (page as PageViewSettingsIContent);\n};\n\nexport const isContentReference = (input: unknown): input is ContentReference => {\n return 'url' in (input as ContentReference);\n};\n","export const MEMBER_CONSENT_QUERY = 'memberConsent';\nexport const MEMBER_CONSENT_NEWSLETTERS_EMAIL = [\n 'coop_offers',\n 'xtra_offers',\n 'member_association',\n 'membership_program',\n];\n\nexport const MEMBER_CONSENT_NEWSLETTERS_SMS = 'sms';\nexport const MEMBER_CONSENT_NEWSLETTER_STORE = 'coop_offers';\n\n// Remove later when Bloomreach is in use\nexport const ADOBE_MEMBER_CONSENT_NEWSLETTERS_EMAIL = [\n 'cooOnline',\n 'cooDRDigital',\n 'cooPartnermail',\n 'cooNewsletter',\n];\n","import { useQuery } from '@tanstack/react-query';\n\nimport kimProxyFlow from '../../common/flow/kimProxyFlow';\nimport { kimCustomerDataQueryKeys } from '../memberQueries';\n\nexport const useKimCustomerDataQuery = (enabled: boolean) => {\n const query = useQuery({\n queryKey: kimCustomerDataQueryKeys.defaultDataSet(),\n queryFn: async () => {\n return kimProxyFlow.getCustomerData();\n },\n enabled,\n });\n\n return query;\n};\n","import type { CustomerDataMinimized } from '../common/models/kimProxy/customerData';\n\nconst kimPhoneNumber = (customerData?: CustomerDataMinimized) => {\n const phoneNumber =\n customerData?.addresses?.find((x) => x.typeOfAddress === 'TEL_MOB')?.address || null;\n\n return phoneNumber;\n};\n\nconst kimPhoneNumberVerified = (customerData?: CustomerDataMinimized) => {\n const phoneNumberVerified =\n customerData?.addresses?.find((x) => x.typeOfAddress === 'TEL_MOB')?.addressVerified ||\n false;\n\n return phoneNumberVerified;\n};\n\nexport default {\n kimPhoneNumber,\n kimPhoneNumberVerified,\n};\n","export const autoVoucherStatusQueryKey = ['autoVoucherStatus'];\nexport const kimCustomerDataQueryKeys = {\n all: ['kimCustomerData'],\n defaultDataSet: () => [...kimCustomerDataQueryKeys.all],\n fullDatSet: () => [...kimCustomerDataQueryKeys.all, 'kimCustomerDataFull'],\n byEmail: (email: string) => [...kimCustomerDataQueryKeys.all, 'kimCustomerEmail', email],\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport loyaltyFlow from '../../../common/flow/loyaltyFlow';\nimport { pointsQueryKeys } from '../pointsQueryKeys';\n\nexport const useEligibleForBonus = (enabled: boolean = true) => {\n const query = useQuery({\n queryKey: pointsQueryKeys.eliableForBonus,\n queryFn: loyaltyFlow.getEligibleForBonus,\n retry: 1,\n enabled,\n staleTime: 1000 * 60 * 5, // 5 minutes\n });\n\n return query;\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport loyaltyFlow from '../../../common/flow/loyaltyFlow';\nimport { pointsQueryKeys } from '../pointsQueryKeys';\n\nexport const useHouseholdPointBalance = (enabled: boolean = true) => {\n const query = useQuery({\n queryKey: pointsQueryKeys.householdMonetaryBalance,\n queryFn: loyaltyFlow.getPointBalance,\n retry: 0,\n enabled,\n });\n\n return query;\n};\n","export const pointsQueryKeys = {\n eliableForBonus: ['eliableForBonus'],\n expiringPoints: ['expiringPoints'],\n expiringPointsByNumberMonths: (months: number) => [...pointsQueryKeys.expiringPoints, months],\n allOffers: ['allPointOffers'],\n\n pointBalanceByMonth: (month: number) => ['pointBalanceByMonth', month],\n previousMonthsBonus: ['previousMonthsBonus'],\n householdBalance: ['householdPointBalance'],\n householdMonetaryBalance: ['householdMonetaryBalance'],\n pointsMatrixStructureLevel: ['pointsMatrixStructureLevel'],\n member20PointsSummary: ['pointsSummary'],\n member20PointsSummaryYearly: ['pointsSummaryYearly'],\n};\n\nexport const searchedPointOffer = {\n all: ['searchedPointOffers'],\n byIds: (ids: number[]) => [...searchedPointOffer.all, ids],\n};\n\nexport const offerPropositionHistory = {\n all: ['offerPropositionHistory'],\n byRedeemed: (includedRedeemed: boolean) => [...offerPropositionHistory.all, includedRedeemed],\n byDate: (from: Date, to: Date, page: number, pageSize: number) => [\n ...offerPropositionHistory.all,\n from,\n to,\n page,\n pageSize,\n ],\n};\n\nexport const vklVoucherDetails = {\n all: ['vklVoucherDetails'],\n byTransactionGuid: (guid: string) => [...vklVoucherDetails.all, guid],\n};\n","import { ConfirmInfo } from '@coop/components';\nimport classNames from 'classnames';\nimport type { FC } from 'react';\nimport type React from 'react';\nimport { useState } from 'react';\n\nimport { Helpers } from '../../../../utility/helpers';\nimport { useMyCoopSettingsPageQuery } from '../../hooks/useMyCoopSettingsPageQuery';\nimport styles from './BonusInfoConfirm.module.scss';\n\nexport interface BonusInfoConfirmProps {\n monetaryWorth: number;\n cssClasses: string;\n onClickOpen?: () => void;\n points: number;\n}\n\nconst BonusInfoConfirm: FC<React.PropsWithChildren<BonusInfoConfirmProps>> = (props) => {\n const { data: myCoopSettings } = useMyCoopSettingsPageQuery();\n\n const [show, setShow] = useState(false);\n const handleOpenClick = () => {\n setShow(true);\n };\n\n return (\n <>\n <button\n className={classNames(props.cssClasses, styles.Button)}\n type=\"button\"\n onClick={() => {\n handleOpenClick();\n props.onClickOpen?.();\n }}\n aria-label={`Motsvarar ${props.monetaryWorth} kronor hos Coop, där ${props.points} poäng ger detta belopp`}\n aria-haspopup=\"dialog\"\n >\n Motsvarar{' '}\n <span className=\"u-textWeightBold \">\n {Helpers.formatMemberPointsAndAmount(props.monetaryWorth)}\n </span>{' '}\n kr hos Coop\n </button>\n {myCoopSettings?.bonusInfoNotificationHeadline &&\n myCoopSettings?.bonusInfoNotificationText && (\n <ConfirmInfo\n show={show}\n heading={myCoopSettings.bonusInfoNotificationHeadline}\n message={myCoopSettings.bonusInfoNotificationText}\n close={() => setShow(false)}\n />\n )}\n </>\n );\n};\n\nexport default BonusInfoConfirm;\n","// extracted by mini-css-extract-plugin\nexport default {\"Button\":\"N20qN_7E\"};","import { useQuery } from '@tanstack/react-query';\n\nimport { appConfig } from '../../../../appConfig';\nimport kimProxyFlow from '../../../common/flow/kimProxyFlow';\nimport { consentSubscriptionsKeys } from '../../myCoopQueries';\n\nconst useConsentQuery = (enabled: boolean, neoId?: string) => {\n const mmid = appConfig.coopUserSettings.profile?.medmeraId?.toString();\n const email = appConfig.coopUserSettings.profile?.email?.toString();\n\n let queryKeyName: string[] = [];\n if (neoId) queryKeyName = consentSubscriptionsKeys.consentSubscriptionsByNeoId(neoId);\n else if (mmid) queryKeyName = consentSubscriptionsKeys.consentSubscriptionsByMmId(mmid);\n else if (email) queryKeyName = consentSubscriptionsKeys.consentSubscriptionsByEmail(email);\n\n const query = useQuery({\n queryKey: queryKeyName,\n queryFn: () => kimProxyFlow.getConsents(neoId),\n retry: 0,\n enabled: enabled && queryKeyName.length > 0 && !!queryKeyName,\n });\n\n return query;\n};\n\nexport default useConsentQuery;\n","import { useQuery } from '@tanstack/react-query';\n\nimport { appConfig } from '../../../../appConfig';\nimport { consentAdobeSubscriptionFlow } from '../../../common/flow/consentAdobeSubscriptionFlow';\nimport { getNeoId } from '../../../common/utils/neoIdUtils';\nimport { adobeConsentSubscriptionsKeys } from '../../myCoopQueries';\n\nconst useEmailSubscriptionQuery = (preferNeoId: boolean | undefined, enabled: boolean) => {\n const neoId = (preferNeoId && getNeoId()) || undefined;\n const mmid = appConfig.coopUserSettings.profile?.medmeraId?.toString();\n const email = appConfig.coopUserSettings.profile?.email?.toString();\n\n let queryKeyName: string[] = [];\n\n if (neoId) queryKeyName = adobeConsentSubscriptionsKeys.consentSubscriptionsByNeoId(neoId);\n else if (mmid) queryKeyName = adobeConsentSubscriptionsKeys.consentSubscriptionsByMmId(mmid);\n else if (email) queryKeyName = adobeConsentSubscriptionsKeys.consentSubscriptionsByEmail(email);\n\n const query = useQuery({\n queryKey: queryKeyName,\n queryFn: () => consentAdobeSubscriptionFlow.getSubscriptions(preferNeoId),\n retry: 0,\n enabled: enabled && queryKeyName.length > 0 && !!queryKeyName,\n });\n\n return query;\n};\n\nexport default useEmailSubscriptionQuery;\n","import { appConfig } from '../../../appConfig';\nimport { useEpiPageByContentId } from '../../episerver/components/hooks/useCurrentEpiPage';\nimport type { EpiMyCoopSettingsPageType } from '../../episerver/components/pages/EpiMyCoopSettingsPage/epiMyCoopSettingsPageType';\n\nexport const useMyCoopSettingsPageQuery = (\n selectedFields?: (keyof EpiMyCoopSettingsPageType)[] | undefined,\n) =>\n useEpiPageByContentId<EpiMyCoopSettingsPageType>(\n appConfig.coopSettings.myCoop.myCoopSettingsPageContentId,\n {\n depth: 1,\n select: selectedFields,\n },\n { gcTime: 1000 * 60 * 5 },\n );\n","export const savedCartQueryKeys = {\n all: ['savedCarts'],\n byPaging: (page: number, pageSize: number) => [...savedCartQueryKeys.all, page, pageSize],\n};\n\nexport const subscriptionsQueryKeys = {\n all: ['subscriptions'],\n byId: (id: string) => [...subscriptionsQueryKeys.all, id],\n timeslots: (subId: string) => [...subscriptionsQueryKeys.all, 'subscriptionTimeslots', subId],\n klarnaSnippet: ['subscriptionsKlarnaSnippet'],\n};\n\nexport const orderReclamationsQueryKey = ['orderReclamations'];\nexport const deliveryAddressQueryKey = ['deliveryAddress'];\nexport const connectedCardsQueryKey = ['connectedCards'];\n\nexport const lastOrdersQueryKeys = {\n all: ['lastOrders'],\n byId: (id: string | undefined) => [...lastOrdersQueryKeys.all, id],\n};\n\nexport const myCoopProfileMenuKeys = {\n all: ['myCoopProfileMenu'],\n settingsPage: ['myCoopSettingsPage'],\n};\n\nexport const myCoopHouseholdKeys = {\n householdMembers: ['householdMembers'],\n};\n\nexport const associationNamesQueryKey = ['associationNames'];\n\nexport const householdMemberQueryKeys = {\n addHouseholdMember: (personalNumber: string) => ['addHouseholdMember', personalNumber],\n};\n\n// Poänguttag - Pointitem purchases\nexport const pointItemWithdrawalHistoryKeys = {\n all: ['pointItemWithdrawalHistory'],\n byDate: (from: Date, to: Date, page: number, size: number) => [\n ...pointItemWithdrawalHistoryKeys.all,\n from,\n to,\n page,\n size,\n ],\n};\n\n// Poänghistorik - point history\nexport const pointHistoryKeys = {\n all: ['pointHistory'],\n byDate: (from: Date, page: number, size: number) => [...pointHistoryKeys.all, from, page, size],\n};\n\n// Köphistorik - Money purchase history\nexport const purchaseHistoryKeys = {\n all: ['purchaseHistory'],\n byDate: (from: Date, page: number, size: number) => [\n ...purchaseHistoryKeys.all,\n from,\n page,\n size,\n ],\n};\n\nexport const consentSubscriptionsKeys = {\n all: ['consentSubscriptions'],\n consentSubscriptionsByNeoId: (neoId: string) => [...consentSubscriptionsKeys.all, neoId],\n consentSubscriptionsByMmId: (mmId: string) => [...consentSubscriptionsKeys.all, mmId],\n consentSubscriptionsByEmail: (email: string) => [...consentSubscriptionsKeys.all, email],\n};\n\n// Remove later when bloomreach is in place\nexport const adobeConsentSubscriptionsKeys = {\n all: ['adobeConsentSubscriptions'],\n consentSubscriptionsByNeoId: (neoId: string) => [\n ...adobeConsentSubscriptionsKeys.all,\n `neo:${neoId}`,\n ],\n consentSubscriptionsByMmId: (mmId: string) => [...adobeConsentSubscriptionsKeys.all, mmId],\n consentSubscriptionsByEmail: (email: string) => [...adobeConsentSubscriptionsKeys.all, email],\n};\n\nexport const consentSubscribeToggleKeys = {\n consentSubscribeByNeoId: (neoId: string) => ['consentSubscribeNeo', neoId],\n consentSubscribeByMmId: (mmId: string) => ['consentSubscribe', mmId],\n consentUnsubscribeByNeoId: (neoId: string) => ['consentUnsubscribeNeo', neoId],\n consentUnsubscribeByMmId: (mmId: string) => ['consentUnsubscribe', mmId],\n};\n","import { Confirm, ConfirmAlert, ConfirmInfo, Notification } from '@coop/components';\nimport type { FC } from 'react';\nimport * as React from 'react';\nimport { useReducer } from 'react';\n\nconst DEFAULT_NOTIFICATION_MILLIS = 2000;\n\nconst initialState: NotificationContextStateType = {\n confirmData: {\n type: 'confirm',\n title: '',\n message: undefined,\n confirm: undefined,\n cancel: undefined,\n onConfirm: () => {},\n onCancel: undefined,\n isOpen: false,\n isLoading: false,\n close: () => {},\n },\n notificationData: {\n show: false,\n type: 'success',\n message: undefined,\n hideAfterMiliseconds: DEFAULT_NOTIFICATION_MILLIS,\n },\n};\n\ninterface NotificationContextStateType {\n confirmData: {\n type: 'confirm' | 'alert' | 'info';\n title: string;\n message?: string;\n confirm?: string;\n cancel?: string;\n onConfirm: () => void;\n onCancel?: () => void;\n close: () => void;\n isOpen: boolean;\n isLoading?: boolean;\n };\n notificationData: {\n show: boolean;\n type: 'success' | 'alert';\n message: string | undefined;\n hideAfterMiliseconds: number;\n };\n}\n\nexport type NotificationContextActions =\n | { type: 'set_confirm_is_open'; isOpen: boolean }\n | {\n type: 'set_confirm_data';\n confirmData: {\n type: 'confirm' | 'alert' | 'info';\n title: string;\n message: string;\n confirm: string;\n cancel: string;\n onConfirm: () => void;\n onCancel?: () => void;\n close: () => void;\n isOpen: boolean;\n topLevel?: boolean;\n };\n }\n | {\n type: 'set_notification_data';\n notificationData: {\n show: boolean;\n type: 'success' | 'alert';\n message: string;\n hideAfterMiliseconds?: number;\n };\n }\n | { type: 'close_notification' }\n | { type: 'set_loading'; status: boolean };\n\nconst NotificationContextDispatch = React.createContext<React.Dispatch<NotificationContextActions>>(\n () => null,\n);\n\nconst NotificationContextState = React.createContext<NotificationContextStateType>(initialState);\n\nconst reducer = (state: NotificationContextStateType, action: NotificationContextActions) => {\n switch (action.type) {\n case 'set_confirm_is_open': {\n return {\n ...state,\n confirmData: {\n ...state.confirmData,\n isOpen: action.isOpen,\n isLoading: false,\n },\n };\n }\n case 'set_loading': {\n return {\n ...state,\n confirmData: {\n ...state.confirmData,\n isLoading: action.status,\n },\n };\n }\n case 'set_confirm_data': {\n return {\n ...state,\n confirmData: {\n ...state.confirmData,\n ...action.confirmData,\n },\n };\n }\n case 'set_notification_data': {\n return {\n ...state,\n notificationData: {\n ...state.notificationData,\n ...action.notificationData,\n hideAfterMiliseconds:\n action.notificationData.hideAfterMiliseconds || DEFAULT_NOTIFICATION_MILLIS,\n },\n };\n }\n case 'close_notification': {\n return {\n ...state,\n notificationData: {\n ...state.notificationData,\n show: false,\n },\n };\n }\n default: {\n return {\n ...state,\n };\n }\n }\n};\n\nconst NotificationStateProvider: FC<React.PropsWithChildren<unknown>> = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <NotificationContextDispatch.Provider value={dispatch}>\n {children}\n <NotificationContextState.Provider value={state}>\n {state.confirmData.type === 'confirm' && (\n <Confirm\n heading={state.confirmData.title}\n message={state.confirmData.message}\n confirmButtonText={state.confirmData.confirm}\n cancelButtonText={state.confirmData.cancel}\n show={state.confirmData.isOpen}\n onConfirm={state.confirmData.onConfirm}\n onCancel={state.confirmData.onCancel}\n isLoading={state.confirmData.isLoading}\n close={state.confirmData.close}\n />\n )}\n\n {state.confirmData.type === 'alert' && (\n <ConfirmAlert\n heading={state.confirmData.title}\n message={state.confirmData.message}\n confirmButtonText={state.confirmData.confirm}\n cancelButtonText={state.confirmData.cancel}\n show={state.confirmData.isOpen}\n onConfirm={state.confirmData.onConfirm}\n onCancel={state.confirmData.onCancel}\n isLoading={state.confirmData.isLoading}\n close={state.confirmData.close}\n />\n )}\n\n {state.confirmData.type === 'info' && (\n <ConfirmInfo\n heading={state.confirmData.title}\n message={state.confirmData.message}\n show={state.confirmData.isOpen}\n isLoading={state.confirmData.isLoading}\n close={state.confirmData.close}\n />\n )}\n\n <Notification\n show={state.notificationData.show}\n type={state.notificationData.type}\n close={() => dispatch({ type: 'close_notification' })}\n message={state.notificationData.message}\n hideAfterMiliseconds={state.notificationData.hideAfterMiliseconds}\n />\n </NotificationContextState.Provider>\n </NotificationContextDispatch.Provider>\n );\n};\n\nexport { NotificationContextDispatch, NotificationContextState, NotificationStateProvider };\n","// extracted by mini-css-extract-plugin\nexport default {\"List\":\"vfqN_Jlx\",\"ProfileMenuAccordion\":\"jpnD1w74\",\"ProfileMenuAccordionItem\":\"zQSA8hT4\",\"AccordionHeader\":\"w8DFxMda\",\"AccordionItem\":\"OUixFbxG\",\"Container\":\"TyXkjLC_\",\"Item\":\"NWsphqoc\",\"Trigger\":\"X1eTklmJ\",\"SubLevel\":\"yPhRzVnS\",\"isActive\":\"rWwJESKl\",\"AccordionContent\":\"oH4ugInF\",\"Link\":\"CNXdNmSU\",\"AccordionItemName\":\"w5OF3uKY\",\"AccordionItemNameSideMenu\":\"aI6BPFEG\"};","import type { MyCoopProfileMenuItem } from '../../../episerver/api/localContentApi';\n\nexport const getTopActivePage = (page: MyCoopProfileMenuItem, activePageId: number) => {\n if (page.id === activePageId) {\n return page.id;\n }\n\n if (page.menuItemChildren && page.menuItemChildren.length > 0) {\n if (page.menuItemChildren.some((child) => !!getTopActivePage(child, activePageId))) {\n return page.id;\n }\n }\n\n return undefined;\n};\n","/* eslint-disable unused-imports/no-unused-vars */\nimport { Accordion } from '@coop/components';\nimport classnames from 'classnames';\nimport { type FC, useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { isAriaCurrentPage } from '../../../common/utils/accessibilityUtils';\nimport { urlFriendlySlug } from '../../../common/utils/sanitizeUtils';\nimport type { MyCoopProfileMenuItem } from '../../../episerver/api/localContentApi';\nimport styles from './ProfileMenuList.module.scss';\nimport { getTopActivePage } from './ProfileMenuList.utils';\n\ninterface ProfileMenuListProps {\n pages: MyCoopProfileMenuItem[];\n activePageId?: number;\n onItemClick?: (\n e: React.MouseEvent<HTMLAnchorElement>,\n item: MyCoopProfileMenuItem,\n parentItem?: MyCoopProfileMenuItem,\n ) => void;\n onItemOpen?: (item: MyCoopProfileMenuItem) => void;\n onItemClose?: (item: MyCoopProfileMenuItem) => void;\n isSideMenu?: boolean;\n}\n\nconst getMenuPageById = (pages: MyCoopProfileMenuItem[], id: string) => {\n return pages.find((page) => page.id === Number(id));\n};\n\nconst ProfileMenuList: FC<React.PropsWithChildren<ProfileMenuListProps>> = (props) => {\n const { pathname } = useLocation();\n const previouslyExpandedRef = useRef<string>('');\n const [expandedId, setExpandedId] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n if (props.activePageId) {\n const expandedPageId = props.pages\n .find((page) => !!getTopActivePage(page, props.activePageId!))\n ?.id.toString();\n\n setExpandedId(expandedPageId || ''); // Accordion uses empty string to indicate collapsed item\n }\n }, [props.activePageId, props.pages]);\n\n return (\n <nav aria-label=\"Profilmenyn\" className={styles.List}>\n <Accordion.Root\n collapsible\n type=\"single\"\n className={styles.ProfileMenuAccordion}\n asChild\n value={expandedId}\n onValueChange={(_expandedId) => {\n if (_expandedId) {\n const expandedItem = getMenuPageById(props.pages, _expandedId);\n if (expandedItem) {\n props.onItemOpen?.(expandedItem);\n }\n } else {\n const expandedItem = getMenuPageById(\n props.pages,\n previouslyExpandedRef.current,\n );\n if (expandedItem) {\n props.onItemClose?.(expandedItem);\n }\n }\n\n setExpandedId(_expandedId);\n previouslyExpandedRef.current = _expandedId;\n }}\n rounded\n >\n <ul className={classnames(props.isSideMenu && styles.Container)}>\n {props.pages.map((myCoopProfilePage: MyCoopProfileMenuItem) => (\n <MenuItemAccordion\n currentPath={pathname}\n key={myCoopProfilePage.id}\n item={myCoopProfilePage}\n level={1}\n activePageId={props.activePageId}\n onItemClick={props.onItemClick}\n onItemOpen={props.onItemOpen}\n onItemClose={props.onItemClose}\n isSideMenu={props.isSideMenu}\n />\n ))}\n </ul>\n </Accordion.Root>\n </nav>\n );\n};\n\nconst Link = React.forwardRef<HTMLAnchorElement, React.ComponentPropsWithoutRef<'a'>>(\n (props, ref) => {\n const {\n 'aria-expanded': ariaExpanded,\n 'aria-controls': ariaControls,\n type,\n ...rest\n } = props;\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <a {...rest} ref={ref}>\n {props.children}\n </a>\n );\n },\n);\n\nconst MenuItemAccordion: FC<\n React.PropsWithChildren<{\n currentPath: string;\n item: MyCoopProfileMenuItem;\n level: number;\n activePageId?: number;\n onItemClick?: (\n e: React.MouseEvent<HTMLAnchorElement>,\n item: MyCoopProfileMenuItem,\n parentItem?: MyCoopProfileMenuItem,\n ) => void;\n onItemOpen?: (item: MyCoopProfileMenuItem) => void;\n onItemClose?: (item: MyCoopProfileMenuItem) => void;\n isSideMenu?: boolean;\n }>\n> = ({\n currentPath,\n item: menuPageItem,\n level,\n activePageId,\n onItemClick,\n onItemOpen,\n onItemClose,\n isSideMenu,\n}) => {\n // business requirement to show expandable children only on level 1\n const hasChildren = menuPageItem.menuItemChildren.length > 0 && level < 2;\n\n const active = !!activePageId && !!getTopActivePage(menuPageItem, activePageId);\n const ariaCurrentPage = active && isAriaCurrentPage(menuPageItem.url || '', currentPath);\n\n return (\n <Accordion.Item\n className={styles.ProfileMenuAccordionItem}\n value={menuPageItem.id.toString()}\n asChild\n key={menuPageItem.id}\n >\n <li>\n <Accordion.Header asChild className={styles.AccordionHeader}>\n {hasChildren ? (\n <Accordion.Trigger className={styles.Trigger}>\n <div\n className={styles.AccordionItem}\n data-test={`profileMenuItem-${urlFriendlySlug(menuPageItem.name)}`}\n >\n <div\n className={classnames(\n styles.AccordionItemName,\n isSideMenu ? styles.AccordionItemNameSideMenu : '',\n )}\n >\n {menuPageItem.name}\n </div>\n </div>\n </Accordion.Trigger>\n ) : (\n <Accordion.Trigger\n className={classnames(\n styles.Trigger,\n level > 1 && styles.SubLevel,\n active && styles.isActive,\n styles.Item,\n )}\n asChild\n withChevron={false}\n aria-current={ariaCurrentPage}\n >\n <Link\n href={menuPageItem.url}\n key={`${menuPageItem.id}`}\n onClick={(e) => onItemClick?.(e, menuPageItem)}\n >\n <div\n className={styles.AccordionItem}\n data-test={`profileMenuItem-${urlFriendlySlug(\n menuPageItem.name,\n )}`}\n >\n <div className={styles.Link}>{menuPageItem.name}</div>\n </div>\n </Link>\n </Accordion.Trigger>\n )}\n </Accordion.Header>\n {hasChildren && (\n <Accordion.Content>\n <Accordion.Root\n collapsible\n type=\"single\"\n className={classnames(\n styles.ProfileMenuAccordion,\n styles.AccordionContent,\n )}\n asChild\n value={activePageId?.toString()}\n >\n <ul>\n {menuPageItem.menuItemChildren.map((myCoopProfileChildPage) => (\n <MenuItemAccordion\n currentPath={currentPath}\n key={myCoopProfileChildPage.id}\n item={myCoopProfileChildPage}\n level={level + 1}\n activePageId={activePageId}\n onItemClick={(e) =>\n onItemClick?.(e, myCoopProfileChildPage, menuPageItem)\n }\n onItemOpen={onItemOpen}\n onItemClose={onItemClose}\n isSideMenu={isSideMenu}\n />\n ))}\n </ul>\n </Accordion.Root>\n </Accordion.Content>\n )}\n </li>\n </Accordion.Item>\n );\n};\n\nexport default ProfileMenuList;\n","import type { FC } from 'react';\nimport * as React from 'react';\n\nimport { TooltipOnHover } from '../../../common/components/atoms/Tooltip';\nimport type { SharedRecipe } from '../../models';\n\ninterface CommonRecipesTooltipProps {\n sharedRecipes: SharedRecipe[];\n}\n\nconst CommonRecipesTooltip: FC<React.PropsWithChildren<CommonRecipesTooltipProps>> = (props) => {\n const recipeNamesJoinedText = props.sharedRecipes.map((recipe, index) => {\n return (\n <React.Fragment key={recipe.code}>\n {index > 0 ? ' och ' : ''}\n <span className=\"u-colorGreen\">{recipe.name}</span>\n </React.Fragment>\n );\n });\n\n const TooltipContent = <span>Den här produkten ingÃ¥r i recepten {recipeNamesJoinedText}</span>;\n\n return <TooltipOnHover content={TooltipContent}>{props.children}</TooltipOnHover>;\n};\n\nexport default CommonRecipesTooltip;\n","import type { FC } from 'react';\nimport * as React from 'react';\n\nimport { TooltipOnHover } from '../../../common/components/atoms/Tooltip';\nimport type { SharedRecipe } from '../../models';\n\ninterface SharedRecipesTooltipProps {\n sharedRecipes: SharedRecipe[];\n}\n\nconst SharedRecipesTooltip: FC<React.PropsWithChildren<SharedRecipesTooltipProps>> = (props) => {\n const recipeNamesJoinedText = props.sharedRecipes.map((recipe, index) => {\n return (\n <React.Fragment key={recipe.code}>\n {index > 0 ? ' och ' : ''}\n <span className=\"u-colorGreen\">{recipe.name}</span>\n </React.Fragment>\n );\n });\n\n const TooltipContent = (\n <span>Den här produkten delas mellan recepten {recipeNamesJoinedText}</span>\n );\n\n return <TooltipOnHover content={TooltipContent}>{props.children}</TooltipOnHover>;\n};\n\nexport default SharedRecipesTooltip;\n","import { Chip, Icon } from '@coop/components';\nimport { PaperIcon } from '@coop/icons';\nimport type { FC } from 'react';\nimport type React from 'react';\n\nimport type { RecipeSectionType, SharedRecipe } from '../../models';\nimport CommonRecipesTooltip from '../CommonRecipesTooltip/CommonRecipesTooltip';\nimport SharedRecipesTooltip from '../SharedRecipesTooltip/SharedRecipesTooltip';\n\ninterface SharedBetweenRecipesTooltipProps {\n sectionType: RecipeSectionType;\n belongsToRecipes: SharedRecipe[];\n}\n\nconst SharedBetweenRecipesTooltip: FC<React.PropsWithChildren<SharedBetweenRecipesTooltipProps>> = (\n props,\n) => {\n if (props.belongsToRecipes.length === 0) return null;\n\n switch (props.sectionType) {\n case 'shared':\n return (\n <SharedRecipesTooltip sharedRecipes={props.belongsToRecipes}>\n <Chip theme=\"whiteGreen\" asIcon size={32}>\n <Icon icon={PaperIcon} width={16} height={16} />\n </Chip>\n </SharedRecipesTooltip>\n );\n case 'common':\n return (\n <CommonRecipesTooltip sharedRecipes={props.belongsToRecipes}>\n <Chip theme=\"whiteGreen\" asIcon size={32}>\n <Icon icon={PaperIcon} width={16} height={16} />\n </Chip>\n </CommonRecipesTooltip>\n );\n\n default:\n return null;\n }\n};\n\nexport default SharedBetweenRecipesTooltip;\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from './clientFactory';\n\nconst getDirectGastrofyAxiosClient = (): AxiosInstance => {\n const client = axiosClientFactory.createDirectApiClient({\n baseURL: appConfig.coopSettings.ecommerce.gastrofyApiUrl,\n headers: {\n 'X-Custom-Auth': appConfig.coopSettings.ecommerce.gastrofyApiKey,\n 'X-Custom-User': appConfig.coopUserSettings.isAuthenticated\n ? appConfig.coopUserSettings.shoppingUserId\n : undefined,\n },\n });\n\n return client;\n};\n\nexport default getDirectGastrofyAxiosClient;\n","import { appConfig } from '../../../appConfig';\nimport { getAuthToken } from '../../common/api/auth/getAuthToken';\nimport getLocalApiAxiosClient from '../../common/api/clients/localApiAxiosClient';\nimport gastrofyApi from '../../common/api/gastrofy/gastrofyApi';\nimport type {\n ApiGastrofyDiscoveryRequest,\n ApiGastrofyResolveRequest,\n} from '../../common/api/gastrofy/requests/gastrofyRequests';\nimport type { ApiGastrofyRecipe } from '../../common/api/gastrofy/responses/gastrofyResponses';\nimport distributionAdApi from '../../common/api/recipe/distributionAdApi';\nimport recipeApi from '../../common/api/recipe/recipeApi';\nimport { createDefaultException } from '../../common/exceptions/exceptionUtils';\nimport persistance from '../../common/persistance/persistance';\nimport { isNortforkRecipeFoodBox, mapToComments } from '../../common/utils/recipeUtils';\nimport type {\n RecipeComment,\n RecipeDiscoveryRequest,\n RecipeResolveRequest,\n ResolveRecipesRequest,\n SaveRecipeCommentRequest,\n} from '../models';\n\nconst recipeFlow = {\n getFavouriteRecipes: async () => {\n const { token } = await getAuthToken();\n const response = await recipeApi.getFavouriteRecipes(token)();\n return response;\n },\n getRecipesById: async (recipeIds: (string | number)[]) => {\n const response = await recipeApi.getRecipesById(recipeIds);\n return response;\n },\n getRecipeById: async (recipeId: string | number) => {\n const response = await recipeApi.getRecipeById(recipeId);\n return response;\n },\n getDistributionAd: async (recipeExternalId: string) => {\n const response = await distributionAdApi.getDistributionAd(recipeExternalId);\n return response;\n },\n discoverNorthforkRecipes: async (request: RecipeDiscoveryRequest) => {\n const gastrofyDiscoveryRequest: ApiGastrofyDiscoveryRequest = {\n store_identifier: request.storeId,\n offset: request.offset,\n limit: request.limit,\n data_fields: request.dataFields?.join(','),\n extra_data: request.extraData?.join(','),\n tags: request.tags?.join(','),\n exclude: request.exclude?.join(','),\n allergies: request.allergies?.join(','),\n diets: request.diets?.join(','),\n randomize: request.randomize,\n exclude_external_recipe_ids: request.excludeRecipeIds?.join(','),\n must_have_image: request.mustHaveImage,\n is_published: request.isPublished,\n match_all_products: request.matchAllProducts,\n external_product_ids: request.productIds?.join(','),\n order_by: request.orderBy?.join(','),\n external_recipe_ids: request.externalRecipeIds?.join(','),\n };\n\n const discoveryResponse = await gastrofyApi.discovery(gastrofyDiscoveryRequest);\n let gastrofyRecipes = discoveryResponse.data;\n\n gastrofyRecipes = gastrofyRecipes.map<ApiGastrofyRecipe>((gr) => ({\n ...gr,\n isFoodBox: isNortforkRecipeFoodBox(gr),\n }));\n\n return gastrofyRecipes;\n },\n getRecipesByProduct: async (productIds: string[], storeId: string, limit: number) => {\n const northforkRecipes = await recipeFlow.discoverNorthforkRecipes({\n limit,\n storeId,\n mustHaveImage: true,\n isPublished: true,\n matchAllProducts: false,\n dataFields: ['external_id', 'tags'],\n productIds,\n orderBy: ['product-score'],\n extraData: ['product_score'],\n });\n\n const sortedRecipeIds = northforkRecipes.map((gr) => gr.external_id);\n const recipes = await recipeFlow.getRecipesById(sortedRecipeIds);\n\n recipes.sort(\n (a, b) =>\n sortedRecipeIds.indexOf(a.externalId.toString()) -\n sortedRecipeIds.indexOf(b.externalId.toString()),\n );\n\n return recipes;\n },\n getRecipesByCategories: async (tagIds: string[], storeId: string, limit: number) => {\n const northforkRecipes = await recipeFlow.discoverNorthforkRecipes({\n limit,\n storeId,\n mustHaveImage: true,\n isPublished: true,\n dataFields: ['external_id', 'tags'],\n tags: tagIds,\n });\n\n const sortedRecipeIds = northforkRecipes.map((gr) => gr.external_id);\n const recipes = await recipeFlow.getRecipesById(sortedRecipeIds);\n\n recipes.sort(\n (a, b) =>\n sortedRecipeIds.indexOf(a.externalId.toString()) -\n sortedRecipeIds.indexOf(b.externalId.toString()),\n );\n\n return recipes;\n },\n rateRecipe: async (recipeId: string, rating1to5: number) => {\n let token: string | null = null;\n if (appConfig.coopUserSettings.isAuthenticated) {\n const { token: authenticatedToken } = await getAuthToken();\n token = authenticatedToken;\n }\n\n const resp = await recipeApi.rateRecipe(token)({ recipeId, rating1to5 });\n return resp;\n },\n saveFavouriteRecipe: async (recipeId: string) => {\n const { token } = await getAuthToken();\n const resp = await recipeApi.saveFavouriteRecipe(token)(recipeId);\n return resp;\n },\n removeFavouriteRecipe: async (recipeId: string) => {\n const { token } = await getAuthToken();\n const resp = await recipeApi.removeFavouriteRecipe(token)(recipeId);\n return resp;\n },\n getRecipeUserRating: async (recipeId: number) => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n const { token } = await getAuthToken();\n const response = await recipeApi.getRecipeUserRatings(token)(recipeId);\n return response.rating;\n }\n\n const anonymousRating = persistance.recipeRatings.get(recipeId.toString());\n return anonymousRating;\n },\n getRecipeComments: async (recipeExternalId: string): Promise<RecipeComment[]> => {\n const response = await recipeApi.getRecipeComments(recipeExternalId);\n const domainComments = mapToComments(response);\n\n return domainComments;\n },\n saveRecipeComment: async (\n request: SaveRecipeCommentRequest,\n forbiddenNames: string[],\n isAdmin: boolean,\n ) => {\n if (\n !isAdmin &&\n forbiddenNames.some((forbiddenName) =>\n request.authorName\n .toLowerCase()\n .trim()\n .includes(forbiddenName.toLowerCase().trim()),\n )\n ) {\n return Promise.reject(createDefaultException('Vänligen ange ett annat namn'));\n }\n\n const { token } = await getAuthToken();\n const resp = await recipeApi.saveRecipeComment(token)(request);\n return resp;\n },\n resolveRecipes: async (request: ResolveRecipesRequest, storeId: string) => {\n const resp = await recipeApi.resolveRecipes(request, storeId);\n return resp;\n },\n getRecipeSubstitutes: async (storeId: string, substituteIdentifier: string) => {\n const resp = await recipeApi.getRecipeSubstitutes(storeId, substituteIdentifier);\n return resp;\n },\n\n resolveGastrofyRecipes: async (request: RecipeResolveRequest) => {\n const gastrofyResolveRequest: ApiGastrofyResolveRequest = {\n store: { identifier: request.storeId },\n options: request.options,\n recipes: request.recipes.map((recipe) => ({\n external_id: recipe.externalId,\n portions: recipe.portions,\n })),\n };\n\n const resolveResponse = await gastrofyApi.resolve(gastrofyResolveRequest);\n return resolveResponse;\n },\n\n getRecipeCommentsAdmin: async (query: string, page: number, pageSize: number) => {\n const client = getLocalApiAxiosClient();\n const res = await client.get<{\n comments: {\n id: number;\n recipeId: number;\n recipeExternalId: number | null;\n recipeName: string | null;\n created: string;\n author: string;\n message: string;\n }[];\n currentPageNumber: number;\n totalCount: number;\n }>('/episerver/recipeCommentAdmin', {\n params: {\n query,\n page,\n pageSize,\n },\n });\n\n return res.data;\n },\n\n deleteRecipeCommentAdmin: async (recipeId: number, commentId: number) => {\n const client = getLocalApiAxiosClient();\n await client.delete(`/episerver/recipeCommentAdmin`, {\n params: {\n recipeId,\n commentId,\n },\n });\n\n return true;\n },\n\n filterRecipesAdminTool: async (filterString: string, excludeList: string[]) => {\n const { token } = await getAuthToken();\n const resp = await recipeApi.filterRecipesAdminTool(token, filterString, excludeList);\n return resp;\n },\n};\n\nexport default recipeFlow;\n","import getLocalApiAxiosClient from '../clients/localApiAxiosClient';\n\nconst getDistributionAd = async (recipeExternalId: string) => {\n const response = await getLocalApiAxiosClient().get<ContentReference>(\n `/recipe/distributionad/${recipeExternalId}`,\n );\n return response.data;\n};\n\nexport default {\n getDistributionAd,\n};\n","import getDirectGastrofyAxiosClient from '../clients/directGastrofyAxiosClient';\nimport type {\n ApiGastrofyDiscoveryRequest,\n ApiGastrofyResolveRequest,\n} from './requests/gastrofyRequests';\nimport type {\n ApiGastrofyDiscoveryResponse,\n ApiGastrofyResolveResponse,\n} from './responses/gastrofyResponses';\n\nconst discovery = async (\n request: ApiGastrofyDiscoveryRequest,\n): Promise<ApiGastrofyDiscoveryResponse> => {\n const client = await getDirectGastrofyAxiosClient();\n\n const response = await client.get<ApiGastrofyDiscoveryResponse>(`api/discovery/recipes`, {\n params: request,\n });\n return response.data;\n};\n\nconst resolve = async (request: ApiGastrofyResolveRequest): Promise<ApiGastrofyResolveResponse> => {\n const client = await getDirectGastrofyAxiosClient();\n\n const response = await client.post<ApiGastrofyResolveResponse>(\n `api/smart-cart/recipes/resolve`,\n request,\n );\n\n return response.data;\n};\n\nexport default {\n discovery,\n resolve,\n};\n","import type { RecipeItemState } from '../../../../recipe/models';\n\nexport const getRecipeSection = (item: RecipeItemState) => {\n return {\n recipeId: item.group === 'singleProducts' ? item.belongsToRecipes[0].code : 'shared',\n recipeName: item.group === 'singleProducts' ? item.belongsToRecipes[0].name : 'shared',\n };\n};\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport _ from 'underscore';\n\nimport type {\n ApiHybrisRecipe,\n ApiRecipeList,\n ApiRecipeProductItem,\n} from '../../common/api/recipe/recipeModels';\nimport { SyncronQueue } from '../../common/api/SyncronQueue';\nimport { productFlow } from '../../common/flow/product/productFlow';\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport { useGroupErrorEffect } from '../../common/hooks/useGroupError';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../common/selectors/storeSelectors';\nimport { ErrorGroup } from '../../common/store/structureDefinitions/errorsState';\nimport { ga4RecipesTracking } from '../../common/tracking/ga4/recipes';\nimport { getRecipeSection } from '../../common/tracking/ga4/recipes/ga4Recipes.utils';\nimport recipeFlow from '../flow/recipeFlow';\nimport type {\n RecipeCalculationType,\n RecipeItemState,\n RecipePrioritizationType,\n RecipeProductException,\n RecipeProductGroupType,\n RecipeSectionType,\n ResolveRecipesRequest,\n} from '../models';\nimport { ItemState } from '../models';\n\nexport interface JoinedRecipe {\n name: string;\n id: string;\n}\n\nexport interface RecipeItemProductSubstitute extends RecipeItemState {\n product: ApiProduct;\n}\n\nexport const mapItem = (\n recipeProductItem: ApiRecipeProductItem,\n group: RecipeProductGroupType,\n isRemoved: boolean,\n): RecipeItemState => {\n return {\n id: recipeProductItem.id,\n priceData: recipeProductItem.priceData,\n purchasable: recipeProductItem.purchasable,\n quantity: recipeProductItem.quantity,\n substituteProductsAmount: recipeProductItem.substituteProductsAmount,\n image: recipeProductItem.image,\n manufacturer: recipeProductItem.manufacturer,\n name: recipeProductItem.name,\n substituteIdentifier: recipeProductItem.substituteIdentifier,\n packageSizeInformation: recipeProductItem.packageSizeInformation,\n belongsToRecipes:\n recipeProductItem.belongsToRecipes?.map((item) => ({\n name: item.name,\n code: item.recipeId,\n })) || [],\n selectedVarianceCode: recipeProductItem.selectedVarianceCode,\n totalPriceData: recipeProductItem.rowTotalPriceData,\n group,\n state: isRemoved ? ItemState.Removed : ItemState.Default,\n };\n};\n\nexport type RecipeSection =\n | ({\n type: Extract<RecipeSectionType, 'common'>;\n } & Omit<Section, 'portions'>)\n | ({\n type: Extract<RecipeSectionType, 'recipe'>;\n } & Section)\n | ({\n type: Extract<RecipeSectionType, 'shared'>;\n } & Omit<Section, 'portions'>);\n\nexport interface Section {\n id: string; // could be shared or common\n type: RecipeSectionType;\n name: string;\n imageUrl: string;\n portions: number;\n substituteIdentifiers: string[];\n productIdentifiers: string[];\n sharedSubstituteIdentifiers?: string[];\n}\n\nconst mapItems = (\n hybrisRecipeList: ApiRecipeList,\n removedSubsituteIdentifiers: string[],\n): RecipeItemState[] => {\n const singleProducts = (hybrisRecipeList.singleProducts || []).map((item) =>\n mapItem(\n item,\n 'singleProducts',\n removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n ),\n );\n const sharedProducts = (hybrisRecipeList.sharedProducts || []).map((item) =>\n mapItem(\n item,\n 'sharedProducts',\n removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n ),\n );\n const goodToHaveProducts = (hybrisRecipeList.goodToHaveProducts || []).map((item) =>\n mapItem(\n item,\n 'commonProducts',\n removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n ),\n );\n\n const allItems = [...singleProducts, ...sharedProducts, ...goodToHaveProducts];\n return allItems;\n};\n\nconst mapSections = (\n recipeList: ApiRecipeList,\n removedSubsituteIdentifiers: string[],\n): RecipeSection[] => {\n const singleProducts = (recipeList.singleProducts || []).filter(\n (item) => !removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n );\n const sharedProducts = recipeList.sharedProducts.filter(\n (item) => !removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n );\n const goodToHaveProducts = recipeList.goodToHaveProducts.filter(\n (item) => !removedSubsituteIdentifiers.includes(item.substituteIdentifier),\n );\n\n const recipeSectionsMap = singleProducts.reduce<Record<string, RecipeSection>>(\n (prev, next) => {\n const sectionId = next.belongsToRecipes[0].recipeId;\n const sectionName = next.belongsToRecipes[0].name;\n const recipe = recipeList.recipes.find((_recipe) => _recipe.code === sectionId);\n\n const final = { ...prev };\n\n if (recipe) {\n final[sectionId] = {\n id: sectionId,\n type: 'recipe',\n name: sectionName,\n imageUrl: recipe.imageUrl,\n portions: recipe.portions,\n substituteIdentifiers: prev[sectionId]?.substituteIdentifiers\n ? [...prev[sectionId].substituteIdentifiers, next.substituteIdentifier]\n : [next.substituteIdentifier],\n productIdentifiers: prev[sectionId]?.productIdentifiers\n ? [...prev[sectionId].productIdentifiers, next.id]\n : [next.id],\n };\n }\n\n return final;\n },\n {} as Record<string, RecipeSection>,\n );\n\n // add info how many products are in shared section for each recipe\n Object.keys(recipeSectionsMap).forEach((sectionId) => {\n const sharedProductsBelongingToRecipe = sharedProducts\n .filter((sharedProduct) =>\n sharedProduct.belongsToRecipes\n .map((joinedRecipe) => joinedRecipe.recipeId)\n .includes(sectionId),\n )\n .map((product) => product.substituteIdentifier);\n\n recipeSectionsMap[sectionId].sharedSubstituteIdentifiers = sharedProductsBelongingToRecipe;\n });\n\n const sharedRecipeProductIds = sharedProducts.map((x) => x.id);\n const goodToHaveProductIds = goodToHaveProducts.map((x) => x.id);\n\n const sharedRecipeSubstituteIds = sharedProducts.map((x) => x.substituteIdentifier);\n const goodToHaveSubstituteIds = goodToHaveProducts.map((x) => x.substituteIdentifier);\n\n const recipeSectionList = Object.values<RecipeSection>(recipeSectionsMap);\n\n if (sharedRecipeSubstituteIds.length) {\n recipeSectionList.push({\n id: 'shared',\n type: 'shared',\n name: 'Delas mellan recepten',\n substituteIdentifiers: sharedRecipeSubstituteIds,\n productIdentifiers: sharedRecipeProductIds,\n imageUrl: '/Assets/Images/recipe-shared.png',\n });\n }\n\n if (goodToHaveProductIds.length) {\n recipeSectionList.push({\n id: 'common',\n type: 'common',\n name: 'Basvaror du behöver ha hemma',\n substituteIdentifiers: goodToHaveSubstituteIds,\n productIdentifiers: goodToHaveProductIds,\n imageUrl: '/Assets/Images/recipe-good-to-have.png',\n });\n }\n\n return recipeSectionList;\n};\n\nconst createCartState = (\n recipeList: ApiRecipeList,\n removedItems: RecipeItemState[],\n): RecipeCartState => {\n const removedSubstituteIds = removedItems.map((item) => item.substituteIdentifier);\n const sections = mapSections(recipeList, removedSubstituteIds);\n\n return {\n calculation: recipeList.calculation,\n prioritization: recipeList.prioritization,\n recipes: recipeList.recipes,\n items: mapItems(recipeList, removedSubstituteIds),\n sections,\n totalPriceData: {\n inclTaxPrice: recipeList.recipesTotalPrice.value,\n exclTaxPrice: recipeList.recipesTotalPrice.valueWithoutTax,\n },\n };\n};\n\nconst recipeCartQueue = new SyncronQueue();\n\ninterface RecipeData {\n recipeId: string;\n portions: number;\n}\n\nexport interface RecipeCartState {\n recipes: ApiHybrisRecipe[];\n prioritization?: RecipePrioritizationType;\n calculation: RecipeCalculationType;\n items: RecipeItemState[];\n sections: RecipeSection[];\n totalPriceData: ApiPriceData;\n}\n\ninterface RecipeItemChangeState extends RecipeItemState {\n removed?: boolean;\n}\n\ninterface RecipeCartChangesState {\n recipes: RecipeData[];\n prioritization: RecipePrioritizationType | null;\n calculation: RecipeCalculationType;\n productChanges: Record<string, RecipeItemChangeState>;\n}\n\nconst mapProductChangesToExceptions = (productChanges: Record<string, RecipeItemState>) => {\n if (!productChanges) return [];\n\n const changedProducts = Object.values(productChanges);\n const productExceptions = changedProducts.map<RecipeProductException>((cp) => ({\n productId: cp.id,\n substituteId: cp.substituteIdentifier,\n qty: cp.quantity,\n }));\n\n return productExceptions;\n};\n\nconst useRecipeCart = (initialLoading: boolean = true) => {\n const [cartState, setCartState] = useState<RecipeCartState | null>(null);\n const [cartChangesState, setCartChangesState] = useState<RecipeCartChangesState | null>(null);\n const removedItems = useRef<RecipeItemState[]>([]);\n\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const updateSubstituteProduct = useCallback((item: RecipeItemState, newProductId: string) => {\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n draft.productChanges[item.substituteIdentifier] = {\n ...item,\n id: newProductId,\n quantity: null,\n };\n }\n\n return draft;\n });\n });\n\n const recipeSection = getRecipeSection(item);\n\n ga4RecipesTracking.weeklyMenu.handleIngredient('change item')?.(\n recipeSection.recipeId,\n recipeSection.recipeName,\n item.id,\n item.name,\n );\n }, []);\n\n const updateItemQuantity = useCallback((item: RecipeItemState, newQuantity: number) => {\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n draft.productChanges[item.substituteIdentifier] = {\n ...item,\n quantity: newQuantity,\n };\n }\n return draft;\n });\n });\n\n const recipeSection = getRecipeSection(item);\n\n if (item.quantity === null) {\n return;\n }\n\n if (newQuantity > item.quantity) {\n // add\n ga4RecipesTracking.weeklyMenu.handleIngredient('add')?.(\n recipeSection.recipeId,\n recipeSection.recipeName,\n item.id,\n item.name,\n );\n }\n\n if (newQuantity < item.quantity) {\n // remove\n ga4RecipesTracking.weeklyMenu.handleIngredient('remove')?.(\n recipeSection.recipeId,\n recipeSection.recipeName,\n item.id,\n item.name,\n );\n }\n }, []);\n\n const updatePortions = useCallback((recipeId: string, portions: number) => {\n removedItems.current = [];\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n Object.values(draft.productChanges).forEach((pc) => {\n pc.quantity = null;\n });\n const recipeToChange = draft.recipes.find((cr) => cr.recipeId === recipeId);\n if (recipeToChange) {\n recipeToChange.portions = portions;\n }\n }\n\n return draft;\n });\n });\n }, []);\n\n const updateCalculation = useCallback(\n (\n calculationType: RecipeCalculationType,\n prioritizationType: RecipePrioritizationType | null,\n ) => {\n removedItems.current = [];\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n draft.productChanges = {}; // what to do here, keep substitues or always recalculate?\n draft.calculation = calculationType;\n draft.prioritization = prioritizationType;\n }\n\n return draft;\n });\n });\n },\n [],\n );\n\n const calculateCart = useCallback((request: ResolveRecipesRequest) => {\n removedItems.current = [];\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => ({\n ...draft,\n calculation: request.calculation,\n prioritization: request.prioritization,\n recipes: request.recipes,\n productChanges: {}, // what to do here, keep substitues or always recalculate?\n }));\n });\n }, []);\n\n const reCalculateCart = useCallback(() => {\n removedItems.current = [];\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n draft.productChanges = {};\n }\n\n return draft; // what to do here, keep substitues or always recalculate?\n });\n });\n }, []);\n\n const removeItem = useCallback((item: RecipeItemState) => {\n removedItems.current.push(item);\n\n // fake cart recalculate\n setCartChangesState((prevChanges) => {\n return produce(prevChanges, (draft) => {\n if (draft) {\n return { ...draft };\n }\n\n return draft;\n });\n });\n\n const recipeSection = getRecipeSection(item);\n\n ga4RecipesTracking.weeklyMenu.handleIngredient('empty')?.(\n recipeSection.recipeId,\n recipeSection.recipeName,\n item.id,\n item.name,\n );\n }, []);\n\n const {\n execute: resolve,\n result: resolvedRecipes,\n isLoading,\n error: resolveError,\n } = useAsyncDispatcher(\n async (request: ResolveRecipesRequest, storeId: string) => {\n // direct resolve to nortfork\n // const normalResolve = await recipeFlow.resolveGastrofyRecipes({\n // options: {\n // calculation: request.calculation,\n // prioritization: request.prioritization || undefined,\n // productExceptions: request.products?.map((x) => ({\n // amount: x.qty || 0,\n // externalId: x.productId,\n // substituteIdentifier: x.substituteId,\n // })),\n // },\n // recipes: request.recipes.map((x) => ({\n // externalId: x.recipeId,\n // portions: x.portions,\n // })),\n // storeId,\n // });\n\n return recipeCartQueue.run(async () =>\n recipeFlow.resolveRecipes(\n {\n calculation: request.calculation,\n prioritization: request.prioritization,\n recipes: request.recipes,\n products: request.products,\n },\n storeId,\n ),\n );\n },\n {\n keepPreviousResult: true,\n initialLoadingState: initialLoading,\n },\n );\n\n useGroupErrorEffect(ErrorGroup.Global, !!resolveError, resolveError);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedResolve = useCallback(_.debounce(resolve, 200), []);\n\n useEffect(() => {\n if (cartChangesState) {\n debouncedResolve(\n {\n calculation: cartChangesState.calculation,\n prioritization: cartChangesState.prioritization,\n recipes: cartChangesState.recipes,\n products: mapProductChangesToExceptions(cartChangesState.productChanges),\n },\n currentProductionUnit,\n );\n }\n }, [cartChangesState, currentProductionUnit, debouncedResolve]);\n\n const productChanges = useMemo(\n () => (cartChangesState ? Object.values(cartChangesState.productChanges) : []),\n [cartChangesState],\n );\n\n const isDirty = productChanges.length > 0 || removedItems.current.length;\n\n useEffect(() => {\n if (resolvedRecipes) {\n // we need to fake removing items, thats why i keep them in ref\n setCartState(createCartState(resolvedRecipes, removedItems.current));\n }\n }, [resolvedRecipes]);\n\n const { execute, result: recipeCartProducts } = useAsyncDispatcher(\n productFlow.getProductsByIds,\n {\n keepPreviousResult: true,\n initialResultState: [],\n },\n );\n\n useEffect(() => {\n if (cartState?.items && cartState.items.length) {\n execute(\n cartState.items.map((x) => x.id),\n currentProductionUnit,\n );\n }\n }, [execute, cartState, currentProductionUnit]);\n\n const getProductExceptions = () => {\n const changedSubstituteIds =\n cartChangesState && Object.keys(cartChangesState.productChanges);\n\n const changedItems = cartState?.items.filter(\n (item) =>\n changedSubstituteIds && changedSubstituteIds.includes(item.substituteIdentifier),\n );\n\n return changedItems;\n };\n\n return {\n updateItemQuantity,\n updateSubstituteProduct,\n updatePortions,\n updateCalculation,\n removeItem,\n calculateCart,\n reCalculateCart,\n recipeCart: cartState,\n recipeCartChanges: cartChangesState,\n getProductExceptions,\n recipeCartProducts,\n isLoading,\n isDirty,\n };\n};\n\nexport default useRecipeCart;\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { productFlow } from '../../common/flow/product/productFlow';\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport { useRequestEffects } from '../../common/hooks/useRequestEffects';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../common/selectors/storeSelectors';\nimport { ErrorGroup } from '../../common/store/structureDefinitions/errorsState';\nimport recipeFlow from '../flow/recipeFlow';\nimport type { RecipeItemState } from '../models';\n\nconst loadHybrisSubstitutes = async (storeId: string, substituteIdentifier: string) => {\n const recipeProducts = await recipeFlow.getRecipeSubstitutes(storeId, substituteIdentifier);\n const products =\n (await productFlow.getProductsByIds(\n recipeProducts\n .filter((substitute) => substitute.purchasable)\n .map((substitute) => substitute.id),\n storeId,\n )) || [];\n\n return {\n substituteIdentifier,\n substitutes: products,\n };\n};\n\nconst useSubstitutes = (\n handleSubstituteChangeClick: (item: RecipeItemState, product: ApiProduct) => void,\n allItems?: RecipeItemState[],\n) => {\n const [expandedSubstituteIds, setExpandedSubstituteIds] = useState<string[]>([]);\n const substituteSentForChange = useRef<{ substituteIdentifier: string; productId: string }>();\n\n const onSubstituteToggle = useCallback((substituteIdentifier: string) => {\n setExpandedSubstituteIds((prevIds) => {\n const newIds = [...prevIds];\n const index = newIds.findIndex((item) => item === substituteIdentifier);\n\n if (index === -1) {\n newIds.push(substituteIdentifier);\n } else {\n newIds.splice(index, 1);\n }\n\n return newIds;\n });\n }, []);\n\n // since we dont have a substitute change endpoint like in cart, we need to wait for the resolve to return,\n // this is not ideal, we then try to see if its in the returned items\n useEffect(() => {\n if (\n !!substituteSentForChange.current &&\n allItems?.find(\n (item) =>\n item.id === substituteSentForChange.current?.productId &&\n item.substituteIdentifier ===\n substituteSentForChange.current.substituteIdentifier,\n )\n ) {\n onSubstituteToggle(substituteSentForChange.current.substituteIdentifier);\n }\n substituteSentForChange.current = undefined;\n }, [onSubstituteToggle, allItems]);\n\n const onSubsituteChangeClick = useCallback(\n (item: RecipeItemState, product: ApiProduct) => {\n substituteSentForChange.current = {\n substituteIdentifier: item.substituteIdentifier,\n productId: product.identifier,\n };\n handleSubstituteChangeClick(item, product);\n },\n [handleSubstituteChangeClick],\n );\n\n const onSubstitutesLoaded = useCallback(\n (substituteIdentifier: string, subsituteCount: number) => {\n if (subsituteCount > 0) {\n onSubstituteToggle(substituteIdentifier);\n }\n },\n [onSubstituteToggle],\n );\n\n const [substitutes, setSubstitutes] = useState<\n Record<string, { loadedCount: number; substituteProducts: ApiProduct[] }>\n >({});\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const substitutesDispatcher = useAsyncDispatcher(loadHybrisSubstitutes);\n const {\n execute: loadSubstitutes,\n result: substitutesById,\n isLoading: isLoadingSubstitutes,\n } = substitutesDispatcher;\n useRequestEffects(substitutesDispatcher, {}, ErrorGroup.Global);\n\n useEffect(() => {\n if (substitutesById) {\n setSubstitutes((substituteMap) => ({\n ...substituteMap,\n [substitutesById.substituteIdentifier]: {\n substituteProducts: substitutesById.substitutes,\n loadedCount: substitutesById.substitutes.length,\n },\n }));\n onSubstitutesLoaded(\n substitutesById.substituteIdentifier,\n substitutesById.substitutes.length,\n );\n }\n }, [substitutesById, onSubstitutesLoaded]);\n\n const onSubstituteTriggerClick = useCallback(\n (substituteIdentifier: string) => {\n if (substitutes[substituteIdentifier]?.substituteProducts.length) {\n onSubstituteToggle(substituteIdentifier);\n } else {\n loadSubstitutes(currentProductionUnit, substituteIdentifier);\n }\n },\n [onSubstituteToggle, loadSubstitutes, currentProductionUnit, substitutes],\n );\n\n return {\n onSubsituteChangeClick,\n onSubstituteTriggerClick,\n substitutes,\n isLoadingSubstitutes,\n expandedSubstituteIds,\n };\n};\n\nexport default useSubstitutes;\n","import type { PriceData } from '../common/models/priceData/priceData';\nimport type { EpiRecipeStartPageType } from '../episerver/components/pages/EpiRecipeStartPage/epiRecipeStartPageType';\n\ntype CategoryName = string;\ntype CategoryUrlSegment = string;\nexport type UrlSegmentToCategoryName = Record<CategoryUrlSegment, CategoryName>;\nexport type CategoryNameToUrlSegment = Record<CategoryName, CategoryUrlSegment>;\nexport type CategoryNameToContentReference = Record<CategoryName, string>;\nexport type CategoryNamesUnderLevel1 = Record<CategoryName, boolean>;\nexport type GetUrlForCategoriesSignature = (args: { categories: string[] }) => string;\nexport type RecipeQueryParam = 'page' | 'sort' | 'filter' | 'query';\nexport type SelectedEpiRecipeStartPageType = Pick<\n EpiRecipeStartPageType,\n | 'startpageModules'\n | 'contentLink'\n | 'contentType'\n | 'name'\n | 'startPublish'\n | 'metaDescription'\n | 'preamble'\n | 'popularCategories'\n | 'url'\n | 'pageTypeNameForAnalytics'\n>;\nexport type RecipeCalculationType = 'waste' | 'price';\nexport type RecipePrioritizationType = 'organic' | 'sugar-free' | 'lactose-free' | 'gluten-free';\n\nexport const sectionTypes = {\n recipe: 'recipe',\n shared: 'shared',\n common: 'common',\n};\n\n// export const sectionTypes = ['recipe', 'shared', 'common'] as const;\nexport type RecipeSectionType = keyof typeof sectionTypes;\n\nexport const productGroupTypes = ['singleProducts', 'sharedProducts', 'commonProducts'] as const;\nexport type RecipeProductGroupType = (typeof productGroupTypes)[number];\n\nexport enum ItemState {\n Default = 'default',\n Removed = 'removed',\n}\nexport interface RecipeProductException {\n productId: string;\n qty: number | null;\n substituteId: string;\n variantId?: string;\n}\n\nexport interface RecipeItemState {\n id: string;\n name: string;\n image?: string;\n manufacturer?: string;\n substituteIdentifier: string;\n substituteProductsAmount: number;\n quantity: number | null;\n purchasable: boolean;\n priceData: PriceData;\n totalPriceData: PriceData;\n packageSizeInformation: string;\n belongsToRecipes: SharedRecipe[];\n selectedVarianceCode?: string;\n\n // derived:\n group: RecipeProductGroupType;\n state: ItemState;\n}\n\nexport interface ResolveRecipesRequest {\n recipes: { recipeId: string; portions: number }[];\n products?: RecipeProductException[];\n prioritization: RecipePrioritizationType | null;\n calculation: RecipeCalculationType;\n}\n\nexport enum RecipeModalTab {\n Overview = 1,\n Products = 2,\n}\n\nexport const gastrofyAllergies = ['gluten', 'sugar', 'high-lactose', 'low-lactose', 'fodmap'];\n\nexport type GastrofyAllergiesType = (typeof gastrofyAllergies)[number];\n\nexport const gastrofyDiets = [\n 'paleo',\n 'vegan',\n 'vegetarian',\n 'pregnant',\n 'low-carb',\n 'inflammatory',\n 'anti-inflammatory',\n];\n\nexport type GastrofyDietsType = (typeof gastrofyDiets)[number];\n\nexport const gastrofyExcludes = [\n 'beef',\n 'pork',\n 'poultry',\n 'fish',\n 'shellfish',\n 'wild-meat',\n 'lamb',\n] as const;\n\nexport type GastrofyExcludeType = (typeof gastrofyExcludes)[number];\n\nexport interface RecipeDiscoveryRequest {\n offset?: number;\n limit: number;\n storeId: string;\n dataFields?: string[];\n extraData?: string[];\n tags?: string[];\n exclude?: GastrofyExcludeType[];\n allergies?: GastrofyAllergiesType[];\n diets?: GastrofyDietsType[];\n randomize?: boolean;\n excludeRecipeIds?: string[];\n externalRecipeIds?: string[];\n mustHaveImage?: boolean;\n isPublished?: boolean;\n matchAllProducts?: boolean;\n productIds?: string[];\n orderBy?: string[];\n}\n\nexport interface RecipeResolveRequest {\n storeId: string;\n options: Options;\n recipes: RecipeResolveData[];\n}\n\ninterface ProductException {\n externalId: string;\n substituteIdentifier: string;\n amount: number;\n}\n\ninterface Options {\n productExceptions?: ProductException[];\n calculation: RecipeCalculationType;\n prioritization?: RecipePrioritizationType;\n}\n\ninterface RecipeResolveData {\n externalId: string;\n portions: number;\n}\n\nexport interface SaveRecipeCommentRequest {\n recipeExternalId: string;\n authorName: string;\n comment: string;\n}\n\nexport interface RecipeComment {\n id: number;\n recipeId: number;\n name: string;\n comment: string;\n date: Date;\n isAdmin: boolean;\n}\n\nexport interface ImageSticker {\n imageUrl: string;\n keyword: string;\n}\n\nexport interface RecipePart {\n name?: string;\n ingredients: Ingredient[];\n}\n\nexport interface Ingredient {\n friendlyText: string;\n formattedQuantity: string;\n unit: string;\n sequenceNumber: number;\n}\n\nexport interface CookingInstructions {\n title: string;\n instructions: string[];\n}\n\nexport interface RecipeCategory {\n order: number;\n categories: string[];\n}\n\nexport interface SharedRecipe {\n code: string;\n name: string;\n}\nexport interface RecipeProps {\n id: number;\n externalId: string;\n name: string;\n imageUrl: string;\n stickerUrl?: string;\n portions: number;\n portionsUnit: string;\n parts: RecipePart[];\n averageRating: number;\n ratingPercent: number;\n ratingCount: number;\n preamble: string;\n climateImpactKg: number | null;\n ovenTemperature: string;\n cookingTime: string;\n prepTime: string;\n totalTime: string;\n cookingInstructions: CookingInstructions[];\n servingTips: string;\n tips: string;\n numberOfIngredients: number;\n recipeCreator?: string;\n categories: RecipeCategory[];\n comments: RecipeComment[];\n isFoodBox: boolean;\n}\n","import classnames from 'classnames';\n\nimport ButtonEpiLink from '../../../common/components/ButtonEpiLink/ButtonEpiLink';\nimport type { ImageTextPropertyBlockProps } from '../../../common/components/organisms/ImageTextPropertyBlock/ImageTextPropertyBlock';\nimport SingleImageTextBlock from '../../../common/components/organisms/SingleImageTextBlock/SingleImageTextBlock';\nimport { ga4RecipesTracking } from '../../../common/tracking/ga4/recipes';\nimport styles from './RecipeBannerAd.module.less';\n\ninterface RecipeBannerAdProps {\n name: string;\n imageTextProperties: ImageTextPropertyBlockProps;\n hasBottomButtonDiv: boolean;\n backgroundImage: string;\n backgroundColorHex: string;\n buttonLink1?: React.ComponentPropsWithoutRef<typeof ButtonEpiLink>;\n buttonLink2?: React.ComponentPropsWithoutRef<typeof ButtonEpiLink>;\n adGaPromoId: string;\n adGaPromoName: string;\n adGaPromoCreative: string;\n adGaPromoPosition: string;\n}\n\nconst RecipeBannerAd = (props: RecipeBannerAdProps) => {\n // Update Promo position with button clicked\n const trackOnButtonClick = (button: string) => {\n ga4RecipesTracking.recipeAdClick(\n props.adGaPromoId ?? 'intern',\n props.adGaPromoName,\n props.adGaPromoCreative ?? props.name,\n button,\n );\n };\n\n return (\n <div>\n <div className={classnames(props.hasBottomButtonDiv ? styles.AdImage : 'u-marginBsm')}>\n <SingleImageTextBlock\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props.imageTextProperties}\n disableMinimumHeight\n disableRoundCorners={!!props.hasBottomButtonDiv}\n gaPromoId={props.adGaPromoId ?? 'intern'}\n gaPromoName={props.adGaPromoName}\n gaPromoCreative={props.adGaPromoCreative ?? props.name}\n gaPromoPosition={props.adGaPromoPosition}\n backgroundColor=\"u-bgGrayLight\"\n linkUrl={!props.hasBottomButtonDiv ? props.buttonLink1?.linkUrl : undefined}\n ariaLabel={\n !props.hasBottomButtonDiv ? (props.buttonLink1?.['aria-label'] ?? '') : ''\n }\n />\n </div>\n\n {props.hasBottomButtonDiv && (\n <div\n className={styles.ButtonDiv}\n style={{\n backgroundImage: `url(${props.backgroundImage})`,\n backgroundColor: `${props.backgroundColorHex}`,\n }}\n >\n {props.buttonLink1 && (\n <ButtonEpiLink\n onClick={() => trackOnButtonClick('button1')}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props.buttonLink1}\n />\n )}\n {props.buttonLink2 && (\n <ButtonEpiLink\n onClick={() => trackOnButtonClick('button2')}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props.buttonLink2}\n />\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default RecipeBannerAd;\n","// extracted by mini-css-extract-plugin\nexport default {\"AdImage\":\"vlq9wSYl\",\"ButtonDiv\":\"FpesfcjZ\"};","import { mapEpiButtonLinkPropertyBlock } from '../../../episerver/components/blocks/EpiButtonLinkPropertyBlock/epiButtonLinkPropertyBlock.utils';\nimport { mapEpiButtonPropertyBlock } from '../../../episerver/components/blocks/EpiButtonPropertyBlock/EpiButtonPropertyBlock.utils';\nimport type { EpiRecipeAdBlockType } from '../../../episerver/components/blocks/EpiRecipeAdBlock/epiRecipeAdBlockType';\nimport { mapBlockPropToImageTextPropertyBlock } from '../../../episerver/components/blocks/EpiRecipeAdBlock/EpiRecipeAdBlockType.utils';\nimport { useEpiPageByContentId } from '../../../episerver/components/hooks/useCurrentEpiPage';\nimport { useDistributionAdContentIdQuery } from './hooks/useDistributionAdQuery';\nimport RecipeBannerAd from './RecipeBannerAd';\n\ninterface RecipeDistributionAdProps {\n recipeExternalId: string;\n}\nconst RecipeDistributionAd = (props: RecipeDistributionAdProps) => {\n const { data: distributionAdContentId } = useDistributionAdContentIdQuery(\n props.recipeExternalId,\n !!props.recipeExternalId,\n );\n\n const { data: adBlock } = useEpiPageByContentId<EpiRecipeAdBlockType>(\n distributionAdContentId?.toString() ?? '',\n {\n depth: 1,\n },\n {\n enabled: !!distributionAdContentId,\n },\n );\n\n if (!adBlock) return null;\n\n const imageTextProperties = mapBlockPropToImageTextPropertyBlock(adBlock);\n\n // if buttonlink1 and buttonlink2 are set (text and link) then show buttons under image\n const hasBottomButtonDiv = !!(\n adBlock.buttonLink1?.link &&\n adBlock.buttonLink1?.text &&\n adBlock.buttonLink2?.link &&\n adBlock.buttonLink2?.text\n );\n let backgroundImage = '';\n let backgroundColorHex = '';\n if (!hasBottomButtonDiv && adBlock.buttonLink1?.link && imageTextProperties) {\n imageTextProperties.linkUrl = adBlock.buttonLink1.link;\n imageTextProperties.ariaLabel = adBlock.buttonLink1.ariaLabel ?? '';\n }\n\n if (hasBottomButtonDiv) {\n backgroundImage = adBlock.backgroundImage?.url ?? '';\n backgroundColorHex = adBlock.backgroundColor ?? '';\n }\n\n if (!imageTextProperties) return null;\n\n const buttonProps1mapped = adBlock.buttonLink1\n ? {\n ...mapEpiButtonPropertyBlock(adBlock.buttonLink1),\n ...mapEpiButtonLinkPropertyBlock(adBlock.buttonLink1),\n }\n : undefined;\n\n const buttonProps2mapped = adBlock.buttonLink2\n ? {\n ...mapEpiButtonPropertyBlock(adBlock.buttonLink2),\n ...mapEpiButtonLinkPropertyBlock(adBlock.buttonLink2),\n }\n : undefined;\n\n let gaPromoName = adBlock.gaPromoName ?? 'recept_[CODE_RECIPEID]_ad';\n\n // Update tracking with recipe id\n gaPromoName = gaPromoName.replace(/\\[CODE_RECIPEID\\]/gi, props.recipeExternalId);\n\n return (\n <RecipeBannerAd\n imageTextProperties={imageTextProperties}\n buttonLink1={buttonProps1mapped}\n buttonLink2={buttonProps2mapped}\n backgroundImage={backgroundImage}\n backgroundColorHex={backgroundColorHex}\n hasBottomButtonDiv={hasBottomButtonDiv}\n adGaPromoId={adBlock.gaPromoId}\n adGaPromoName={gaPromoName}\n adGaPromoCreative={adBlock.gaPromoCreative}\n adGaPromoPosition={adBlock.gaPromoPosition}\n name={adBlock.name}\n />\n );\n};\n\nexport default RecipeDistributionAd;\n","import { useQuery } from '@tanstack/react-query';\n\nimport recipeFlow from '../../../flow/recipeFlow';\nimport { recipeQueryKeys } from '../../../recipeQueries';\n\nexport const useDistributionAdContentIdQuery = (recipeExternalId: string, enabled: boolean) => {\n const query = useQuery({\n queryKey: recipeQueryKeys.recipeAd(recipeExternalId),\n queryFn: async () => {\n return recipeFlow.getDistributionAd(recipeExternalId);\n },\n enabled,\n staleTime: 1000 * 60 * 5, // 5 minutes\n });\n\n return query;\n};\n","import type { FC } from 'react';\nimport { useEffect, useMemo } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport DynamicYieldBuyableProductTeaser from '../../../common/components/DynamicYieldBlock/DynamicYieldBuyableProductTeaser';\nimport DynamicYieldFavoriteRecipeTeaser from '../../../common/components/DynamicYieldBlock/DynamicYieldFavoriteRecipeTeaser';\nimport ListBlockHeader from '../../../common/components/ListBlock/ListBlockHeader';\nimport RecommendationsBlock from '../../../common/components/organisms/RecommendationsBlock';\nimport type { RecipeRecommendationSlot } from '../../../common/models/product/productDomainModels';\nimport { RecommendationType } from '../../../common/models/product/productDomainModels';\nimport tracking from '../../../common/tracking/tracking';\nimport { useDynamicYieldRecommendations } from '../../../ecommerce/hooks/useDynamicYieldRecommendations';\nimport useDynamicYieldTracking from '../../../ecommerce/hooks/useDynamicYieldTracking';\nimport type { LightSearchRecipe } from '../../../search/models/models';\n\ninterface DynamicYieldSimiliarRecipesProps {\n recommendationId: string;\n recommendationGaList: string;\n additionalRecipes: LightSearchRecipe[];\n pageRecipeName: string;\n numberOfSimiliarsToShow: number;\n}\n\nconst DynamicYieldSimiliarRecipes: FC<React.PropsWithChildren<DynamicYieldSimiliarRecipesProps>> = (\n props,\n) => {\n const { getRecommendations, isLoading, recommendation } = useDynamicYieldRecommendations(\n props.recommendationId,\n false,\n );\n\n useDynamicYieldTracking(\n appConfig.coopSettings.recipe.dynamicYieldSimiliarRecipesRecommendationId,\n recommendation,\n );\n\n // additional recipes from epi crap\n const items = useMemo(() => {\n const newItems = recommendation ? [...recommendation.items] : [];\n newItems.unshift(\n ...props.additionalRecipes.map<RecipeRecommendationSlot>((x) => ({\n ...x,\n slotId: undefined,\n type: RecommendationType.Recipe,\n })),\n );\n return newItems.slice(0, props.numberOfSimiliarsToShow);\n }, [props.additionalRecipes, props.numberOfSimiliarsToShow, recommendation]);\n\n useEffect(() => {\n getRecommendations();\n }, [getRecommendations]);\n\n if (!props.recommendationId) return null;\n\n if (!isLoading && !recommendation?.items?.length) {\n return null;\n }\n\n return (\n <RecommendationsBlock\n headerSlot={<ListBlockHeader>Liknande recept</ListBlockHeader>}\n isLoading={isLoading}\n items={items}\n useSwiper={false}\n analyticsListName={props.recommendationGaList}\n horizontalHidden={false}\n renderProduct={(item, index, listPosition) => (\n <DynamicYieldBuyableProductTeaser\n slotId={item.slotId}\n product={item}\n isALink\n analyticsOptions={{\n list: props.recommendationGaList,\n position: index,\n listPosition,\n }}\n isAsyncLink={false}\n recommendationId={props.recommendationId}\n />\n )}\n renderRecipe={(item) => (\n <DynamicYieldFavoriteRecipeTeaser\n recipe={item}\n onLinkClick={() =>\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Liknande recept',\n `Klick pÃ¥: ${item.name}`,\n props.pageRecipeName,\n )\n }\n />\n )}\n />\n );\n};\n\nexport default DynamicYieldSimiliarRecipes;\n","import { Button, TextArea, TextInput } from '@coop/components';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport classNames from 'classnames';\nimport type { FC } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { Controller, useForm } from 'react-hook-form';\n\nimport { appConfig } from '../../../../appConfig';\nimport { Helpers } from '../../../../utility/helpers';\nimport type { ApiException } from '../../../common/exceptions/exceptionDefinitions';\nimport { ga4RecipesTracking } from '../../../common/tracking/ga4/recipes';\nimport tracking from '../../../common/tracking/tracking';\nimport { getLoginUrlWithReturnUrl } from '../../../common/utils/urlUtils';\nimport recipeFlow from '../../flow/recipeFlow';\nimport type { RecipeComment, SaveRecipeCommentRequest } from '../../models';\nimport { recipeQueryKeys } from '../../recipeQueries';\n\ninterface RecipeItemCommentsProps {\n recipeExternalId: string;\n recipeName: string;\n initialRecipeComments: RecipeComment[];\n hideComments?: boolean;\n isAdmin: boolean;\n commnentsForbiddenNames?: string[];\n}\n\nconst RecipeItemComments: FC<React.PropsWithChildren<RecipeItemCommentsProps>> = (props) => {\n const authorName = props.isAdmin ? 'Coop' : appConfig.coopUserSettings.profile?.firstName || '';\n\n const { handleSubmit, control } = useForm({\n mode: 'onChange',\n reValidateMode: 'onChange',\n defaultValues: {\n comment: '',\n authorName,\n },\n });\n\n const defaultNumberOfComments = 4;\n const [numberOfCommentsToShow, setNumberOfCommentsToShow] = useState(defaultNumberOfComments);\n\n const queryClient = useQueryClient();\n\n const { data: comments, isError } = useQuery({\n queryKey: recipeQueryKeys.comments(props.recipeExternalId),\n queryFn: () => recipeFlow.getRecipeComments(props.recipeExternalId),\n retry: false,\n initialData: props.initialRecipeComments,\n staleTime: 100,\n });\n\n const saveComments = useMutation<void, ApiException, SaveRecipeCommentRequest>({\n mutationFn: (request) =>\n recipeFlow.saveRecipeComment(\n request,\n props.commnentsForbiddenNames || [],\n props.isAdmin,\n ),\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: recipeQueryKeys.comments(props.recipeExternalId),\n });\n },\n });\n\n const submit = (formData: FieldValues) => {\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Kommentera recept',\n props.recipeName,\n props.recipeName,\n );\n\n ga4RecipesTracking.reviewRecipe(parseInt(props.recipeExternalId, 10), props.recipeName);\n\n saveComments.mutate({\n recipeExternalId: props.recipeExternalId,\n authorName: formData.authorName,\n comment: formData.comment,\n });\n };\n\n const [readyToComment, setReadyToComment] = useState(false);\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n if (readyToComment && textAreaRef.current) {\n textAreaRef.current.focus();\n }\n }, [readyToComment]);\n\n return (\n <div className=\"CommentField u-paddingVxlg u-paddingHmd u-lg-paddingHxlg u-paddingBxlg\">\n <div className=\"CommentField-header\">\n <h2 className=\"CommentField-heading\">\n {!isError ? comments?.length : 0} kommentarer\n </h2>\n </div>\n {!props.hideComments && (\n <div className=\"CommentField-body\">\n {appConfig.coopUserSettings.isAuthenticated ? (\n <>\n {saveComments.isError && (\n <div className=\"Notice Notice--warning u-marginBsm\">\n <div className=\"Main-container\">\n <div className=\"Notice-content u-cf\">\n {saveComments.error.friendlyMessage}\n </div>\n </div>\n </div>\n )}\n\n {!saveComments.isSuccess && (\n <>\n {!readyToComment && (\n <TextInput\n placeholder=\"Kommentera här!\"\n className=\"u-paddingVz u-paddingLsm\"\n onFocus={() => setReadyToComment(true)}\n />\n )}\n <form\n className={classNames(readyToComment ? null : 'u-hidden')}\n >\n <fieldset className=\"Grid u-borderAllNone\">\n <div className=\"Grid-cell u-marginBmd\">\n <div className=\"CommentFieldControl\">\n <Controller\n render={({\n field: textAreaInput,\n fieldState,\n }) => {\n return (\n <TextArea\n id={textAreaInput.name}\n name={textAreaInput.name}\n label=\"Din kommentar\"\n value={textAreaInput.value}\n onChange={\n textAreaInput.onChange\n }\n ref={(ref) => {\n textAreaInput.ref(ref);\n textAreaRef.current = ref;\n }}\n rows={3}\n maxLength={200}\n isInvalid={!!fieldState.error}\n validationText={\n fieldState.error?.message\n }\n />\n );\n }}\n name=\"comment\"\n rules={{\n required: 'Vänligen ange en kommentar',\n }}\n control={control}\n />\n </div>\n </div>\n <div className=\"Grid-cell u-marginBmd\">\n <div className=\"CommentFieldControl\">\n {props.isAdmin ? (\n <>\n <span className=\"u-textXSmall u-paddingRsm\">\n Namn:\n </span>\n <Controller\n render={({ field }) => (\n <input\n id={field.name}\n name={field.name}\n type=\"hidden\"\n className=\"CommentFieldControl-item\"\n value={field.value}\n />\n )}\n name=\"authorName\"\n rules={{ required: true }}\n control={control}\n />\n <img\n src=\"/Assets/Icons/checkbox-green-circle.svg\"\n alt=\"Checkbox\"\n className=\"Table-confirmationIcon\"\n />\n Coop\n </>\n ) : (\n <Controller\n render={({ field, fieldState }) => (\n <TextInput\n label=\"Ditt namn\"\n value={field.value}\n name={field.name}\n onChange={field.onChange}\n onBlur={field.onBlur}\n ref={field.ref}\n isInvalid={!!fieldState.error}\n validationText={\n fieldState.error?.message\n }\n />\n )}\n name=\"authorName\"\n rules={{\n required: 'Vänligen ange ditt namn',\n }}\n control={control}\n />\n )}\n </div>\n </div>\n <div className=\"Grid-cell v3-u-size1of2\">\n <Button\n theme=\"primary\"\n isLoading={saveComments.isPending}\n size={40}\n onClick={handleSubmit(submit)}\n >\n Skicka\n </Button>\n </div>\n </fieldset>\n </form>\n </>\n )}\n </>\n ) : (\n <p>\n <a href={getLoginUrlWithReturnUrl()}>\n <span className=\"u-colorGreen\">Logga in</span>\n </a>{' '}\n <span>för att skriva en kommentar</span>\n </p>\n )}\n {saveComments.isSuccess && (\n <div className=\"Notice Notice--info\">\n <div className=\"Main-container\">\n <div className=\"Notice-content u-cf\">\n <p className=\"Notice-heading\">Tack för din kommentar!</p>\n </div>\n </div>\n </div>\n )}\n\n <div className=\"CommentField-feed\">\n {!!comments?.length && (\n <div className=\"CommentField-feed\">\n {comments.map(\n (comment, index) =>\n index <= numberOfCommentsToShow - 1 && (\n <div\n className=\"CommentField-item u-textBreakWord\"\n key={`${comment.id}`}\n >\n <div className=\"CommentField-itemHeader\">\n <p className=\"CommentField-author\">\n {comment.isAdmin ? (\n <>\n <img\n src=\"/Assets/Icons/checkbox-green-circle.svg\"\n alt=\"Checkbox\"\n className=\"Table-confirmationIcon\"\n />\n {comment.name}\n </>\n ) : (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{comment.name}</>\n )}\n </p>\n <p className=\"CommentField-date\">\n {Helpers.formatDateYyyyMmDd(comment.date)}\n </p>\n </div>\n <p className=\"CommentField-text u-colorBase u-textSmall\">\n {comment.comment}\n </p>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {!!comments && comments.length > numberOfCommentsToShow ? (\n <div className=\"CommentField-item u-marginTlg u-borderBottomNone u-flex u-flexJustifyCenter\">\n <Button\n theme=\"primaryOutline\"\n onClick={() =>\n setNumberOfCommentsToShow(\n (prev) => prev + defaultNumberOfComments,\n )\n }\n >\n Visa fler\n </Button>\n </div>\n ) : (\n !!comments &&\n comments.length > defaultNumberOfComments && (\n <div className=\"CommentField-item u-marginTlg u-borderBottomNone u-flex u-flexJustifyCenter\">\n <Button\n theme=\"primaryOutline\"\n onClick={() =>\n setNumberOfCommentsToShow(defaultNumberOfComments)\n }\n >\n Dölj kommentarer\n </Button>\n </div>\n )\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default RecipeItemComments;\n","import type { FC } from 'react';\n\nimport DynamicHeroMedia from '../../../common/components/atoms/DynamicHeroMedia';\nimport { getTransformedImageUrl } from '../../../common/utils/cloudinaryImageUtils';\n\ninterface RecipeItemHeroImageProps {\n heroImageUrl: string;\n heroImageName: string;\n stickerUrl?: string;\n buttonSlot?: React.ReactNode;\n}\n\nconst RecipeItemHeroImage: FC<React.PropsWithChildren<RecipeItemHeroImageProps>> = (props) => {\n const cloudinaryTransform = 'f_auto,fl_progressive,q_90,g_center,h_800,w_800';\n\n const img = getTransformedImageUrl(props.heroImageUrl, cloudinaryTransform);\n\n return (\n <div className=\"Hero Hero--recipePage u-lg-marginBmd u-posRelative\">\n {img && <DynamicHeroMedia defaultUrl={img} title={props.heroImageName} />}\n {props.stickerUrl && (\n <img\n src={props.stickerUrl}\n alt=\"\"\n style={{ position: 'absolute', width: '100px', top: '20px', left: '12px' }}\n />\n )}\n <div\n className=\"u-noPrint\"\n style={{\n position: 'absolute',\n bottom: 0,\n left: '50%',\n transform: 'translate(-50%, 50%)',\n }}\n >\n {props.buttonSlot}\n </div>\n </div>\n );\n};\n\nexport default RecipeItemHeroImage;\n","/* eslint-disable react/no-array-index-key */\nimport classNames from 'classnames';\nimport type { FC } from 'react';\n\nimport type { RecipePart } from '../../models';\n\ninterface RecipeItemIngredientsProps {\n recipeExternalId: string;\n recipeName: string;\n portions: number;\n recipeParts: RecipePart[];\n buttonRender?: React.ReactNode;\n contentClasses?: string;\n containerClasses?: string;\n numberOfIngredients: number;\n}\n\nconst RecipeItemIngredients: FC<React.PropsWithChildren<RecipeItemIngredientsProps>> = (props) => {\n return (\n <div className={classNames('IngredientList', props.containerClasses)}>\n <div className=\"IngredientList-header u-noPrint\">{props.buttonRender}</div>\n\n <div className=\"IngredientList-container\">\n <div className={classNames('IngredientList-content', props.contentClasses)}>\n {props.recipeParts?.map((recipePart, index) => (\n <ul\n className={classNames('List List--section')}\n key={`${recipePart.name}_${index}`}\n >\n {index === 0 && (\n <>\n <li className=\"List-heading u-lg-flex u-flexDirectionRow u-flexAlignCenter\">\n <span\n className=\"u-textWeightBold\"\n style={{\n fontSize: '22px',\n }}\n >\n Ingredienser\n </span>\n <span\n className=\"u-textNormal u-textWeightNormal u-noPrint u-colorGray u-marginLxsm\"\n style={{\n marginTop: '4px',\n }}\n >\n ({props.numberOfIngredients})\n </span>\n </li>\n <li className=\"u-borderBottomGrayLight3\" />\n </>\n )}\n {recipePart.name && (\n <>\n <li className=\"List-heading u-textLarge u-textWeightBold\">\n {recipePart.name}\n </li>\n <li className=\"u-borderBottomGrayLight3\" />\n </>\n )}\n {recipePart.ingredients\n .sort((a, b) => a.sequenceNumber - b.sequenceNumber)\n .map((ingredient, _index) => (\n <li\n className=\"u-paddingHxsm u-textNormal u-colorBase\"\n key={`${ingredient.friendlyText}_${_index}`}\n >\n {ingredient.formattedQuantity && (\n <span>\n {ingredient.formattedQuantity} {ingredient.unit}\n </span>\n )}{' '}\n <span className=\"u-textWeightBold\">\n {ingredient.friendlyText}\n </span>\n </li>\n ))}\n </ul>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default RecipeItemIngredients;\n","/* eslint-disable react/no-array-index-key */\nimport type { FC } from 'react';\nimport * as React from 'react';\n\nimport type { CookingInstructions } from '../../models';\n\ninterface RecipeItemInstructionsProps {\n instructions: CookingInstructions[];\n servingTips: string;\n}\n\nconst RecipeItemInstructions: FC<React.PropsWithChildren<RecipeItemInstructionsProps>> = (\n props,\n) => {\n if (!props.instructions.length) return null;\n\n return (\n <div className=\"u-paddingHlg u-lg-paddingHxlg u-paddingTlg u-bgWhite\">\n <h2\n className=\"Heading Heading--h3 Heading--block u-lg-flex u-marginBsm u-paddingHz u-borderBottomGrayLight3\"\n style={{ fontSize: '22px' }}\n >\n Gör sÃ¥ här\n </h2>\n <div className=\"List List--orderedRecipe-container\">\n {props.instructions.map((instruction, index) => (\n <React.Fragment key={`${instruction}_${index}`}>\n {instruction.title && (\n <>\n <h2 className=\"Heading Heading--h4 u-marginTlg u-textLarge\">\n {instruction.title}\n </h2>\n <div className=\"u-borderBottomGrayLight3 u-marginTxxsm u-marginBmd\" />\n </>\n )}\n\n <ol className=\"List List--orderedRecipe u-textNormal\">\n {instruction.instructions.map((int, _index) => (\n <li className=\"u-colorBase\" key={`${int}_${_index}`}>\n {int}\n </li>\n ))}\n </ol>\n </React.Fragment>\n ))}\n {props.servingTips && (\n <div className=\"u-paddingAlg u-bgGreenLight2 u-borderRadius4 u-marginTxlg\">\n <h2 className=\"Heading Heading--h4 u-marginAz\">Servering</h2>\n <div className=\"u-paddingTmd\">{props.servingTips}</div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default RecipeItemInstructions;\n","import { keepPreviousData, useQuery } from '@tanstack/react-query';\n\nimport { appConfig } from '../../../../appConfig';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { contentDeliveryApi } from '../../../episerver/api/contentDeliveryApi';\nimport type { EpiRecipeItemPageType } from '../../../episerver/components/pages/EpiRecipeItemPage/epiRecipeItemPageType';\nimport type { EpiRecipeSettingsPageType } from '../../../episerver/components/pages/EpiRecipeSettingsPage/epiRecipeSettingsPageType';\nimport recipeFlow from '../../flow/recipeFlow';\nimport { gastrofyQueryKeys } from '../../recipeQueries';\n\nconst useRecipeItemPage = (recipePageContentId?: number) => {\n const { data, isFetching } = useQuery({\n queryKey: [\n `recipePage`,\n recipePageContentId,\n `recipePageSettings`,\n appConfig.coopSettings.recipe.settingsPageContentId,\n ],\n queryFn: async () => {\n const recipePagePromise = contentDeliveryApi.getContentExtended<EpiRecipeItemPageType>(\n recipePageContentId!.toString(),\n { depth: 3, expand: ['similarRecipes'] },\n );\n\n const recipeSettingsPagePromise =\n contentDeliveryApi.getContentExtended<EpiRecipeSettingsPageType>(\n appConfig.coopSettings.recipe.settingsPageContentId,\n {\n depth: 1,\n },\n );\n\n const [recipePage, recipeSettingsPage] = await Promise.all([\n recipePagePromise,\n recipeSettingsPagePromise,\n ]);\n\n return {\n recipePage,\n recipeSettingsPage,\n };\n },\n enabled: !!recipePageContentId,\n });\n\n return { data, isFetching };\n};\n\nexport const useBuyableRecipeQuery = (\n request: Parameters<typeof recipeFlow.discoverNorthforkRecipes>[0],\n) => {\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n\n const query = useQuery({\n queryKey: gastrofyQueryKeys.byRequest(request),\n queryFn: () => recipeFlow.discoverNorthforkRecipes(request),\n placeholderData: keepPreviousData,\n enabled: hasActiveStoreSelection && !!request,\n initialData: null,\n });\n\n return query;\n};\n\nexport default useRecipeItemPage;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAddList = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 3C6.89543 3 6 3.89543 6 5V19C6 20.1046 6.89543 21 8 21H11.5C12.0523 21 12.5 21.4477 12.5 22C12.5 22.5523 12.0523 23 11.5 23H8C5.79086 23 4 21.2091 4 19V5C4 2.79086 5.79086 1 8 1H8.52876C9.26313 1 9.8469 1.39552 10.2113 1.79709C10.5215 2.13892 11.095 2.59091 12 2.59091C12.905 2.59091 13.4785 2.13892 13.7887 1.79709C14.1531 1.39552 14.7369 1 15.4712 1H16C18.2091 1 20 2.79086 20 5V10.5C20 11.0523 19.5523 11.5 19 11.5C18.4477 11.5 18 11.0523 18 10.5V5C18 3.89543 17.1046 3 16 3H15.4716C15.4687 3.00024 15.4519 3.00251 15.4198 3.01932C15.3782 3.04116 15.3244 3.08092 15.2697 3.14116C14.7282 3.73782 13.6568 4.59091 12 4.59091C10.3432 4.59091 9.27176 3.73782 8.73028 3.14116C8.67562 3.08092 8.62183 3.04116 8.58019 3.01932C8.54811 3.00251 8.53134 3.00024 8.52845 3H8ZM8 8C8 7.44772 8.44772 7 9 7H15C15.5523 7 16 7.44772 16 8C16 8.55228 15.5523 9 15 9H9C8.44772 9 8 8.55228 8 8ZM8 12C8 11.4477 8.44772 11 9 11H13C13.5523 11 14 11.4477 14 12C14 12.5523 13.5523 13 13 13H9C8.44772 13 8 12.5523 8 12Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M18 23C20.7614 23 23 20.7614 23 18C23 15.2386 20.7614 13 18 13C15.2386 13 13 15.2386 13 18C13 20.7614 15.2386 23 18 23ZM19 15.5C19 14.9477 18.5523 14.5 18 14.5C17.4477 14.5 17 14.9477 17 15.5L17 17H15.5C14.9477 17 14.5 17.4477 14.5 18C14.5 18.5523 14.9477 19 15.5 19H17V20.5C17 21.0523 17.4477 21.5 18 21.5C18.5523 21.5 19 21.0523 19 20.5V19H20.5C21.0523 19 21.5 18.5523 21.5 18C21.5 17.4477 21.0523 17 20.5 17H19V15.5Z\"\n })));\n};\nexport default SvgAddList;","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPrint = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 3C6 2.44772 6.44772 2 7 2H17C17.5523 2 18 2.44772 18 3V9C18 9.55228 17.5523 10 17 10C16.4477 10 16 9.55228 16 9V4H8V9C8 9.55228 7.55228 10 7 10C6.44772 10 6 9.55228 6 9V3Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.8 10C4.58385 10 4.37901 10.0849 4.22991 10.2322C4.08123 10.379 4 10.5755 4 10.7778V15.2222C4 15.4245 4.08123 15.621 4.22991 15.7678C4.37901 15.9151 4.58385 16 4.8 16H6.6C7.15228 16 7.6 16.4477 7.6 17C7.6 17.5523 7.15228 18 6.6 18H4.8C4.06137 18 3.35054 17.7103 2.82451 17.1908C2.29806 16.6708 2 15.963 2 15.2222V10.7778C2 10.037 2.29806 9.32917 2.82451 8.80921C3.35054 8.28968 4.06137 8 4.8 8H19.2C19.9386 8 20.6495 8.28968 21.1755 8.80921C21.7019 9.32916 22 10.037 22 10.7778V15.2222C22 15.963 21.7019 16.6708 21.1755 17.1908C20.6495 17.7103 19.9386 18 19.2 18H17.4C16.8477 18 16.4 17.5523 16.4 17C16.4 16.4477 16.8477 16 17.4 16H19.2C19.4162 16 19.621 15.9151 19.7701 15.7678C19.9188 15.621 20 15.4245 20 15.2222V10.7778C20 10.5755 19.9188 10.379 19.7701 10.2322C19.621 10.0849 19.4162 10 19.2 10H4.8Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 14C6 13.4477 6.44772 13 7 13H17C17.5523 13 18 13.4477 18 14V21C18 21.5523 17.5523 22 17 22H7C6.44772 22 6 21.5523 6 21V14ZM8 15V20H16V15H8Z\"\n })));\n};\nexport default SvgPrint;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPinterestmono = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Brand=pinterest, monochrome=True\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"layer\",\n d: \"M8.47165 23C9.03415 22.0587 9.75737 20.7041 10.0444 19.5963C10.2166 18.9363 10.9225 16.2443 10.9225 16.2443C11.3817 17.1225 12.7248 17.8629 14.1541 17.8629C18.4072 17.8629 21.4666 13.9541 21.4666 9.09826C21.4666 4.44329 17.6668 0.959229 12.7765 0.959229C6.69232 0.959229 3.46655 5.04022 3.46655 9.48857C3.46655 11.5549 4.56859 14.1263 6.32497 14.9471C6.59474 15.0734 6.7325 15.016 6.79563 14.7577C6.84155 14.5625 7.08262 13.604 7.18594 13.162C7.22038 13.0185 7.20316 12.898 7.08836 12.7603C6.50865 12.0543 6.03798 10.7571 6.03798 9.54596C6.03798 6.43499 8.3913 3.42734 12.4034 3.42734C15.8645 3.42734 18.2924 5.7864 18.2924 9.1614C18.2924 12.9726 16.3696 15.6129 13.8613 15.6129C12.478 15.6129 11.4449 14.4707 11.772 13.0645C12.1681 11.3884 12.9372 9.5804 12.9372 8.36931C12.9372 5.32721 8.60367 5.74622 8.60367 9.80426C8.60367 11.0498 9.02267 11.8993 9.02267 11.8993C7.22038 19.5217 6.95061 19.6193 7.3237 22.9541L7.44997 23C3.22567 23 12.9525 23 8.47165 23Z\"\n }))));\n};\nexport default SvgPinterestmono;","import { Notification } from '@coop/components';\nimport type { FC } from 'react';\nimport { useEffect, useState } from 'react';\n\ninterface AddRecipeToShoppingListNotificationsProps {\n error: string;\n reset: () => void;\n addRecipeStatus: string;\n removeRecipeStatus: string;\n}\n\nconst AddRecipeToShoppingListNotifications: FC<\n React.PropsWithChildren<AddRecipeToShoppingListNotificationsProps>\n> = ({ error, reset, addRecipeStatus, removeRecipeStatus }) => {\n const [showAddSuccessNotice, setShowAddSuccessNotice] = useState(false);\n const [showRemoveSuccessNotice, setShowRemoveSuccessNotice] = useState(false);\n\n useEffect(() => {\n if (addRecipeStatus === 'success') {\n setShowAddSuccessNotice(true);\n reset();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addRecipeStatus]);\n\n useEffect(() => {\n if (removeRecipeStatus === 'success') {\n setShowRemoveSuccessNotice(true);\n reset();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [removeRecipeStatus]);\n\n return (\n <>\n <Notification\n show={error?.length > 0}\n type=\"alert\"\n close={reset}\n message={error}\n hideAfterMiliseconds={2000}\n />\n <Notification\n show={showAddSuccessNotice}\n type=\"success\"\n close={() => setShowAddSuccessNotice(false)}\n message=\"Du la till receptet i inköpslistan!\"\n hideAfterMiliseconds={2000}\n />\n <Notification\n show={showRemoveSuccessNotice}\n type=\"success\"\n close={() => setShowRemoveSuccessNotice(false)}\n message=\"Du tog bort receptet frÃ¥n inköpslistan!\"\n hideAfterMiliseconds={2000}\n />\n </>\n );\n};\n\nexport default AddRecipeToShoppingListNotifications;\n","import type { FC } from 'react';\nimport { useEffect } from 'react';\n\nimport { ga4ShoppingListTracking } from '../../../common/tracking/ga4/shoppingList';\nimport AddToShoppingListModal from '../../base/AddToShoppingListModal';\nimport useAddRecipeToShoppingList from '../../hooks/useAddRecipeToShoppingList';\nimport type { ShoppingListModel } from '../../models';\nimport AddRecipeToShoppingListNotifications from './AddRecipeToShoppingListNotifications.tsx';\n\ninterface AddRecipeModalProps {\n isOpen: boolean;\n recipeId: number;\n close: () => void;\n}\n\nconst AddRecipeToShoppingListModal: FC<React.PropsWithChildren<AddRecipeModalProps>> = ({\n isOpen,\n close,\n recipeId,\n}) => {\n const {\n fetchListsDispatcher: { execute: fetchLists, result: lists, isLoading: isLoadingLists },\n addRecipeToNewListDispatcher: {\n execute: addRecipeToNewList,\n error: addRecipeToNewListError,\n reset: addRecipeToNewListReset,\n },\n addRecipeToListDispatcher: {\n execute: addRecipeToList,\n status: addRecipeStatus,\n error: addRecipeError,\n reset: addRecipeReset,\n },\n removeRecipeFromListDispatcher: {\n execute: removeRecipeFromList,\n status: removeRecipeStatus,\n error: removeRecipeError,\n reset: removeRecipeReset,\n },\n } = useAddRecipeToShoppingList(recipeId);\n\n const noLists = lists === undefined;\n\n useEffect(() => {\n if (noLists && isOpen) {\n fetchLists();\n }\n }, [fetchLists, noLists, isOpen]);\n\n const onAddRecipeToNewListClick = () => {\n ga4ShoppingListTracking.create();\n ga4ShoppingListTracking.add();\n addRecipeToNewList(recipeId);\n };\n\n const onAddRecipeToList = (list: ShoppingListModel) => {\n ga4ShoppingListTracking.add();\n addRecipeToList(list, recipeId);\n };\n\n const onRemoveRecipeClick = (list: ShoppingListModel) => {\n ga4ShoppingListTracking.remove();\n removeRecipeFromList(list, recipeId);\n };\n\n return (\n <AddToShoppingListModal\n isOpen={isOpen}\n close={close}\n lists={lists}\n isLoadingLists={isLoadingLists}\n onAddToNewListClick={onAddRecipeToNewListClick}\n isItemAdded={(list) => list.RecipeIds.includes(recipeId)}\n onAddClick={onAddRecipeToList}\n onRemoveClick={onRemoveRecipeClick}\n notification={\n <AddRecipeToShoppingListNotifications\n error={\n addRecipeError?.friendlyMessage ||\n removeRecipeError?.friendlyMessage ||\n addRecipeToNewListError?.friendlyMessage\n }\n reset={() => {\n addRecipeReset();\n removeRecipeReset();\n addRecipeToNewListReset();\n }}\n addRecipeStatus={addRecipeStatus}\n removeRecipeStatus={removeRecipeStatus}\n />\n }\n />\n );\n};\n\nexport default AddRecipeToShoppingListModal;\n","import type { ApiRecipeIngredient } from '../../../models/recipe/recipeModel';\nimport { getAuthToken } from '../../common/api/auth/getAuthToken';\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport recipeFlow from '../../recipe/flow/recipeFlow';\nimport shoppingListApi from '../api/shoppingListApi';\nimport type { ShoppingListModel } from '../models';\nimport {\n createIngredientRequestBody,\n getDefaultListName,\n getIngredientsThatShouldBeUpdatedInMergedForm,\n getIngredientsThatShouldNotBeUpdated,\n} from '../utils';\n\nconst useAddRecipeToShoppingList = (recipeId: number) => {\n const fetchListsDispatcher = useAsyncDispatcher(\n async () => {\n const spaToken = await getAuthToken();\n return shoppingListApi.getLists(spaToken.token);\n },\n { keepPreviousResult: true },\n );\n\n const removeRecipeFromListDispatcher = useAsyncDispatcher(\n async (list: ShoppingListModel, _recipeId: number) => {\n const spaToken = await getAuthToken();\n\n await shoppingListApi.list.recipe.remove({\n token: spaToken.token,\n listId: list.ID,\n recipeId: _recipeId,\n });\n\n fetchListsDispatcher.execute();\n },\n );\n\n const addRecipeToListDispatcher = useAsyncDispatcher(\n async (list: ShoppingListModel, _recipeId: number) => {\n const spaToken = await getAuthToken();\n const recipe = await recipeFlow.getRecipeById(recipeId);\n const currentList = await shoppingListApi.list.get(spaToken.token, list.ID);\n\n const ingredients = recipe.recipePart\n .reduce((acc, part) => acc.concat(part.ingredients), [] as ApiRecipeIngredient[])\n .map((ing) => createIngredientRequestBody(ing, recipe.id));\n\n await shoppingListApi.list.recipe.add({\n token: spaToken.token,\n listId: currentList.ID,\n recipeId: _recipeId,\n ingredients: getIngredientsThatShouldNotBeUpdated(currentList, ingredients),\n });\n\n await shoppingListApi.list.product.update({\n token: spaToken.token,\n id: currentList.ID,\n products: getIngredientsThatShouldBeUpdatedInMergedForm(currentList, ingredients),\n });\n\n fetchListsDispatcher.execute();\n },\n );\n\n const addRecipeToNewListDispatcher = useAsyncDispatcher(async (_recipeId: number) => {\n const spaToken = await getAuthToken();\n const createRequest = { name: getDefaultListName() };\n const newList = await shoppingListApi.list.create(spaToken.token, createRequest);\n await addRecipeToListDispatcher.execute(newList, _recipeId);\n });\n\n return {\n fetchListsDispatcher,\n addRecipeToListDispatcher,\n removeRecipeFromListDispatcher,\n addRecipeToNewListDispatcher,\n };\n};\n\nexport default useAddRecipeToShoppingList;\n","import { Icon } from '@coop/components';\nimport { AddListIcon } from '@coop/icons';\nimport type { FC } from 'react';\nimport { useState } from 'react';\n\nimport tracking from '../../../common/tracking/tracking';\nimport AddRecipeToShoppingListModal from './AddRecipeToShoppingListModal';\n\nexport interface AddRecipeToShoppingListButtonProps {\n recipeId: number;\n recipeName: string;\n isMobile?: boolean;\n}\n\nconst AddRecipeToShoppingListButton: FC<\n React.PropsWithChildren<AddRecipeToShoppingListButtonProps>\n> = ({ recipeId, recipeName, isMobile = false }) => {\n const [userActivatedButton, setUserActivatedButton] = useState(false);\n\n const showModal = () => {\n setUserActivatedButton(true);\n\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Lägg i inköpslista',\n recipeName,\n recipeName,\n );\n };\n\n return (\n <>\n <AddRecipeToShoppingListModal\n isOpen={userActivatedButton}\n close={() => setUserActivatedButton(false)}\n recipeId={recipeId}\n />\n {isMobile ? (\n <button type=\"button\" className=\"Link\" onClick={showModal}>\n <span className=\"u-flex u-flexDirectionColumn u-flexAlignCenter\">\n <Icon\n icon={AddListIcon}\n className=\"u-alignMiddle u-marginBxsm\"\n width={24}\n height={24}\n />\n <span className=\"u-textFamilyPrimaryLight u-textNormal\">\n Lägg i inköpslista\n </span>\n </span>\n </button>\n ) : (\n <button type=\"button\" className=\"Link\" onClick={showModal}>\n <Icon\n icon={AddListIcon}\n className=\"u-alignMiddle u-marginRxsm\"\n width={24}\n height={24}\n />\n\n <span className=\"u-textFamilyPrimaryLight u-textNormal\">\n Lägg i inköpslista\n </span>\n </button>\n )}\n </>\n );\n};\n\nexport default AddRecipeToShoppingListButton;\n","import { Icon } from '@coop/components';\nimport {\n AddListIcon,\n EmailIcon,\n ExternalLinkIcon,\n FacebookLogoMonoIcon,\n PinterestLogoMonoIcon,\n PrintIcon,\n XLogoMonoIcon,\n} from '@coop/icons';\nimport classNames from 'classnames';\nimport type { FC } from 'react';\nimport { useState } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\nimport { useIsDesktop } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport { Tooltip } from '../../../common/components/atoms/Tooltip';\nimport tracking from '../../../common/tracking/tracking';\nimport AddRecipeToShoppingListButton from '../../../shoppingList/components/recipe/AddRecipeToShoppingListButton';\n\ninterface RecipeItemSocialMediaProps {\n recipeId: number;\n recipeName: string;\n}\n\nconst RecipeItemSocialMedia: FC<React.PropsWithChildren<RecipeItemSocialMediaProps>> = (props) => {\n const [showSocialMedia, setShowSocialMedia] = useState(false);\n const isDesktop = useIsDesktop();\n\n const handlePrintClick = () => {\n window.print();\n\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Skriv ut recept',\n props.recipeName,\n props.recipeName,\n );\n };\n\n return (\n <>\n <div className={classNames('RecipeSocial u-flex', 'u-flexJustifySpaceBetween')}>\n <div\n className={classNames('RecipeSocial-buy u-textLeft', isDesktop && 'u-flex200')}\n >\n {appConfig.coopUserSettings.isAuthenticated ? (\n <AddRecipeToShoppingListButton\n recipeId={props.recipeId}\n recipeName={props.recipeName}\n />\n ) : (\n <a href={appConfig.coopSettings.loginUrl} className=\"Link\" rel=\"nofollow\">\n <Icon\n icon={AddListIcon}\n className=\"u-alignMiddle u-marginRxsm\"\n width={20}\n height={20}\n />\n\n <span\n className={classNames(\n 'u-textFamilyPrimaryLight',\n isDesktop ? 'u-textNormal' : 'u-textSmall',\n )}\n >\n Lägg i inköpslista\n </span>\n </a>\n )}\n </div>\n <button\n type=\"button\"\n className={classNames('Link', isDesktop && 'u-flex200')}\n onClick={handlePrintClick}\n >\n <Icon\n icon={PrintIcon}\n className=\"u-alignMiddle u-marginRxsm\"\n width={20}\n height={20}\n />\n\n <span\n className={classNames(\n 'u-textFamilyPrimaryLight',\n isDesktop ? 'u-textNormal' : 'u-textSmall',\n )}\n >\n Skriv ut\n </span>\n </button>\n\n <div\n className={classNames(\n 'RecipeSocial-share u-textRight',\n isDesktop && 'u-flex200',\n )}\n >\n <Tooltip\n visibleTooltip={showSocialMedia && isDesktop}\n defaultCursor\n style={{ display: 'inline-block' }}\n className=\"Tooltip--small\"\n handleOutsideClick={() => setShowSocialMedia(false)}\n useOutsideClick={isDesktop}\n content={<SocialMedia recipeName={props.recipeName} />}\n >\n <button\n type=\"button\"\n className=\"Link\"\n onClick={() => {\n setShowSocialMedia((prev) => !prev);\n }}\n >\n <Icon\n icon={ExternalLinkIcon}\n className=\"u-alignMiddle u-marginRxsm\"\n width={20}\n height={20}\n />\n <span\n className={classNames(\n 'u-textFamilyPrimaryLight',\n isDesktop ? 'u-textNormal' : 'u-textSmall',\n )}\n >\n Dela\n </span>\n </button>\n </Tooltip>\n </div>\n </div>\n {!isDesktop && showSocialMedia && (\n <div className=\"Main-container Main-container--padding u-paddingTmd\">\n <SocialMedia recipeName={props.recipeName} />\n </div>\n )}\n </>\n );\n};\n\ninterface SocialMediaProps {\n recipeName: string;\n}\n\nconst SocialMedia: FC<React.PropsWithChildren<SocialMediaProps>> = (props) => {\n const handleShareLinkClick = (shareName: string) => () => {\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Dela recept',\n shareName,\n props.recipeName,\n );\n };\n\n const canonicalUrl = window.location.origin + window.location.pathname;\n const mailMessageBody =\n '%0D%0A%0D%0A' +\n 'Kolla in det här goda receptet frÃ¥n Coop:%0D%0A%0D%0A' +\n `${canonicalUrl}%0D%0A%0D%0A`;\n\n return (\n <div className=\"u-textCenter\">\n <span className=\"RecipeSocial-shareTitle\">Dela detta recept!</span>\n <div className=\"RecipeSocial-shareIcons\">\n <a\n className=\"u-paddingAxxxsm u-marginHxxsm\"\n href={`https://www.facebook.com/share.php?u=${encodeURIComponent(\n canonicalUrl,\n )}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleShareLinkClick('Facebook')}\n aria-label=\"Dela via Facebook\"\n >\n <Icon icon={FacebookLogoMonoIcon} width={20} height={20} />\n </a>\n <a\n className=\"u-paddingAxxxsm u-marginHxxsm\"\n href={`//www.pinterest.com/pin/create/button/?url=${encodeURIComponent(\n canonicalUrl,\n )}&description=${encodeURIComponent(props.recipeName)}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleShareLinkClick('Pinterest')}\n aria-label=\"Dela via Pinterest\"\n >\n <Icon icon={PinterestLogoMonoIcon} width={20} height={20} />\n </a>\n <a\n className=\"u-paddingAxxxsm u-marginHxxsm\"\n href={`https://twitter.com/intent/tweet?text=${encodeURIComponent(\n 'Kolla in det här goda receptet frÃ¥n Coop',\n )})&url=${encodeURIComponent(canonicalUrl)}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleShareLinkClick('Twitter')}\n aria-label=\"Dela via Twitter\"\n >\n <Icon icon={XLogoMonoIcon} width={18} height={18} />\n </a>\n <a\n className=\"u-paddingAxxxsm u-marginHxxsm\"\n href={`mailto:?Subject=${props.recipeName}&Body=${mailMessageBody}`}\n onClick={handleShareLinkClick('Mail')}\n aria-label=\"Dela via e-post\"\n >\n <Icon icon={EmailIcon} width={20} height={20} className=\"u-marginRxsm\" />\n </a>\n </div>\n </div>\n );\n};\n\nexport default RecipeItemSocialMedia;\n","import type { FC } from 'react';\n\ninterface RecipeItemTipsProps {\n tips: string;\n}\n\nconst RecipeItemTips: FC<React.PropsWithChildren<RecipeItemTipsProps>> = (props) => {\n if (!props.tips) return null;\n\n return (\n <div className=\"u-paddingHlg u-lg-paddingHxlg u-bgWhite\">\n <h2 className=\"Heading Heading--h4 Heading--borderTop u-marginAz\">Tips</h2>\n <div className=\"Testimonial\">\n <img\n className=\"Testimonial-image\"\n src=\"/Assets/Images/tipauthor.png\"\n alt=\"tipauthor\"\n />\n <div className=\"Testimonial-text\">\n <p className=\"Testimonial-quote\">{props.tips}</p>\n <p className=\"Testimonial-author\">Sara Begner, Chef för Coops provkök</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RecipeItemTips;\n","import type { FC } from 'react';\n\nimport FavoriteRecipeToggle from '../../../common/components/molecules/FavoriteRecipeToggle';\nimport { useSingleFavorite } from '../../../common/hooks/useFavouriteRecipes';\n\nconst RecipeItemFavoriteToggle: FC<\n React.PropsWithChildren<{ recipeExternalId: string; recipeName: string }>\n> = (props) => {\n const { isFavourite, onFavouriteRecipeToggleClick, isLoading } = useSingleFavorite(\n props.recipeExternalId,\n props.recipeName,\n );\n\n return (\n <FavoriteRecipeToggle\n isFavorite={isFavourite}\n onClick={onFavouriteRecipeToggleClick}\n disabled={isLoading}\n />\n );\n};\n\nexport default RecipeItemFavoriteToggle;\n","import { Icon } from '@coop/components';\nimport { StarFilledIcon, StarIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\ninterface RecipeRatingStarsProps {\n numOfStarsChosen: number;\n setNumOfStarsChosen: (num: number) => void;\n ratingFirstText: string;\n ratingOneStarText: string;\n ratingTwoStarText: string;\n ratingThreeStarText: string;\n ratingFourStarText: string;\n ratingFiveStarText: string;\n}\n\nconst RecipeRatingStars: FC<React.PropsWithChildren<RecipeRatingStarsProps>> = ({\n numOfStarsChosen,\n setNumOfStarsChosen,\n ratingFirstText,\n ratingOneStarText,\n ratingTwoStarText,\n ratingThreeStarText,\n ratingFourStarText,\n ratingFiveStarText,\n}) => {\n const NUMBER_OF_STARS = 5;\n const lastChosenStarIndex = numOfStarsChosen - 1;\n const starsChosenStateArray = Array.from(\n { length: NUMBER_OF_STARS },\n (_, index) => index <= lastChosenStarIndex,\n );\n\n const starIndexToText = [\n ratingOneStarText,\n ratingTwoStarText,\n ratingThreeStarText,\n ratingFourStarText,\n ratingFiveStarText,\n ];\n\n const currentText = starIndexToText[lastChosenStarIndex];\n\n return (\n <>\n {currentText ? (\n <h3\n className=\"u-textWeightBold u-colorGreen u-textXLarge\"\n style={{ lineHeight: '22px' }}\n >\n {currentText}\n </h3>\n ) : (\n <h3 className=\"u-textWeightBold u-textNormal\" style={{ lineHeight: '22px' }}>\n {ratingFirstText}\n </h3>\n )}\n\n <div className=\"u-flex u-flexDirectionRow u-flexJustifyCenter\">\n {starsChosenStateArray.map((isHoverState, index) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n className={index !== 4 ? 'u-marginRsm' : ''}\n onMouseEnter={() => setNumOfStarsChosen(index + 1)}\n onClick={() => setNumOfStarsChosen(index + 1)}\n >\n <Icon\n icon={isHoverState ? StarFilledIcon : StarIcon}\n name=\"rating-star\"\n title=\"Betyg\"\n width={33}\n height={33}\n color=\"dsGreen\"\n className=\"u-cursorPointer\"\n />\n </div>\n ))}\n </div>\n </>\n );\n};\n\nexport default RecipeRatingStars;\n","const RecipeRatingStewIcon = () => (\n <svg width=\"68\" height=\"65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.164 64.578c14.606 0 26.65-2.698 26.65-6.027s-12.044-6.027-26.65-6.027c-15.109 0-27.153 2.698-27.153 6.027s12.044 6.027 27.153 6.027z\"\n fill=\"url(#paint0_linear)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.033 27.612l1.075 29.06s4.181 7.176 20.667 7.176c16.487 0 20.669-8.73 20.669-8.73l1.075-29.778s0-1.913-2.629-3.588c-2.628-1.674-14.007-4.664-19.07-4.305-5.062.359-20.832 3.11-21.07 4.904-.24 1.793-.717 5.261-.717 5.261z\"\n fill=\"#00AA46\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.647 36.032c-1.383-1.014-2.351-3.519-1.146-4.426 1.268-.954 4.515-.021 6.064.457-.22-1.014-.397-1.7-.397-1.7-1.048-.412-6.57-3.23-8.482-1.196-1.51 1.606-.299 6.04 1.433 7.833 2.076 2.15 5.257 4.216 7.407 3.633.655-.178.876-1.2.87-2.535-1.713.232-4.142-.889-5.75-2.066zM55.03 35.863c1.657-.9 3.005-3.4 1.75-4.484-1.319-1.137-5.055-.535-6.842-.212.354-1.032.625-1.728.625-1.728 1.218-.308 7.703-2.618 9.63-.282 1.522 1.847-.303 6.33-2.434 8.002-2.552 2.005-6.334 3.797-8.682 2.944-.715-.26-.855-1.35-.707-2.74 1.895.436 4.734-.456 6.66-1.5z\"\n fill=\"#00AA46\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.586 25.03c0 3.21 9.012 5.81 20.13 5.81 11.118 0 20.13-2.6 20.13-5.81 0-3.209-9.012-5.81-20.13-5.81-11.118 0-20.13 2.602-20.13 5.81z\"\n fill=\"#333\"\n />\n <mask id=\"a\" maskUnits=\"userSpaceOnUse\" x=\"37\" y=\"0\" width=\"31\" height=\"31\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M37.49 0h29.862v30.392H37.49V0z\"\n fill=\"#fff\"\n />\n </mask>\n <g mask=\"url(#a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M64.885 3.47c0 1.004-1.587 2.676-2.59 2.676-1.004 0-1.52-1.101-1.254-2.07.334-1.213 2.018-2.235 3.008-2.07 1.003.167.836.46.836 1.464zM66.064.944c-1.434-1.435-4.05-1.145-5.018.269C49.31 18.344 37.49 30.393 37.49 30.393l4.752-.814S61.315 10.72 66.933 4.173c.854-.995.321-2.037-.87-3.23z\"\n fill=\"#FFB43D\"\n />\n </g>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M.387 24.622s-1.314 5.382 22.938 1.197c22.788-3.934 19.712-9.568 19.712-9.568s-7.42-7.966-22.7-5.142C4.808 13.98.388 24.622.388 24.622z\"\n fill=\"#00AA46\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.218 7.521s2.748-.239 2.33-1.196c-.596-1.362-2.09-1.913-4.122-1.315-2.03.597-3.822 1.435-3.703 2.033.12.598 1.104 1.768 1.924 1.279.943-.562 1.767 1.445 1.9 2.428.079.593-2.63.777-3.227 1.376-.597.597-.893 1.569-.17 1.928.722.358 1.886.779 3.88.584 2.443-.24 4.744-1.089 5.927-1.765 1.414-.808 1.287-1.889-.386-2.128-1.672-.24-2.68-.354-3.277-.234-.598.12-1.076-2.99-1.076-2.99z\"\n fill=\"#005537\"\n />\n <mask id=\"b\" maskUnits=\"userSpaceOnUse\" x=\"8\" y=\"17\" width=\"44\" height=\"47\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.82 17.447c-5.062.359-20.83 3.109-21.07 4.904-.239 1.793-.717 5.261-.717 5.261l1.075 29.06s4.181 7.176 20.668 7.176c16.486 0 20.668-8.73 20.668-8.73l1.075-29.778s0-1.914-2.63-3.588c-2.48-1.58-12.766-4.334-18.166-4.334-.32 0-.62.009-.902.029z\"\n fill=\"#fff\"\n />\n </mask>\n <g mask=\"url(#b)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.088 35.71l4.072.44c2.825.305 6.789-.803 8.21 1.848l1.636 3.054c1.753 3.27 5.15 5.127 8.618 4.707h.004c2.648-.321 5.308.685 7.208 2.729l2.395 2.575c1.901 2.044 4.56 3.05 7.209 2.73l1.956-.237c2.664-.323 5.336.697 7.239 2.76l1.463 1.59-28.935 8.663-18.677-6.826-2.398-24.032z\"\n fill=\"url(#paint1_linear)\"\n />\n </g>\n <mask id=\"c\" maskUnits=\"userSpaceOnUse\" x=\"8\" y=\"17\" width=\"44\" height=\"47\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.82 17.447c-5.062.359-20.83 3.109-21.07 4.904-.239 1.793-.717 5.261-.717 5.261l1.075 29.06s4.181 7.176 20.668 7.176c16.486 0 20.668-8.73 20.668-8.73l1.075-29.778s0-1.914-2.63-3.588c-2.48-1.58-12.766-4.334-18.166-4.334-.32 0-.62.009-.902.029z\"\n fill=\"#fff\"\n />\n </mask>\n <g mask=\"url(#c)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.037 42.475l3.147.681a6.834 6.834 0 014.858 4.045l.992 2.376a6.831 6.831 0 006.302 4.2h.004c2.104 0 4.09.97 5.385 2.63l1.632 2.093a6.83 6.83 0 005.385 2.63h1.555c2.116 0 4.112.982 5.405 2.658l.996 1.29-23.475 3.766-13.978-6.637 1.792-19.732z\"\n fill=\"url(#paint2_linear)\"\n />\n </g>\n <mask id=\"d\" maskUnits=\"userSpaceOnUse\" x=\"37\" y=\"0\" width=\"31\" height=\"31\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M61.046 1.213C49.31 18.343 37.491 30.392 37.491 30.392l4.751-.813S61.315 10.72 66.934 4.172c.853-.994.32-2.037-.87-3.228C65.417.296 64.529 0 63.66 0c-1.056 0-2.083.438-2.614 1.213zm-.005 2.863c.334-1.213 2.018-2.235 3.008-2.07 1.003.167.835.459.835 1.463 0 1.006-1.586 2.677-2.59 2.677-1.003 0-1.52-1.101-1.253-2.07z\"\n fill=\"#fff\"\n />\n </mask>\n <g mask=\"url(#d)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M52.837 8.634c1.792 2.696 1.792 5.745 0 7.898-1.792 2.152-2.509 3.05-1.971 4.484.537 1.435-4.66 10.763-4.66 10.763l-10.035.897 1.076-8.072 15.59-15.97z\"\n fill=\"#DD8823\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"-79.235\"\n y1=\"35.676\"\n x2=\"-78.519\"\n y2=\"79.123\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#959595\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear\"\n x1=\"18.047\"\n y1=\"30.965\"\n x2=\"-3.904\"\n y2=\"74.397\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#00AA46\" />\n <stop offset=\"1\" stopColor=\"#005537\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear\"\n x1=\"24.51\"\n y1=\"-2.975\"\n x2=\"-6.768\"\n y2=\"58.718\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#00AA46\" />\n <stop offset=\"1\" stopColor=\"#005537\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nexport default RecipeRatingStewIcon;\n","import { Button } from '@coop/components';\nimport type { FC } from 'react';\n\nimport { Modal } from '../../../common/components/atoms/Modal';\nimport type { AsyncDispatcher } from '../../../common/hooks/useAsyncDispatcher';\nimport { useGroupError } from '../../../common/hooks/useGroupError';\nimport { ErrorGroup } from '../../../common/store/structureDefinitions/errorsState';\nimport RecipeRatingStars from './RecipeRatingStars';\nimport RecipeRatingStewIcon from './RecipeRatingStewIcon';\n\ninterface RecipeRatingInteractiveModalProps {\n isOpen: boolean;\n close: () => void;\n numOfStarsChosen: number;\n setNumOfStarsChosen: (stars: number) => void;\n rateRecipeDispatcher: AsyncDispatcher<number>;\n ratingFirstText: string;\n ratingOneStarText: string;\n ratingTwoStarText: string;\n ratingThreeStarText: string;\n ratingFourStarText: string;\n ratingFiveStarText: string;\n ratingCompletedText: string;\n ratingCancelButtonText: string;\n ratingRateButtonText: string;\n ratingSuccessfulCloseButtonText: string;\n}\n\nconst RecipeRatingInteractiveModal: FC<\n React.PropsWithChildren<RecipeRatingInteractiveModalProps>\n> = ({\n isOpen,\n close,\n numOfStarsChosen,\n setNumOfStarsChosen,\n rateRecipeDispatcher,\n ratingFirstText,\n ratingOneStarText,\n ratingTwoStarText,\n ratingThreeStarText,\n ratingFourStarText,\n ratingFiveStarText,\n ratingCompletedText,\n ratingCancelButtonText,\n ratingRateButtonText,\n ratingSuccessfulCloseButtonText,\n}) => {\n const {\n execute: rateRecipeBasedOnCurrentState,\n status: rateRecipeStatus,\n error: rateRecipeError,\n clearError: clearRateRecipeError,\n reset: resetRateRecipeDispatcher,\n } = rateRecipeDispatcher;\n const hasSentRatingSuccessfully = rateRecipeStatus === 'success';\n\n useGroupError(ErrorGroup.Global, rateRecipeError, clearRateRecipeError);\n\n const afterClose = () => {\n if (hasSentRatingSuccessfully) {\n resetRateRecipeDispatcher();\n }\n };\n\n return (\n <Modal isOpen={isOpen} afterClose={afterClose} close={close} initialFocusOnDialog={false}>\n <div\n className=\"u-bgWhite u-borderRadius8 u-flex u-flexDirectionColumn u-flexJustifyEnd u-paddingTlg\"\n style={{ width: '90vw', maxWidth: 330, minHeight: 213 }}\n >\n {hasSentRatingSuccessfully ? (\n <div className=\"u-flex u-flexAlignCenter u-flexDirectionColumn u-marginBmd\">\n <h3 className=\"u-textWeightBold u-colorGreen u-textXLarge u-marginBxsm\">\n {ratingCompletedText}\n </h3>\n\n <RecipeRatingStewIcon />\n </div>\n ) : (\n <div className=\"u-flex u-flexWrap u-flexAlignCenter u-flexDirectionColumn u-marginBxlg\">\n <RecipeRatingStars\n numOfStarsChosen={numOfStarsChosen}\n setNumOfStarsChosen={setNumOfStarsChosen}\n ratingFirstText={ratingFirstText}\n ratingOneStarText={ratingOneStarText}\n ratingTwoStarText={ratingTwoStarText}\n ratingThreeStarText={ratingThreeStarText}\n ratingFourStarText={ratingFourStarText}\n ratingFiveStarText={ratingFiveStarText}\n />\n </div>\n )}\n\n <div className=\"u-flex u-flexJustifyCenter u-marginH u-marginB\">\n {hasSentRatingSuccessfully ? (\n <Button size={40} theme=\"primary\" onClick={close}>\n {ratingSuccessfulCloseButtonText}\n </Button>\n ) : (\n <>\n <Button size={40} theme=\"primaryOutline\" onClick={close} fullWidth>\n {ratingCancelButtonText}\n </Button>\n <Button\n size={40}\n theme=\"primary\"\n onClick={rateRecipeBasedOnCurrentState}\n className=\"u-marginLsm\"\n fullWidth\n >\n {ratingRateButtonText}\n </Button>\n </>\n )}\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default RecipeRatingInteractiveModal;\n","import { Confirm } from '@coop/components';\nimport type { FC } from 'react';\n\nimport { appConfig } from '../../../../appConfig';\n\ninterface RecipeRatingLoginConfirmModalProps {\n isOpen: boolean;\n close: () => void;\n}\n\nconst RecipeRatingLoginConfirmModal: FC<\n React.PropsWithChildren<RecipeRatingLoginConfirmModalProps>\n> = ({ isOpen, close }) => {\n const redirectToLoginPage = () => {\n window.location.href = `${appConfig.coopSettings.loginUrl}?returnUrl=${encodeURIComponent(\n window.location.pathname,\n )}`;\n };\n\n return (\n <Confirm\n show={isOpen}\n confirmButtonText=\"Fortsätt\"\n cancelButtonText=\"Avbryt\"\n onConfirm={redirectToLoginPage}\n close={close}\n heading=\"Logga in\"\n message=\"För att ändra betyg pÃ¥ receptet behöver du logga in eller skapa en inloggning\"\n />\n );\n};\n\nexport default RecipeRatingLoginConfirmModal;\n","import type { FC } from 'react';\nimport { useState } from 'react';\n\nimport useRecipeRating from '../../hooks/useRecipeRating';\nimport RecipeRatingInteractiveModal from './RecipeRatingInteractiveModal';\nimport RecipeRatingLoginConfirmModal from './RecipeRatingLoginConfirmModal';\n\nexport interface RecipeRatingInterfaceProps {\n recipeId: number;\n recipeName: string;\n externalRecipeId: string;\n ratingLinkText: string;\n ratingFirstText: string;\n ratingOneStarText: string;\n ratingTwoStarText: string;\n ratingThreeStarText: string;\n ratingFourStarText: string;\n ratingFiveStarText: string;\n ratingCompletedText: string;\n ratingCancelButtonText: string;\n ratingRateButtonText: string;\n ratingSuccessfulCloseButtonText: string;\n}\nconst RecipeRatingButton: FC<React.PropsWithChildren<RecipeRatingInterfaceProps>> = ({\n recipeId,\n recipeName,\n externalRecipeId,\n ratingLinkText,\n ratingFirstText,\n ratingOneStarText,\n ratingTwoStarText,\n ratingThreeStarText,\n ratingFourStarText,\n ratingFiveStarText,\n ratingCompletedText,\n ratingCancelButtonText,\n ratingRateButtonText,\n ratingSuccessfulCloseButtonText,\n}) => {\n const [isRatingModalOpen, setIsRatingModalOpen] = useState(false);\n const [isLoginModalOpen, setIsLoginModalOpen] = useState(false);\n const {\n numOfStarsChosen,\n setNumOfStarsChosen,\n anonymousUserHasSentAlready,\n rateRecipeDispatcher,\n } = useRecipeRating({\n recipeId,\n recipeName,\n externalRecipeId,\n });\n\n const openCorrectModal = () => {\n if (anonymousUserHasSentAlready) {\n setIsLoginModalOpen(true);\n } else {\n setIsRatingModalOpen(true);\n }\n };\n\n return (\n <>\n <RecipeRatingLoginConfirmModal\n isOpen={isLoginModalOpen}\n close={() => setIsLoginModalOpen(false)}\n />\n <RecipeRatingInteractiveModal\n isOpen={isRatingModalOpen}\n close={() => setIsRatingModalOpen(false)}\n numOfStarsChosen={numOfStarsChosen}\n setNumOfStarsChosen={setNumOfStarsChosen}\n rateRecipeDispatcher={rateRecipeDispatcher}\n ratingFirstText={ratingFirstText}\n ratingOneStarText={ratingOneStarText}\n ratingTwoStarText={ratingTwoStarText}\n ratingThreeStarText={ratingThreeStarText}\n ratingFourStarText={ratingFourStarText}\n ratingFiveStarText={ratingFiveStarText}\n ratingCompletedText={ratingCompletedText}\n ratingCancelButtonText={ratingCancelButtonText}\n ratingRateButtonText={ratingRateButtonText}\n ratingSuccessfulCloseButtonText={ratingSuccessfulCloseButtonText}\n />\n <button\n type=\"button\"\n onClick={openCorrectModal}\n className=\"u-textXSmall u-xxsm-textSmall u-greenHover u-borderBottomBase u-marginBxxxxsm u-marginLsm u-noPrint\"\n >\n {ratingLinkText}\n </button>\n </>\n );\n};\n\nexport default RecipeRatingButton;\n","import { useEffect, useState } from 'react';\n\nimport { appConfig } from '../../../appConfig';\nimport userProfileApi from '../../common/api/userProfile/userProfileApi';\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport persistance from '../../common/persistance/persistance';\nimport { ga4RecipesTracking } from '../../common/tracking/ga4/recipes';\nimport tracking from '../../common/tracking/tracking';\nimport recipeFlow from '../flow/recipeFlow';\n\ninterface UseRecipeRatingParams {\n recipeId: number;\n recipeName: string;\n externalRecipeId: string;\n}\n\nconst useRecipeRating = ({ recipeId, recipeName, externalRecipeId }: UseRecipeRatingParams) => {\n const [numOfStarsChosen, setNumOfStarsChosen] = useState(0);\n\n const { execute, result } = useAsyncDispatcher((_externalRecipeId: string) =>\n recipeFlow.getRecipeUserRating(parseInt(_externalRecipeId, 10)),\n );\n\n useEffect(() => {\n execute(externalRecipeId);\n }, [execute, externalRecipeId]);\n\n useEffect(() => {\n if (result) {\n setNumOfStarsChosen(result);\n }\n }, [result]);\n\n const anonymousUserHasSentAlready = () => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n return false;\n }\n\n const cookieRatings = persistance.recipeRatings.get(recipeId.toString());\n\n if (cookieRatings) {\n return true;\n }\n\n return false;\n };\n\n const rateRecipeDispatcher = useAsyncDispatcher(async () => {\n await recipeFlow.rateRecipe(externalRecipeId.toString(), numOfStarsChosen);\n\n userProfileApi.updateCoopRatingCache({\n recipeId,\n rating1to5: numOfStarsChosen,\n });\n\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Sätt betyg',\n numOfStarsChosen.toString(),\n recipeName,\n );\n\n ga4RecipesTracking.rateRecipe(recipeId, recipeName, numOfStarsChosen);\n\n return 200;\n });\n\n return {\n numOfStarsChosen,\n setNumOfStarsChosen,\n anonymousUserHasSentAlready: anonymousUserHasSentAlready(),\n rateRecipeDispatcher,\n };\n};\n\nexport default useRecipeRating;\n","import { Icon } from '@coop/components';\nimport { EcoLeafIcon } from '@coop/icons';\nimport classnames from 'classnames';\nimport type { FC } from 'react';\n\nimport RawHtml from '../../../common/components/atoms/RawHtml';\nimport { RatingStars } from '../../../common/components/molecules/RatingStars';\nimport RecipeItemFavoriteToggle from '../../components/RecipeItemFavoriteToggle/RecipeItemFavoriteToggle';\nimport RecipeRatingButton from '../../components/recipeRating/RecipeRatingButton';\n\ninterface RecipeItemTitleAndDescriptionProps {\n recipeId: number;\n recipeExternalId: string;\n recipeName: string;\n recipePreamble: string;\n rating: number;\n ratingCount: number;\n climateImpactKg: number | null;\n climateImpactUrl?: string;\n portions: number;\n portionsUnit: string;\n ovenTemperature: string;\n cookingTime: string;\n buttonSlot?: React.ReactNode;\n containerClasses?: string;\n}\n\ninterface ClimateImpactProps {\n climateImpactKg: number | null;\n climateImpactUrl?: string;\n}\n\nconst ClimateImpact: FC<React.PropsWithChildren<ClimateImpactProps>> = (props) => {\n const getClimateTitle = () => {\n if (!props.climateImpactKg) return '';\n if (props.climateImpactKg < 0.7) return 'Klimatmärkning: 3 blad';\n if (props.climateImpactKg < 1.7) return 'Klimatmärkning: 2 blad';\n if (props.climateImpactKg < 2.5) return 'Klimatmärkning: 1 blad';\n };\n\n return (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>\n {!!props.climateImpactKg && props.climateImpactKg < 2.5 && (\n <p className=\"u-textSmall u-textWeightBold u-flex u-flexAlignCenter\">\n <div title={getClimateTitle()}>\n <Icon\n icon={EcoLeafIcon}\n className={classnames(\n 'u-marginRxxsm',\n props.climateImpactKg < 2.5 ? 'u-fillLime' : 'u-fillGrayLight2',\n )}\n width={28}\n height={28}\n />\n <Icon\n icon={EcoLeafIcon}\n className={classnames(\n 'u-marginRxxsm',\n props.climateImpactKg < 1.7 ? 'u-fillLime' : 'u-fillGrayLight2',\n )}\n width={28}\n height={28}\n />\n <Icon\n icon={EcoLeafIcon}\n className={classnames(\n 'u-marginRxxsm',\n props.climateImpactKg < 0.7 ? 'u-fillLime' : 'u-fillGrayLight2',\n )}\n width={28}\n height={28}\n />\n </div>\n {!props.climateImpactUrl ? (\n <span className=\"u-marginLxxsm\">\n {Intl.NumberFormat('sv').format(props.climateImpactKg)} kg CO\n <sub>2</sub> ekv / portion\n </span>\n ) : (\n <a\n className=\"Link Link--green2 u-marginLxxsm\"\n href={props.climateImpactUrl}\n title=\"Se hur klimatpÃ¥verkan beräknas\"\n >\n {Intl.NumberFormat('sv').format(props.climateImpactKg)} kg CO\n <sub>2</sub> ekv / portion\n </a>\n )}\n </p>\n )}\n </>\n );\n};\n\nconst RecipeItemTitleAndDescription: FC<\n React.PropsWithChildren<RecipeItemTitleAndDescriptionProps>\n> = (props) => {\n return (\n <div className={props.containerClasses}>\n {props.buttonSlot}\n <h1 className=\"u-textFamilySecondary u-marginBxsm\">{props.recipeName}</h1>\n <div className=\"u-flex u-flexDirectionRow u-flexAlignCenter\">\n <RatingStars rating={props.rating} votes={props.ratingCount} size=\"big\" />\n <RecipeRatingButton\n recipeId={props.recipeId}\n recipeName={props.recipeName}\n externalRecipeId={props.recipeExternalId}\n ratingLinkText=\"Sätt betyg!\"\n ratingFirstText=\"Lämna betyg\"\n ratingOneStarText=\"Nej tack\"\n ratingTwoStarText=\"Inte sÃ¥ gott\"\n ratingThreeStarText=\"Gott\"\n ratingFourStarText=\"Mycket gott\"\n ratingFiveStarText=\"Kommer laga igen!\"\n ratingCompletedText=\"Tack för ditt betyg\"\n ratingCancelButtonText=\"Avbryt\"\n ratingRateButtonText=\"Sätt betyg\"\n ratingSuccessfulCloseButtonText=\"Stäng\"\n />\n\n <div className=\"RecipeSocial-save u-marginLmd u-noPrint\">\n <RecipeItemFavoriteToggle\n recipeExternalId={props.recipeExternalId}\n recipeName={props.recipeName}\n />\n </div>\n </div>\n <ClimateImpact\n climateImpactKg={props.climateImpactKg}\n climateImpactUrl={props.climateImpactUrl}\n />\n <p className=\"Preamble u-colorBaseMid u-textLarge\">\n <RawHtml html={props.recipePreamble} />\n </p>\n <div className=\"u-marginTlg\">\n <div className=\"Grid Grid--gutterHxlg Grid--gutterVxsm Grid--fit\">\n {props.cookingTime && (\n <div className=\"Grid-cell Grid-cell--fit u-borderRight2\">\n <span className=\"u-textWeightLight u-xxxsm-to-sm-textMedium\">\n Tillagningstid:{' '}\n <span className=\"u-textWeightBold\">{props.cookingTime}</span>\n </span>\n </div>\n )}\n {props.ovenTemperature && (\n <div className=\"Grid-cell Grid-cell--fit u-borderRight2\">\n <span className=\"u-textWeightLight u-xxxsm-to-sm-textMedium\">\n Ugnstemperatur:{' '}\n <span className=\"u-textWeightBold\">{props.ovenTemperature}</span>\n </span>\n </div>\n )}\n {/* Should be also difficulty here but its from recipe page, should we drop it? */}\n <div className=\"Grid-cell Grid-cell--fit\">\n <span className=\"u-textWeightLight u-xxxsm-to-sm-textMedium\">\n {props.portions} {props.portionsUnit}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RecipeItemTitleAndDescription;\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * const result = formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (_typeof(duration) !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import { formatISODuration } from 'date-fns';\nimport type { FC } from 'react';\nimport { useMemo } from 'react';\nimport { JsonLd } from 'react-schemaorg';\nimport type { HowToSection, HowToStep, Recipe, WithContext } from 'schema-dts';\n\nimport { Helpers } from '../../../../utility/helpers';\nimport { getTransformedImageUrl } from '../../../common/utils/cloudinaryImageUtils';\nimport {\n getCookingTimeInMinutes,\n getRecipeSubCategoryNames,\n} from '../../../common/utils/recipeUtils';\nimport type { EpiRecipeItemPageType } from '../../../episerver/components/pages/EpiRecipeItemPage/epiRecipeItemPageType';\nimport type { CookingInstructions, Ingredient, RecipeProps } from '../../models';\n\ninterface RecipeJsonLdSchemaProps {\n recipe: RecipeProps;\n recipePage: EpiRecipeItemPageType;\n}\n\nconst RecipeJsonLdSchema: FC<React.PropsWithChildren<RecipeJsonLdSchemaProps>> = (props) => {\n const item = useMemo(() => {\n if (!props.recipePage || !props.recipe) {\n return null;\n }\n\n const ingredients = props.recipe.parts\n .reduce<Ingredient[]>((prev, next) => prev.concat(...next.ingredients), [])\n .map((i) => `${i.formattedQuantity} ${i.unit} ${i.friendlyText}`);\n\n const recipeCategory = getRecipeSubCategoryNames('MÃ¥ltid', props.recipe.categories).find(\n Boolean,\n );\n\n const recipeCuisine = getRecipeSubCategoryNames(\n 'Typ av rätt',\n props.recipe.categories,\n ).find(Boolean);\n\n const instructionsWithoutTitle =\n props.recipe.cookingInstructions\n ?.filter((instruction) => !instruction.title)\n .reduce<string[]>((prev, next) => prev.concat(next.instructions), []) || [];\n\n const instructionsWithTitle =\n props.recipe.cookingInstructions?.filter((instruction) => instruction.title) || [];\n\n const properlyGroupedInstructions: CookingInstructions[] = [];\n\n if (instructionsWithoutTitle.length) {\n properlyGroupedInstructions.push({\n title: 'Gör sÃ¥ här',\n instructions: instructionsWithoutTitle,\n });\n }\n\n if (instructionsWithTitle.length) {\n properlyGroupedInstructions.push(...instructionsWithTitle);\n }\n\n const recipeInstructions = properlyGroupedInstructions.map<HowToSection>(\n (instructionSection) => ({\n '@type': 'HowToSection',\n name: instructionSection.title,\n itemListElement: instructionSection.instructions.map<HowToStep>((instruction) => ({\n '@type': 'HowToStep',\n text: instruction,\n })),\n }),\n );\n\n const schemaItem: WithContext<Recipe> = {\n '@type': 'Recipe',\n name: props.recipe.name,\n keywords: props.recipePage.metaKeywords,\n recipeYield: props.recipe.portions.toString(),\n recipeCategory,\n recipeCuisine,\n recipeIngredient: ingredients,\n datePublished: props.recipePage.startPublish\n ? Helpers.formatDateYyyyMmDd(new Date(props.recipePage.startPublish))\n : undefined,\n description: props.recipe.preamble,\n recipeInstructions,\n image: getTransformedImageUrl(props.recipe.imageUrl, 'h_1200,w_1200'),\n '@context': 'https://schema.org',\n };\n\n if (props.recipe.ratingCount > 0) {\n schemaItem.aggregateRating = {\n '@type': 'AggregateRating',\n ratingValue: props.recipe.averageRating,\n ratingCount: props.recipe.ratingCount,\n };\n }\n\n if (props.recipe.recipeCreator) {\n schemaItem.author = { '@type': 'Person', name: props.recipe.recipeCreator };\n }\n\n const cookingTimeInMinutes = getCookingTimeInMinutes(props.recipe.cookingTime);\n if (cookingTimeInMinutes > 0) {\n schemaItem.cookTime = formatISODuration({ minutes: cookingTimeInMinutes });\n }\n\n const prepTimeInMinutes = getCookingTimeInMinutes(props.recipe.prepTime);\n if (prepTimeInMinutes > 0) {\n schemaItem.prepTime = formatISODuration({ minutes: prepTimeInMinutes });\n }\n\n const totalTimeInMinutes = getCookingTimeInMinutes(props.recipe.totalTime);\n if (totalTimeInMinutes > 0) {\n schemaItem.totalTime = formatISODuration({ minutes: totalTimeInMinutes });\n } else if (cookingTimeInMinutes > 0) {\n schemaItem.totalTime = formatISODuration({ minutes: cookingTimeInMinutes });\n }\n\n return schemaItem;\n }, [props.recipe, props.recipePage]);\n\n if (!item) return null;\n\n return <JsonLd<Recipe> item={item} />;\n};\n\nexport default RecipeJsonLdSchema;\n","import { ChipButton, ConfirmInfo, Icon } from '@coop/components';\nimport { Info1Icon } from '@coop/icons';\nimport * as React from 'react';\n\nimport { useCncFlyInState } from '../../../common/hooks/useCncFlyInState';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { CncStep } from '../../../common/store/structureDefinitions/uiState';\nimport tracking from '../../../common/tracking/tracking';\nimport styles from './RecipeNotAvailableInStore.module.scss';\n\nconst RecipeNotAvailableInStore = ({ recipeName }: { recipeName: string }) => {\n const { navigateTo } = useCncFlyInState();\n const [isNotificationOpen, setIsNotificationOpen] = React.useState(false);\n const isHomeDelivery = useAppSelector(storeSelectors.isHomeDeliverySelected);\n const isPickup = useAppSelector(storeSelectors.isPickupSelected);\n\n const handleClick = () => {\n if (isHomeDelivery) {\n navigateTo({ step: CncStep.PostalCodePreview });\n }\n\n if (isPickup) {\n navigateTo({ step: CncStep.PostalCodeSelector });\n }\n\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Byt leverenssätt',\n recipeName,\n recipeName,\n );\n };\n\n return (\n <div className={styles.Main}>\n <div className={styles.Container}>\n <button\n type=\"button\"\n onClick={() => setIsNotificationOpen(true)}\n style={{ display: 'flex' }}\n >\n <Icon icon={Info1Icon} width={20} height={20} color=\"greenDark\" />\n </button>\n <div className={styles.TextContainer}>\n Tyvärr kan du inte köpa receptet med valt leveranssätt\n </div>\n </div>\n <div className={styles.ButtonContainer}>\n <ChipButton size={32} theme=\"green2\" onClick={handleClick}>\n Byt leveranssätt\n </ChipButton>\n </div>\n <ConfirmInfo\n show={isNotificationOpen}\n close={() => setIsNotificationOpen(false)}\n heading=\"Tyvärr finns inte receptets alla varor\"\n message={\n <div>\n <p style={{ marginTop: 0 }}>\n Butiken som kommer plocka dina varor med ditt valda leveransätt har\n tyvärr inte alla varor tillgängliga.\n </p>\n <p style={{ marginBottom: 0 }}>\n Om du valt att hämta din leverans kan du testa en annan närliggande\n butik för att se om varorna är tillgängliga.\n </p>\n </div>\n }\n />\n </div>\n );\n};\n\nexport default RecipeNotAvailableInStore;\n","// extracted by mini-css-extract-plugin\nexport default {\"Main\":\"xqeeh5zC\",\"Container\":\"WlGNyExm\",\"TextContainer\":\"hgeo0Lwc\",\"ButtonContainer\":\"Ou5hbFMj\"};","/* eslint-disable react/jsx-no-useless-fragment */\n/* eslint-disable react/jsx-props-no-spreading */\n\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { useBuyableRecipeQuery } from './RecipeItemPage.hooks';\n\ninterface RecipeSlotPickerProps {\n storeNotSelectedSlot?: React.ReactNode;\n buyableSlot?: React.ReactNode;\n notBuyableSlot?: React.ReactNode;\n recipeId: string;\n}\n\nconst RecipeSlotPicker = (props: RecipeSlotPickerProps) => {\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const { data, isLoading, isFetching } = useBuyableRecipeQuery({\n storeId: currentProductionUnit,\n externalRecipeIds: [props.recipeId],\n isPublished: true,\n limit: 1,\n });\n\n const isRecipeBuyable = !!data?.length;\n\n if (isLoading || isFetching) return null;\n\n if (!hasActiveStoreSelection) {\n return <>{props.storeNotSelectedSlot}</>;\n }\n\n if (hasActiveStoreSelection && isRecipeBuyable) return <>{props.buyableSlot}</>;\n\n if (hasActiveStoreSelection && !isRecipeBuyable) return <>{props.notBuyableSlot}</>;\n\n return null;\n};\n\nexport default RecipeSlotPicker;\n","import EmphasizedButton from '../../../common/components/molecules/EmphasizedButton';\nimport { useCncFlyInState } from '../../../common/hooks/useCncFlyInState';\nimport tracking from '../../../common/tracking/tracking';\n\nconst RecipeStoreSelectionTrigger = ({ recipeName }: { recipeName: string }) => {\n const { initCnc } = useCncFlyInState();\n\n const handleClick = () => {\n initCnc();\n tracking.ecommerce.recipes.interaction(\n 'Receptsida - Se om receptet kan köpas online',\n recipeName,\n recipeName,\n );\n };\n\n return (\n <EmphasizedButton onClick={handleClick} theme=\"whiteGreen\">\n Se om receptet kan köpas online\n </EmphasizedButton>\n );\n};\n\nexport default RecipeStoreSelectionTrigger;\n","/* eslint-disable react/jsx-no-useless-fragment */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { OverlayPacmanLoader } from '@coop/components';\nimport { useQuery } from '@tanstack/react-query';\nimport classNames from 'classnames';\nimport { useEffect, useMemo } from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { appConfig } from '../../../../appConfig';\nimport BaseLayout from '../../../base/BaseLayout';\nimport { HeaderNoticesPortal } from '../../../base/components/HeaderNotices';\nimport MainPageLayout from '../../../base/components/MainPageLayout';\nimport PageHead from '../../../common/components/atoms/PageHead';\nimport { useIsDesktop } from '../../../common/components/atoms/ResponsiveBreakpoints';\nimport DynamicYieldBlock from '../../../common/components/DynamicYieldBlock/DynamicYieldBlock';\nimport RecipeModalTrigger from '../../../common/components/molecules/RecipeModalTrigger/RecipeModalTrigger';\nimport type { TabItem } from '../../../common/components/molecules/TabSwitcher';\nimport { TabSwitcher } from '../../../common/components/molecules/TabSwitcher';\nimport { useAsyncDispatcher } from '../../../common/hooks/useAsyncDispatcher';\nimport { useAppSelector } from '../../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../../common/selectors/storeSelectors';\nimport { getCanonical } from '../../../common/utils/metaUtils';\nimport { mapToRecipeProps } from '../../../common/utils/recipeUtils';\nimport { useAbTest } from '../../../ecommerce/hooks/useAbTests';\nimport EpiContentArea from '../../../episerver/components/base/EpiContentArea';\nimport type { EpiRecipeItemPageType } from '../../../episerver/components/pages/EpiRecipeItemPage/epiRecipeItemPageType';\nimport { mapEpiPageHeadData } from '../../../episerver/epiUtils';\nimport { mapApiRecipe } from '../../../search/flow/mapSearchResponse';\nimport RecipeDistributionAd from '../../components/RecipeDistributionAd/RecipeDistributionAd';\nimport recipeFlow from '../../flow/recipeFlow';\nimport { recipeQueryKeys } from '../../recipeQueries';\nimport DynamicYieldSimiliarRecipes from './DynamicYieldSimiliarRecipes';\nimport RecipeItemComments from './RecipeItemComments';\nimport RecipeItemHeroImage from './RecipeItemHeroImage';\nimport RecipeItemIngredients from './RecipeItemIngredients';\nimport RecipeItemInstructions from './RecipeItemInstructions';\nimport useRecipeItemPage, { useBuyableRecipeQuery } from './RecipeItemPage.hooks';\nimport RecipeItemSocialMedia from './RecipeItemSocialMedia';\nimport RecipeItemTips from './RecipeItemTips';\nimport RecipeItemTitleAndDescription from './RecipeItemTitleAndDescription';\nimport RecipeJsonLdSchema from './RecipeJsonLdSchema';\nimport RecipeNotAvailableInStore from './RecipeNotAvailableInStore';\nimport RecipeSlotPicker from './RecipeSlotPicker';\nimport RecipeStoreSelectionTrigger from './RecipeStoreSelectionTrigger';\n\nconst isRecipeItemPage = (content?: IContent): content is EpiRecipeItemPageType => {\n if (!content) return false;\n return 'externalRecipeID' in content;\n};\n\nconst fetchEpiSimiliarRecipes = async (epiRecipePage: EpiRecipeItemPageType) => {\n const epiSimiliarRecipeIds = epiRecipePage.similarRecipes\n .filter((page) => isRecipeItemPage(page.contentLink.expanded))\n .map((page) =>\n (page.contentLink.expanded as EpiRecipeItemPageType).externalRecipeID.toString(),\n );\n\n const apiRecipesResult = await recipeFlow.getRecipesById(epiSimiliarRecipeIds);\n const similiarRecipesLight = apiRecipesResult?.map((recipe) => mapApiRecipe(recipe)) || [];\n return similiarRecipesLight;\n};\n\ninterface RecipeItemPageSSRProps {\n contentId?: number;\n recipeExternalId?: string;\n isAdmin: boolean;\n}\n\nconst RecipeItemPage: React.FC<React.PropsWithChildren<RecipeItemPageSSRProps>> = ({\n contentId,\n recipeExternalId,\n isAdmin, // taken from visitor groups on backend, how to do it in frontend\n}) => {\n const hasActiveStoreSelection = useAppSelector(storeSelectors.hasActiveStoreSelection);\n const isDesktop = useIsDesktop();\n const { execute: getSimiliarRecipes, result: epiSimliarRecipes } =\n useAsyncDispatcher(fetchEpiSimiliarRecipes);\n\n const { data: recipe, isFetching: isFetchingRecipe } = useQuery({\n queryKey: recipeQueryKeys.byExternalId(recipeExternalId!),\n queryFn: async () => recipeFlow.getRecipeById(recipeExternalId!),\n enabled: !!recipeExternalId,\n });\n\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n\n const { data: pageData } = useRecipeItemPage(contentId);\n const { data } = useBuyableRecipeQuery({\n storeId: currentProductionUnit,\n externalRecipeIds: [recipeExternalId!],\n isPublished: true,\n limit: 1,\n });\n\n const isBuyable = !!data?.length;\n\n const recipePage = pageData?.recipePage;\n const recipeSettingsPage = pageData?.recipeSettingsPage;\n const imageStickers = pageData?.recipeSettingsPage?.imageStickers;\n\n const [abTestRef, recipeSuggestionsInView] = useInView({\n triggerOnce: true,\n threshold: 0,\n });\n\n useAbTest({\n name: 'T214.personalization.recipe',\n contentId: undefined,\n userId: appConfig.coopUserSettings.userId,\n enabled: recipeSuggestionsInView,\n });\n\n useEffect(() => {\n if (recipePage) {\n getSimiliarRecipes(recipePage);\n }\n }, [recipePage, getSimiliarRecipes]);\n\n const recipeProps = useMemo(\n () => recipe && mapToRecipeProps(recipe, imageStickers),\n [recipe, imageStickers],\n );\n\n const createTabs = (): TabItem[] => {\n return [\n ...(recipeProps\n ? [\n {\n id: '1',\n name: `Ingredienser (${recipeProps.numberOfIngredients})`,\n component: (\n <RecipeItemIngredients\n recipeExternalId={recipeProps.externalId}\n recipeName={recipeProps.name}\n portions={recipeProps.portions}\n recipeParts={recipeProps.parts}\n contentClasses=\"u-paddingTxlg u-paddingHlg\"\n numberOfIngredients={recipeProps.numberOfIngredients}\n />\n ),\n },\n ]\n : []),\n ...(recipeProps && !recipeProps.isFoodBox\n ? [\n {\n id: '2',\n name: 'Gör sÃ¥ här',\n component: (\n <RecipeItemInstructions\n instructions={recipeProps.cookingInstructions}\n servingTips={recipeProps.servingTips}\n />\n ),\n },\n ]\n : []),\n ];\n };\n\n const canonicalUrl = getCanonical({ path: window.location.pathname });\n const description = recipe && (recipe.metaDescription || recipe.preamble || recipe.name);\n\n let mappedRecipePageHeadData =\n recipePage &&\n mapEpiPageHeadData({\n ...recipePage,\n canonicalUrl,\n metaDescription: description,\n });\n\n if ((!recipeProps || recipeProps.numberOfIngredients === 0) && mappedRecipePageHeadData) {\n mappedRecipePageHeadData = {\n ...mappedRecipePageHeadData,\n meta: { ...mappedRecipePageHeadData.meta, 'prerender-status-code': '504' },\n };\n }\n\n return (\n <BaseLayout>\n <HeaderNoticesPortal />\n {mappedRecipePageHeadData && <PageHead data={mappedRecipePageHeadData} />}\n <OverlayPacmanLoader isLoading={isFetchingRecipe} />\n {!recipe && !isFetchingRecipe && (\n <div className=\"Grid\">\n <div className=\"Grid-cell u-textCenter u-marginAmd\">\n Receptid saknas i databasen\n </div>\n </div>\n )}\n {recipePage && recipeProps && (\n <RecipeJsonLdSchema recipe={recipeProps} recipePage={recipePage} />\n )}\n\n {recipeProps && (\n <MainPageLayout disablePaddingOnMobile>\n <div className=\"Grid Grid--gutterHxlg Grid--recipePage\">\n <div className=\"Grid-cell Grid-cell--fixedWidth SidebarNav-Recipe\">\n <RecipeItemHeroImage\n heroImageUrl={recipeProps.imageUrl}\n heroImageName={recipeProps.name}\n stickerUrl={recipeProps.stickerUrl}\n buttonSlot={\n <RecipeSlotPicker\n recipeId={recipeProps.externalId}\n buyableSlot={\n <RecipeModalTrigger\n recipeId={recipeProps.externalId}\n recipeName={recipeProps.name}\n portions={recipeProps.portions}\n analyticsListName=\"Recipemodal\"\n buttonType=\"emphasized\"\n buttonFullWidth={false}\n />\n }\n storeNotSelectedSlot={\n <RecipeStoreSelectionTrigger\n recipeName={recipeProps.name}\n />\n }\n />\n }\n />\n <div className=\"u-lg-block\">\n <RecipeItemIngredients\n recipeExternalId={recipeProps.externalId}\n recipeName={recipeProps.name}\n portions={recipeProps.portions}\n recipeParts={recipeProps.parts}\n buttonRender={\n <RecipeSlotPicker\n recipeId={recipeProps.externalId}\n notBuyableSlot={\n <RecipeNotAvailableInStore\n recipeName={recipeProps.name}\n />\n }\n />\n }\n contentClasses=\"u-paddingAxlg u-paddingBz\"\n containerClasses={classNames(\n (!hasActiveStoreSelection || isBuyable) && 'u-marginTmd',\n )}\n numberOfIngredients={recipeProps.numberOfIngredients}\n />\n </div>\n </div>\n <div className=\"Grid-cell Grid-cell--grownWidth\">\n <div className=\"Grid Grid--gutterV\">\n <div className=\"Grid-cell\">\n <div\n className={classNames(\n !hasActiveStoreSelection || isBuyable\n ? 'u-paddingTxxlg u-lg-paddingTlg'\n : 'u-paddingTlg',\n 'u-paddingVlg u-bgWhite',\n )}\n >\n <RecipeItemTitleAndDescription\n containerClasses={classNames(\n 'u-paddingHlg u-lg-paddingHxlg',\n )}\n buttonSlot={\n !isDesktop && (\n <RecipeSlotPicker\n recipeId={recipeProps.externalId}\n notBuyableSlot={\n <RecipeNotAvailableInStore\n recipeName={recipeProps.name}\n />\n }\n />\n )\n }\n recipeId={recipeProps.id}\n recipeExternalId={recipeProps.externalId}\n recipeName={recipeProps.name}\n recipePreamble={recipeProps.preamble}\n rating={recipeProps.averageRating}\n ratingCount={recipeProps.ratingCount}\n climateImpactKg={recipeProps.climateImpactKg}\n climateImpactUrl={\n recipeSettingsPage\n ?.climateImpactCalculationPageReference?.url\n }\n portions={recipeProps.portions}\n portionsUnit={recipeProps.portionsUnit}\n ovenTemperature={recipeProps.ovenTemperature}\n cookingTime={recipeProps.cookingTime}\n />\n {!isDesktop && (\n <div className=\"u-noPrint\">\n <div className=\"Section u-bgWhite u-textCenter u-paddingBlg u-paddingHlg\" />\n <TabSwitcher\n items={createTabs()}\n wrapperClasses=\"Tab--recipe\"\n containerClasses=\"Tab-header is-recipe\"\n />\n </div>\n )}\n <div className=\"u-lg-block\">\n {!recipeProps.isFoodBox && (\n <RecipeItemInstructions\n instructions={recipeProps.cookingInstructions}\n servingTips={recipeProps.servingTips}\n />\n )}\n </div>\n <RecipeItemTips tips={recipeProps.tips} />\n </div>\n <div className=\"u-paddingVmd u-paddingHxlg u-borderTop u-bgWhite u-textSmall u-noPrint\">\n <RecipeItemSocialMedia\n recipeId={parseInt(recipeProps.externalId, 10)}\n recipeName={recipeProps.name}\n />\n </div>\n </div>\n\n <div className=\"Grid-cell u-noPrint\">\n <div\n className={classNames(\n 'Main-container',\n !isDesktop && 'Main-container--padding',\n )}\n >\n <div className=\"Grid Grid--gutterV\">\n <RecipeDistributionAd\n recipeExternalId={recipeProps.externalId}\n />\n {recipePage && recipePage.mainModules && (\n <div className=\"Grid-cell u-noPrint\">\n <EpiContentArea\n items={recipePage.mainModules}\n />\n </div>\n )}\n <div className=\"Grid-cell u-noPrint\">\n <RecipeItemComments\n isAdmin={isAdmin}\n initialRecipeComments={recipeProps.comments}\n hideComments={\n recipeSettingsPage?.disableCommentModule\n }\n recipeExternalId={recipeProps.externalId}\n recipeName={recipeProps.name}\n commnentsForbiddenNames={\n recipeSettingsPage?.listForbiddenNames\n }\n />\n </div>\n {recipePage && recipePage.modules && (\n <div className=\"Grid-cell u-noPrint\">\n <EpiContentArea items={recipePage.modules} />\n </div>\n )}\n <div\n className=\"Grid-cell u-paddingTz u-noPrint\"\n ref={abTestRef}\n >\n <DynamicYieldBlock\n recommendationId={\n appConfig.coopSettings.recipe\n .dynamicYieldRecipesRecommendationId\n }\n analyticsListName={\n appConfig.coopSettings.recipe\n .dynamicYieldRecipesRecommendationGaList\n }\n useSwiper\n lazyLoad\n disableLink={false}\n disableAsyncLink\n onlyPromotions={false}\n horizontalHidden={false}\n />\n </div>\n\n <div className=\"Grid-cell u-paddingTz u-noPrint\">\n {epiSimliarRecipes && (\n <DynamicYieldSimiliarRecipes\n recommendationId={\n appConfig.coopSettings.recipe\n .dynamicYieldSimiliarRecipesRecommendationId\n }\n recommendationGaList={\n appConfig.coopSettings.recipe\n .dynamicYieldSimiliarRecipesGaList\n }\n additionalRecipes={epiSimliarRecipes}\n pageRecipeName={recipeProps.name}\n numberOfSimiliarsToShow={8}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </MainPageLayout>\n )}\n </BaseLayout>\n );\n};\n\nexport default RecipeItemPage;\n","import './recipeItemApp.module.less';\n\nimport { MicroAppContextProvider, MicroAppContextType } from '../common/contexts/microAppContext';\nimport ReactAppWrapper from '../common/init/ReactAppWrapper';\nimport renderMicroApp, { type MicroAppProps } from '../common/init/renderMicroApp';\nimport RecipeItemPage from './pages/RecipeItemPage';\n\ninterface SSRData {\n contentId: number;\n recipeExternalId: string;\n isAdmin: boolean;\n}\n\nconst RecipeItemApp = (props: MicroAppProps<SSRData>) => {\n return (\n <MicroAppContextProvider microAppType={MicroAppContextType.Recipes}>\n <ReactAppWrapper initialQueryClientData={props.initialQueryData}>\n <RecipeItemPage\n contentId={props.ssrData?.contentId}\n isAdmin={props.ssrData?.isAdmin || false}\n recipeExternalId={props.ssrData?.recipeExternalId}\n />\n </ReactAppWrapper>\n </MicroAppContextProvider>\n );\n};\n\nrenderMicroApp(RecipeItemApp);\n","import type recipeFlow from './flow/recipeFlow';\n\nexport const recipeQueryKeys = {\n byExternalId: (externalId: string) => ['recipe', externalId],\n byExternalIds: (externalIds: string[]) => ['recipe', ...externalIds],\n comments: (externalId: string) => ['recipe', 'comments', externalId],\n categories: (externalId: string) => ['recipe', 'categories', externalId],\n recipeAd: (externalId: string) => ['recipe', 'ad', externalId],\n recipeAdContent: (contentId: string) => ['recipe', 'adpage', contentId],\n};\n\nexport const gastrofyQueryKeys = {\n byExternalId: (externalId: string, storeId: string) => ['gastrofyRecipe', externalId, storeId],\n byRequest: (request: Parameters<typeof recipeFlow.discoverNorthforkRecipes>[0]) => [\n 'gastrofyRecipe',\n request,\n ],\n};\n\nexport const savedFavoriteRecipeKey = ['savedFavoriteRecipes'];\n","import type { ApiCategoriesUrlOrder } from '../../models/recipe/recipeModel';\nimport type { RecipeCategoryFacet } from '../search/models/models';\nimport type {\n CategoryNamesUnderLevel1,\n CategoryNameToUrlSegment,\n GetUrlForCategoriesSignature,\n} from './models';\n\n/**\n *\n * @param currStringArray current state of array\n * @param newString to be added or removed from currStringArray\n * @returns new array with or without newString\n */\nexport const createNewArrayByTogglingString = (currStringArray: string[], newString: string) => {\n const shouldRemoveString = currStringArray.includes(newString);\n\n if (shouldRemoveString) {\n return currStringArray.filter((name) => name !== newString);\n }\n\n return [...currStringArray, newString];\n};\n\n/**\n * @returns a function that creates a path string where the categories are ordered correctly\n */\nexport const createGetUrlForCategories =\n (\n categoryNameToUrlSegment: CategoryNameToUrlSegment,\n categoriesUrlOrder: ApiCategoriesUrlOrder,\n recipeRootUrl: string,\n ): GetUrlForCategoriesSignature =>\n ({ categories }: { categories: string[] }) => {\n const sortByCategoryUrlOrder = (a: string, b: string) =>\n categoriesUrlOrder[a.toLowerCase()] - categoriesUrlOrder[b.toLowerCase()];\n\n const mapCategoryNameToUrlSegment = (categoryName: string) =>\n categoryName ? categoryNameToUrlSegment[categoryName.toLowerCase()] : null;\n\n const removedPotentialLastSlashFromRoot =\n recipeRootUrl.slice(-1) === '/'\n ? recipeRootUrl.slice(0, recipeRootUrl.length - 1)\n : recipeRootUrl;\n\n const hasFilterQuery = categories.length > 2;\n\n const builtPath = categories\n .slice()\n .sort(sortByCategoryUrlOrder)\n .map(mapCategoryNameToUrlSegment)\n .filter(Boolean)\n .reduce((acc, currSegment, index) => {\n if (index < 2) {\n return `${acc}/${currSegment}`;\n }\n\n if (index === 2) {\n return `${acc}?filter=${currSegment}`;\n }\n\n return `${acc},${currSegment}`;\n }, removedPotentialLastSlashFromRoot);\n\n return hasFilterQuery ? builtPath : `${builtPath}/`;\n };\n\nexport const getCategoriesWhileRemovingCategoryFacetChildren = ({\n currentCategories,\n category,\n}: {\n currentCategories: string[];\n category: RecipeCategoryFacet;\n}) => {\n if (Array.isArray(category.categories)) {\n const childrenNames = category.categories.map((childCategory) =>\n childCategory.item.toLowerCase(),\n );\n\n const categoriesWithoutChildren = currentCategories.filter(\n (currCategory) => !childrenNames.includes(currCategory),\n );\n\n return createNewArrayByTogglingString(\n categoriesWithoutChildren,\n category.item.toLowerCase(),\n );\n }\n\n return createNewArrayByTogglingString(currentCategories, category.item.toLowerCase());\n};\n\nexport const getCategoriesWhileRemovingCategoryFacetsParent = ({\n currentCategories,\n category,\n parentCategory,\n}: {\n currentCategories: string[];\n category: RecipeCategoryFacet;\n parentCategory: RecipeCategoryFacet;\n}) => {\n const lowerCaseParentName = parentCategory.item.toLowerCase();\n\n const categoriesWithoutParent = currentCategories.filter(\n (categoryName) => categoryName !== lowerCaseParentName,\n );\n\n return createNewArrayByTogglingString(categoriesWithoutParent, category.item.toLowerCase());\n};\n\nexport const getAllCategoryNamesFromLevel2AndDown = (\n categories: RecipeCategoryFacet[] | null,\n collectedNames: string[] = [],\n rootCall: boolean = true,\n): string[] => {\n if (!categories) {\n return collectedNames;\n }\n\n return categories.reduce((acc, facet) => {\n const childCategories = getAllCategoryNamesFromLevel2AndDown(\n facet.categories,\n collectedNames,\n false,\n );\n\n if (rootCall) {\n return [...acc, ...childCategories];\n }\n\n return [...acc, ...childCategories, facet.item];\n }, collectedNames);\n};\n\n/**\n * Removes categories on level 1\n * @returns the categories we can show\n */\nexport const getCategoryNamesUnderLevel1 = (\n ssrCategoriesUrlOrder: ApiCategoriesUrlOrder,\n): CategoryNamesUnderLevel1 => {\n const obj = ssrCategoriesUrlOrder ?? {};\n return Object.entries(obj).reduce((acc, [key, val]) => {\n if (val % 1000 !== 0) {\n return {\n ...acc,\n [key]: true,\n };\n }\n\n return acc;\n }, {});\n};\n\nexport const buildRecipeRedirectUrl = (externalId: string) => `/redirect/recipe/${externalId}`;\n","import type { AxiosInstance, AxiosRequestConfig } from 'axios';\nimport axios from 'axios';\n\nimport { appConfig } from '../../../appConfig';\nimport { Cookies } from '../../../utility/cookies';\nimport { GdprCookieVendors, hasAcceptedGdprCookieVendorsSync } from '../../../utility/gdpr';\nimport axiosClientFactory from '../../common/api/clients/clientFactory';\nimport type { CustomErrorInterceptor } from '../../common/api/clients/localApiAxiosErrorInterceptors';\nimport { createDefaultException } from '../../common/exceptions/exceptionUtils';\n\nexport const prepareRequestParams = (\n storeId: string,\n customerGroups: string[] | undefined,\n device: string | undefined,\n quickSearch: boolean | undefined,\n searchService: string | null = null,\n) => {\n const requestParams = {\n store: storeId,\n groups: customerGroups && !!customerGroups.length ? customerGroups.join(',') : null,\n device,\n direct: !!quickSearch,\n searchService,\n };\n\n return requestParams;\n};\n\nconst directSearchErrorAxiosInterceptor: CustomErrorInterceptor = (error) => {\n if (typeof error === 'string') {\n const defaultException = createDefaultException();\n defaultException.friendlyMessage = error;\n return defaultException;\n }\n\n return null;\n};\n\nconst getDirectPersonalizationSearchAxiosClient = (withConsent: boolean = true): AxiosInstance => {\n const acceptedConsent = hasAcceptedGdprCookieVendorsSync([GdprCookieVendors.Loop54]);\n const loop54CookieName = 'Loop54AnonymousUser';\n\n const axiosRequestConfig: AxiosRequestConfig = {\n baseURL: appConfig.coopSettings.serviceAccess.personalizationApiUrl,\n headers: {\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.personalizationApiSubscriptionKey,\n },\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.personalizationApiVersion,\n },\n };\n\n if (withConsent) {\n axiosRequestConfig.transformRequest = [\n (data: { customData?: object }) => {\n const consentedData = {\n ...data,\n customData: {\n ...data?.customData,\n consent: acceptedConsent,\n },\n };\n return consentedData;\n },\n ];\n\n if (axios.defaults.transformRequest) {\n axiosRequestConfig.transformRequest = [\n ...axiosRequestConfig.transformRequest,\n ...(Array.isArray(axios.defaults.transformRequest)\n ? axios.defaults.transformRequest\n : [axios.defaults.transformRequest]),\n ];\n }\n }\n\n const loopUserId = Cookies.read(loop54CookieName);\n\n if (acceptedConsent) {\n if (appConfig.coopUserSettings.userId) {\n if (axiosRequestConfig.headers) {\n // accepted consent and logged in\n axiosRequestConfig.headers['User-Id'] = appConfig.coopUserSettings.userId;\n }\n }\n if (loopUserId) {\n if (axiosRequestConfig.headers) {\n // accepted consent and NOT logged in\n axiosRequestConfig.headers['Loop-User-Id'] = loopUserId;\n }\n }\n }\n\n const directSearchAxiosClient = axiosClientFactory.createDirectApiClient(axiosRequestConfig, [\n directSearchErrorAxiosInterceptor,\n ]);\n\n directSearchAxiosClient.interceptors.response.use((response) => {\n if (acceptedConsent) {\n const headerId = response.headers['loop-user-id'];\n if (headerId) {\n Cookies.create(loop54CookieName, headerId, 365, true);\n }\n }\n\n return response;\n });\n\n return directSearchAxiosClient;\n};\n\nexport default getDirectPersonalizationSearchAxiosClient;\n","import type { FC } from 'react';\nimport * as React from 'react';\nimport type { AsyncStateStatus } from 'react-async-hook';\n\nimport type { SearchFromPageType } from '../../base/models/SearchFromPageType';\nimport type { ApiException } from '../../common/exceptions/exceptionDefinitions';\nimport { useSearchDropdownState } from '../../common/hooks/useSearchDropdownState';\nimport type { SearchResultType } from '../models/SearchResultType';\nimport { mapSearchFromPageToExpectedResultType } from '../utils/searchResultUtils';\n\ninterface SearchDropdownState<TResult> {\n result?: TResult;\n a11yResultAnnounceMessage: string;\n isOpen: boolean;\n error?: ApiException;\n show: boolean;\n query?: string;\n status: AsyncStateStatus;\n searchFromPage?: SearchFromPageType;\n expectedSearchResultType?: SearchResultType;\n isLoading: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst SearchDropdownStateContext = React.createContext<SearchDropdownState<any>>({\n isOpen: false,\n result: undefined,\n a11yResultAnnounceMessage: '',\n error: undefined,\n show: false,\n query: undefined,\n searchFromPage: undefined,\n expectedSearchResultType: undefined,\n status: 'not-requested',\n isLoading: false,\n});\n\nconst contextNotInitialized = () => {\n throw new Error('SearchDropdownDispatchContext not yet initialized');\n};\n\ntype SearchDropdownDispatch = Pick<\n ReturnType<typeof useSearchDropdownState>,\n 'setQuery' | 'resetQuery' | 'open' | 'close' | 'clear' | 'setA11yResultAnnounceMessage'\n>;\nconst SearchDropdownDispatchContext = React.createContext<SearchDropdownDispatch>({\n setQuery: contextNotInitialized,\n resetQuery: contextNotInitialized,\n open: contextNotInitialized,\n close: contextNotInitialized,\n clear: contextNotInitialized,\n setA11yResultAnnounceMessage: contextNotInitialized,\n});\n\ninterface SearchStateProviderProps {\n initialQuery: string | null;\n searchFromPage?: SearchFromPageType;\n searchFunction: (signal: AbortSignal, query: string) => Promise<unknown>;\n minimumQueryLength: number;\n debounceTime?: number;\n}\nexport const SearchStateProvider: FC<React.PropsWithChildren<SearchStateProviderProps>> = ({\n children,\n searchFunction,\n searchFromPage,\n initialQuery,\n minimumQueryLength,\n debounceTime,\n}) => {\n const {\n result,\n resultDescription,\n isOpen,\n clear,\n open,\n close,\n error,\n show,\n query,\n setQuery,\n resetQuery,\n status,\n isLoading,\n setA11yResultAnnounceMessage,\n } = useSearchDropdownState(initialQuery, searchFunction, minimumQueryLength, debounceTime);\n\n const expectedSearchResultType = mapSearchFromPageToExpectedResultType(searchFromPage);\n\n return React.createElement(\n SearchDropdownDispatchContext.Provider,\n {\n value: {\n clear,\n open,\n close,\n setQuery,\n resetQuery,\n setA11yResultAnnounceMessage,\n },\n },\n React.createElement(\n SearchDropdownStateContext.Provider,\n {\n value: {\n result,\n a11yResultAnnounceMessage: resultDescription,\n isOpen,\n error,\n show,\n query,\n searchFromPage,\n status,\n isLoading,\n expectedSearchResultType,\n },\n },\n children,\n ),\n );\n};\n\nexport const useSearchStateContext = <TResult = unknown>() => {\n const state = React.useContext<SearchDropdownState<TResult>>(SearchDropdownStateContext);\n const dispatch = React.useContext(SearchDropdownDispatchContext);\n\n if (state === undefined || dispatch === undefined) {\n throw new Error('useSearchStateContext must be used within a SearchStateProvider');\n }\n return { ...state, ...dispatch };\n};\n","import { useCallback, useState } from 'react';\n\nimport { DropdownType } from '../store/structureDefinitions/modalState';\nimport useAsyncAbortableDispatcher from './useAsyncAbortableDispatcher';\nimport useModal from './useModal';\n\nconst useAbortableDebouncedSearch = <TResult>(\n inputText: string,\n searchFunction: (signal: AbortSignal, query: string) => Promise<TResult>,\n minimumQueryLength: number,\n delay: number,\n) => {\n const search = async (abortSignal: AbortSignal, text: string) => {\n // If the input is empty, return nothing immediately (without the debouncing delay!)\n if (text.length < minimumQueryLength) {\n return undefined;\n }\n\n return searchFunction(abortSignal, text);\n };\n\n const { status, error, result, isLoading } = useAsyncAbortableDispatcher(search, [inputText], {\n executeOnMount: !!inputText,\n keepPreviousResult: true,\n debounced: true,\n debounceTime: delay,\n });\n\n const hasResponse = !!(status === 'success' && !!result) || !!(status === 'error' && error);\n\n return {\n hasResponse,\n result,\n error,\n isLoading,\n status,\n };\n};\n\nexport const useSearchDropdownState = <TResult>(\n initialInputText: string | null,\n searchFunction: (signal: AbortSignal, query: string) => Promise<TResult>,\n minimumQueryLength: number,\n debounceTime?: number,\n) => {\n const { open, close, isOpen } = useModal(DropdownType.Search);\n\n const [query, setQuery] = useState(initialInputText || '');\n const [a11yResultAnnounceMessage, setA11yResultAnnounceMessage] = useState('');\n\n const delay = debounceTime || 300;\n\n const { hasResponse, result, error, status, isLoading } = useAbortableDebouncedSearch(\n query,\n searchFunction,\n minimumQueryLength,\n delay,\n );\n\n const resetQuery = useCallback(() => setQuery(''), []);\n\n const clear = useCallback(() => {\n close();\n resetQuery();\n setA11yResultAnnounceMessage('');\n }, [close, resetQuery]);\n\n return {\n result,\n isOpen,\n clear,\n open,\n close,\n error,\n show: hasResponse,\n hasResponse,\n query,\n setQuery,\n resetQuery,\n status,\n isLoading,\n resultDescription: a11yResultAnnounceMessage,\n setA11yResultAnnounceMessage,\n };\n};\n","import { parseISO } from 'date-fns';\n\nimport type { ApiRecipe } from '../../../models/recipe/recipeModel';\nimport { mapLoopProduct } from '../../common/flow/product/mapProduct';\nimport type {\n AutocompleteResponse,\n GlobalSearchResults,\n LightSearchRecipe,\n LoopNoQueryProductResults,\n LoopSearchProductResults,\n SearchArticle,\n SearchArticleResults,\n SearchPointshop,\n SearchPointshopResults,\n SearchRecipe,\n SearchRecipeCategory,\n SearchRequest,\n SearchResultFacet,\n SearchStore,\n SearchStoreResults,\n} from '../models/models';\nimport { SearchFacetType } from '../models/models';\n\nconst mapFacets = (\n searchResults: ApiLoopSearchResultsBase,\n facetType: SearchFacetType,\n): SearchResultFacet[] => {\n const facetsByType = searchResults.facets?.find((facet) => facet.name === facetType);\n let facets: SearchResultFacet[] = [];\n\n if (facetsByType) {\n facets = facetsByType.items.map((item) => {\n return {\n name: item.item,\n value: item.item,\n count: item.count,\n isSelected: item.selected,\n };\n });\n }\n\n return facets;\n};\n\nexport const mapLoopSearchArticle = (loopArticle: ApiLoopSearchArticle): SearchArticle => ({\n ...loopArticle,\n published: loopArticle.published ? parseISO(loopArticle.published) : undefined,\n});\n\nexport const mapLoopArticleSearchResponse = (\n searchResponse: ApiLoopSearchResponse<ApiLoopSearchArticle>,\n searchRequest: SearchRequest,\n): SearchArticleResults => {\n const articles: SearchArticle[] = searchResponse.results.items.map(mapLoopSearchArticle);\n\n return {\n query: searchRequest.searchTerm,\n items: articles,\n totalResults: searchResponse.results.count,\n makeSense: true,\n spellingSuggestions: [],\n };\n};\n\nexport const mapLoopPointshopSearchResponse = (\n searchResponse: ApiLoopSearchResponse<ApiLoopLoyaltyProduct>,\n searchRequest: SearchRequest,\n): SearchPointshopResults => {\n const pointshopItems: SearchPointshop[] = searchResponse.results.items\n .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n .map(mapLoopSearchPointshop);\n\n return {\n query: searchRequest.searchTerm,\n items: pointshopItems,\n totalResults: searchResponse.results.count,\n makeSense: true,\n spellingSuggestions: [],\n };\n};\n\nexport const mapLoopSearchStore = (loopStore: ApiLoopSearchStore): SearchStore => ({\n id: loopStore.id,\n ledgerAccountNumber: loopStore.ledger_account_number,\n address: loopStore.address,\n city: loopStore.city,\n hasDR: loopStore.hasDR,\n imageUrl: loopStore.imageUrl,\n latitude: loopStore.latitude,\n longitude: loopStore.longitude,\n name: loopStore.name,\n services: loopStore.services || [],\n url: loopStore.url,\n zip: loopStore.zip,\n openingHours:\n loopStore.opening_hours?.map((openingHour) => ({\n ...openingHour,\n date: openingHour.date ? parseISO(openingHour.date) : undefined,\n })) || [],\n});\n\nexport const mapLoopSearchPointshop = (loopPointshop: ApiLoopLoyaltyProduct): SearchPointshop => ({\n id: loopPointshop.id,\n brand: loopPointshop.brand, // saknas frÃ¥n partnererbjudanden\n headline: loopPointshop.headline, // saknas\n imageUrl: loopPointshop.imageUrl,\n name: loopPointshop.name,\n pointPrice: loopPointshop.pointPrice,\n preamble: loopPointshop.preamble,\n url: loopPointshop.url,\n category: loopPointshop.category,\n instruction: loopPointshop.instruction,\n fulfillmentProcess: loopPointshop.fulfillmentProcess,\n validityStartDate: loopPointshop.validityStartDate,\n validityEndDate: loopPointshop.validityEndDate,\n condition: loopPointshop.condition,\n body: loopPointshop.body,\n type: loopPointshop.type === 'PartneroffersEntity' ? 'PartneroffersEntity' : 'PointshopEntity',\n published: loopPointshop.published, // new\n contentType: loopPointshop.contentType, // new \"partnerpage\"\n});\n\nexport const mapLoopSearchRecipeCategory = (\n loopRecipeCategory: ApiLoopSearchRecipeCategory,\n): SearchRecipeCategory => {\n return {\n name: loopRecipeCategory.page_title,\n url: loopRecipeCategory.url,\n imageUrl: loopRecipeCategory.full_image,\n preamble: loopRecipeCategory.preamble,\n };\n};\n\nexport const mapLoopSearchRecipe = (loopRecipe: ApiLoopSearchRecipe): SearchRecipe => {\n const recipe: SearchRecipe = {\n id: loopRecipe.id,\n name: loopRecipe.name,\n averageRating: loopRecipe.average_rating,\n categories: loopRecipe.categories,\n alternativeTitle: loopRecipe.alternative_title,\n cookingInstructions: loopRecipe.cooking_instructions,\n cookingTime: loopRecipe.cooking_time,\n ingredients: loopRecipe.ingredients,\n keywords: loopRecipe.keywords,\n numberOfVotes: loopRecipe.number_of_votes,\n ovenTemperature: loopRecipe.oven_temperature,\n preamble: loopRecipe.preamble,\n preparationTime: loopRecipe.preparation_time,\n servingTips: loopRecipe.serving_tips,\n tips: loopRecipe.tips,\n totalTime: loopRecipe.total_time,\n url: loopRecipe.url,\n yieldAlternative: loopRecipe.yield_alternative,\n yieldUnit: loopRecipe.yield_unit,\n carbGram: loopRecipe.carb_gram,\n carbPercent: loopRecipe.carb_percent,\n climateImpactKg: loopRecipe.climate_impact_kg || null,\n fatGram: loopRecipe.fat_gram,\n fatPercent: loopRecipe.fat_percent,\n proteinGram: loopRecipe.protein_gram,\n proteinPercent: loopRecipe.protein_percent,\n publicationDate: loopRecipe.publication_date\n ? parseISO(loopRecipe.publication_date)\n : undefined,\n saltGram: loopRecipe.salt_gram,\n saturatedFatGram: loopRecipe.saturated_fat_gram,\n yieldValue: loopRecipe.yield_value,\n energyValueKcal: 0, // TODO: missing?\n energyValueKj: 0, // TODO: missing?\n imageUrl: loopRecipe.image_url,\n isFoodBox: loopRecipe.is_food_box || false,\n };\n\n return recipe;\n};\n\nexport const mapApiRecipe = (apiRecipe: ApiRecipe): LightSearchRecipe => {\n const recipe: LightSearchRecipe = {\n id: apiRecipe.externalId.toString(),\n name: apiRecipe.name,\n averageRating: apiRecipe.avgRating,\n numberOfVotes: apiRecipe.numberOfVotes,\n preamble: apiRecipe.preamble,\n url: apiRecipe.url,\n imageUrl: apiRecipe.imageUrl,\n cookingTime: apiRecipe.cookingTime,\n relativeUrl: apiRecipe.relativeUrl,\n climateImpactKg: apiRecipe.climateImpactKg,\n isFoodBox: apiRecipe.isFoodBox,\n };\n\n return recipe;\n};\n\nexport const mapLoopStoreSearchResponse = (\n searchResponse: ApiLoopSearchResponse<ApiLoopSearchStore>,\n searchRequest: SearchRequest,\n): SearchStoreResults => {\n const stores: SearchStore[] = searchResponse.results.items.map(mapLoopSearchStore);\n\n return {\n query: searchRequest.searchTerm,\n items: stores,\n totalResults: searchResponse.results.count,\n makeSense: true,\n spellingSuggestions: [],\n };\n};\n\nexport const mapLoopProductNoQuerySearchResponse = (\n searchResponse: ApiLoopSearchResponse<ApiLoopProduct>,\n): LoopNoQueryProductResults => {\n const brandFacets = mapFacets(searchResponse.results, SearchFacetType.Brand);\n const environmentalFacets = mapFacets(\n searchResponse.results,\n SearchFacetType.EnvironmentalLabels,\n );\n\n const categoryIdsFacets = mapFacets(searchResponse.results, SearchFacetType.CategoryIds);\n const topCategoryFacets = mapFacets(searchResponse.results, SearchFacetType.TopCategory);\n\n environmentalFacets.sort((a, b) => a.name.localeCompare(b.name));\n\n const products = searchResponse.results.items.map(mapLoopProduct);\n const relatedProducts = searchResponse.relatedResults?.items?.map(mapLoopProduct) || [];\n\n return {\n brandFacets,\n environmentalFacets,\n categoryIdsFacets,\n topCategoryFacets,\n items: products,\n totalResults: searchResponse.results.count,\n relatedResult: {\n totalResults: searchResponse.relatedResults?.count || 0,\n items: relatedProducts,\n },\n };\n};\n\nexport const mapLoopProductSearchResponse = (\n searchResponse: ApiLoopSearchResponse<ApiLoopProduct>,\n searchRequest: SearchRequest,\n): LoopSearchProductResults => {\n const response = mapLoopProductNoQuerySearchResponse(searchResponse);\n\n let spellingSuggestions: string[] = [];\n if (searchResponse.spellingSuggestions && searchResponse.spellingSuggestions.count > 0) {\n spellingSuggestions = searchResponse.spellingSuggestions.items.map(\n (suggestion) => suggestion.query,\n );\n }\n\n return {\n ...response,\n query: searchRequest.searchTerm,\n spellingSuggestions,\n makeSense: searchResponse.makeSense,\n queryUsed: searchResponse.queryUsed,\n };\n};\n\nexport const mapLoopAutocompleteResponse = (\n loopAutocompleteResponse: ApiLoopAutocompleteResponse,\n query: string,\n): AutocompleteResponse => {\n return {\n query,\n hints: loopAutocompleteResponse.queries.items.map((item) => item.query),\n };\n};\n\nexport const mapLoopGlobalSearchResponse = (\n searchResponse: ApiLoopGlobalSearchResponse,\n searchTerm: string,\n): GlobalSearchResults => {\n let spellingSuggestions: string[] = [];\n if (searchResponse.spellingSuggestions && searchResponse.spellingSuggestions.count > 0) {\n spellingSuggestions = searchResponse.spellingSuggestions.items.map(\n (suggestion) => suggestion.query,\n );\n }\n\n const mappedResponse: GlobalSearchResults = {\n searchTerm,\n queryUsed: searchResponse.queryUsed,\n makeSense: searchResponse.makeSense,\n spellingSuggestions,\n };\n\n if (searchResponse.results) {\n mappedResponse.productResults = {\n items: searchResponse.results.items.map(mapLoopProduct),\n totalResults: searchResponse.results.count,\n };\n }\n\n if (searchResponse.editorialContentResults) {\n mappedResponse.articleResults = {\n items: searchResponse.editorialContentResults.results.items.map(mapLoopSearchArticle),\n totalResults: searchResponse.editorialContentResults.results.count,\n };\n }\n\n if (searchResponse.storesResults) {\n mappedResponse.storeResults = {\n items: searchResponse.storesResults.results.items.map(mapLoopSearchStore),\n totalResults: searchResponse.storesResults.results.count,\n };\n }\n\n if (searchResponse.pointshopResults) {\n mappedResponse.pointshopResults = {\n items: searchResponse.pointshopResults.results.items\n .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n .map(mapLoopSearchPointshop),\n totalResults: searchResponse.pointshopResults.results.count,\n };\n }\n\n if (searchResponse.recipesResults) {\n mappedResponse.recipeResults = {\n items: searchResponse.recipesResults.results.items.map(mapLoopSearchRecipe),\n totalResults: searchResponse.recipesResults.results.count,\n };\n }\n\n if (searchResponse.recipeCategoriesResults) {\n mappedResponse.recipeCategoryResults = {\n items: searchResponse.recipeCategoriesResults.results.items.map(\n mapLoopSearchRecipeCategory,\n ),\n totalResults: searchResponse.recipeCategoriesResults.results.count,\n };\n }\n\n return mappedResponse;\n};\n","import { getCancellationToken } from '../../common/api/utils';\nimport getDirectPersonalizationSearchAxiosClient, {\n prepareRequestParams,\n} from './directPersonalizationAxiosClient';\nimport type {\n ApiLoopAutocompleteRequest,\n ApiLoopGlobalSearchRequest,\n ApiLoopSearchByAttributeRequest,\n ApiLoopSearchRequest,\n} from './searchRequests';\n\nconst searchLoyaltyProducts = async ({\n loopSearchRequest,\n}: {\n loopSearchRequest: ApiLoopSearchRequest;\n}): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n '/search/pointshop',\n loopSearchRequest,\n {\n params: {\n channel: 'Coopse',\n },\n },\n );\n return response.data;\n};\n\nconst searchRecipes = async ({\n loopSearchRequest,\n}: {\n loopSearchRequest: ApiLoopSearchRequest;\n}): Promise<ApiLoopRecipeSearchResponse> => {\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopRecipeSearchResponse>(\n '/search/recipes',\n loopSearchRequest,\n );\n return response.data;\n};\n\nconst searchProducts = async (\n loopSearchRequest: ApiLoopSearchRequest,\n storeId: string,\n abortSignal: AbortSignal | undefined,\n searchService: string | null,\n customerGroups?: string[],\n device?: string,\n quickSearch?: boolean,\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/products',\n loopSearchRequest,\n {\n cancelToken: token,\n params: prepareRequestParams(\n storeId,\n customerGroups,\n device,\n quickSearch,\n searchService,\n ),\n },\n );\n return response.data;\n};\n\nconst searchArticles = async (\n loopSearchRequest: ApiLoopSearchRequest,\n abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopSearchArticle>> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n const response = await client.post<ApiLoopSearchResponse<ApiLoopSearchArticle>>(\n '/search/articles',\n loopSearchRequest,\n { cancelToken: token },\n );\n return response.data;\n};\nconst searchPointshop = async (\n loopSearchRequest: ApiLoopSearchRequest,\n abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n '/search/pointshop',\n loopSearchRequest,\n { cancelToken: token },\n );\n return response.data;\n};\n\nconst getLoyaltyProductsById = async (\n ids: number[],\n): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient(false);\n const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n '/search/pointshops/by-id',\n ids,\n );\n return response.data;\n};\n\nconst searchStores = async (\n loopSearchRequest: ApiLoopSearchRequest,\n abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopSearchStore>> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n const response = await client.post<ApiLoopSearchResponse<ApiLoopSearchStore>>(\n '/search/stores',\n loopSearchRequest,\n { cancelToken: token },\n );\n return response.data;\n};\n\nconst searchGlobal = async (\n loopGlobalSearchRequest: ApiLoopGlobalSearchRequest,\n storeId: string,\n abortSignal?: AbortSignal,\n customerGroups?: string[],\n device?: string,\n quickSearch?: boolean,\n): Promise<ApiLoopGlobalSearchResponse> => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopGlobalSearchResponse>(\n '/search/global',\n loopGlobalSearchRequest,\n {\n cancelToken: token,\n params: prepareRequestParams(storeId, customerGroups, device, quickSearch),\n },\n );\n return response.data;\n};\n\nconst searchByAttribute = async (\n loopSearchRequest: ApiLoopSearchByAttributeRequest,\n storeId: string,\n customerGroups?: string[],\n device?: string,\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n const client = getDirectPersonalizationSearchAxiosClient();\n\n const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n '/search/entities/by-attribute',\n loopSearchRequest,\n { params: prepareRequestParams(storeId, customerGroups, device, false) },\n );\n return response.data;\n};\n\nconst autoComplete = async (\n loopAutocompleteRequest: ApiLoopAutocompleteRequest,\n abortSignal: AbortSignal | undefined,\n storeId: string,\n searchService: string | null,\n customerGroups?: string[],\n device?: string,\n) => {\n const token = getCancellationToken(abortSignal);\n const client = getDirectPersonalizationSearchAxiosClient();\n const response = await client.post<ApiLoopAutocompleteResponse>(\n '/search/auto-complete',\n loopAutocompleteRequest,\n {\n cancelToken: token,\n params: prepareRequestParams(storeId, customerGroups, device, false, searchService),\n },\n );\n return response.data;\n};\n\nexport const searchDirectApi = {\n getLoyaltyProductsById,\n searchRecipes,\n searchLoyaltyProducts,\n searchProducts,\n searchArticles,\n searchPointshop,\n searchStores,\n searchGlobal,\n searchByAttribute,\n autoComplete,\n};\n","import type {\n ApiLoopDistinctFacet,\n ApiLoopSearchAndFilter,\n ApiLoopSearchFilter,\n ApiLoopSearchOrFilter,\n ApiLoopSort,\n} from '../api/searchRequests';\nimport type {\n SearchRequestAndFilter,\n SearchRequestFacet,\n SearchRequestFilter,\n SearchRequestOrFilter,\n SortOrderType,\n} from '../models/models';\nimport { SearchFacetType } from '../models/models';\n\nconst sortOrderMap: Readonly<Record<SortOrderType, ApiLoopSort<string>>> = {\n popular: { order: 'desc', type: 'popularity' },\n 'product_name+asc': {\n order: 'asc',\n attributeName: 'name',\n type: 'attribute',\n },\n 'product_effectiveprice_cents+asc': {\n order: 'asc',\n attributeName: 'piecePrice',\n type: 'attribute',\n },\n 'product_effectiveprice_cents+desc': {\n order: 'desc',\n attributeName: 'piecePrice',\n type: 'attribute',\n },\n 'product_effectiveprice_with_promo+asc': {\n order: 'asc',\n attributeName: 'lowestOnlineSinglePiecePrice',\n type: 'attribute',\n },\n 'product_effectiveprice_with_promo+desc': {\n order: 'desc',\n attributeName: 'lowestOnlineSinglePiecePrice',\n type: 'attribute',\n },\n};\n\nconst facetMap: Record<SearchFacetType, ApiLoopDistinctFacet> = {\n categories: {\n attributeName: 'categories',\n type: 'distinct',\n operator: 'AND',\n name: SearchFacetType.RecipeCategories,\n selected: [],\n },\n brand: {\n attributeName: 'manufacturerName',\n type: 'distinct',\n operator: 'OR',\n name: SearchFacetType.Brand,\n selected: [],\n },\n loyaltybrand: {\n attributeName: 'brand',\n type: 'distinct',\n operator: 'AND',\n name: SearchFacetType.Loyaltybrand,\n selected: [],\n },\n loyaltyCategory: {\n attributeName: 'category',\n type: 'distinct',\n operator: 'AND',\n name: SearchFacetType.LoyaltyCategory,\n selected: [],\n },\n categoryIds: {\n attributeName: 'categoryIds',\n type: 'distinct',\n operator: 'OR',\n name: SearchFacetType.CategoryIds,\n selected: [],\n },\n environmentalLabels: {\n attributeName: 'filterLabels',\n type: 'distinct',\n operator: 'AND',\n name: SearchFacetType.EnvironmentalLabels,\n selected: [],\n },\n topCategory: {\n attributeName: 'topCategory',\n type: 'distinct',\n operator: 'OR',\n name: SearchFacetType.TopCategory,\n selected: [],\n },\n};\n\nexport const mapSortOrder = (sortOrders: string[]) => {\n const sortBy: ApiLoopSort<string>[] = [];\n if (sortOrders) {\n sortOrders.forEach((sort) => {\n if (sort === 'default') {\n sortBy.push(sortOrderMap.popular);\n return;\n }\n\n const sortOrder = sortOrderMap[sort as SortOrderType];\n if (sortOrder) {\n sortBy.push(sortOrder);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `mapping for sortOrder: ${sort} not found, possible sort orders: ${Object.keys(\n sortOrderMap,\n ).join(',')}`,\n );\n }\n });\n }\n\n return sortBy;\n};\n\nexport const mapFacets = (facets: SearchRequestFacet[]) => {\n const loopFacets: ApiLoopDistinctFacet[] = [];\n if (facets) {\n facets.forEach((facet) => {\n const loopFacet = facetMap[facet.type];\n const selectedFacets = facet.selected ? [...facet.selected] : [];\n if (loopFacet) {\n loopFacet.selected = selectedFacets;\n if (facet.operator) {\n loopFacet.operator = facet.operator;\n }\n loopFacets.push(loopFacet);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `mapping for facet: ${facet.type} not found, possible facets: ${Object.keys(\n facetMap,\n ).join(',')}`,\n );\n }\n });\n }\n\n return loopFacets;\n};\n\nexport const mapFilter = (filter: SearchRequestFilter) => {\n const activeFilter: ApiLoopSearchFilter = {\n type: filter.type,\n attributeName: filter.attributeName,\n comparisonMode: filter.comparisonMode,\n value: filter.value,\n };\n\n return activeFilter;\n};\n\nexport const mapAndFilter = (filter: SearchRequestAndFilter) => {\n const activeFilterAnd: ApiLoopSearchAndFilter = {\n and: filter.and,\n };\n return activeFilterAnd;\n};\n\nexport const mapAndOrFilter = (filter: SearchRequestAndFilter | SearchRequestOrFilter) => {\n if (isAnd(filter)) {\n const activeFilterAnd: ApiLoopSearchAndFilter = {\n and: filter.and,\n };\n return activeFilterAnd;\n }\n\n const activeFilterOr: ApiLoopSearchOrFilter = {\n or: filter.or,\n };\n return activeFilterOr;\n};\n\ntype Z = SearchRequestAndFilter | SearchRequestOrFilter;\n\nexport const isAnd = (obj: Z): obj is SearchRequestAndFilter => {\n return obj.type === 'And';\n};\n","import { Browser } from '../../../utility/browser';\nimport { productApi } from '../../common/api/products/productApi';\nimport { DirectProductProvider } from '../../common/flow/product/directProductProvider';\nimport userFlow from '../../common/flow/userFlow';\nimport { searchDirectApi } from '../api/searchApi';\nimport type {\n ApiLoopAutocompleteRequest,\n ApiLoopCurrentOffersRequest,\n ApiLoopGlobalSearchRequest,\n ApiLoopRangeFacet,\n ApiLoopResultOptions,\n ApiLoopSearchByAttributeRequest,\n ApiLoopSearchRequest,\n} from '../api/searchRequests';\nimport type {\n BaseSearchRequest,\n GlobalSearchRequest,\n GlobalSearchResults,\n LoopNoQueryProductResults,\n LoopSearchProductResults,\n PointshopSearchAndRequest,\n PointshopSearchRequest,\n ProductOfferSearchRequest,\n ProductSearchRequest,\n RecipeSearchRequest,\n SearchArticleResults,\n SearchByAttributeRequest,\n SearchPointshop,\n SearchRecipeResult,\n SearchRequest,\n SearchRequestAlias,\n SearchStoreResults,\n} from '../models/models';\nimport { SearchFacetType } from '../models/models';\nimport { mapAndFilter, mapAndOrFilter, mapFacets, mapSortOrder } from './mapSearchRequest';\nimport {\n mapLoopArticleSearchResponse,\n mapLoopAutocompleteResponse,\n mapLoopGlobalSearchResponse,\n mapLoopProductNoQuerySearchResponse,\n mapLoopProductSearchResponse,\n mapLoopSearchPointshop,\n mapLoopSearchRecipe,\n mapLoopStoreSearchResponse,\n} from './mapSearchResponse';\n\nconst searchRecipesLoop = async ({\n searchRequest,\n}: {\n searchRequest: RecipeSearchRequest;\n}): Promise<SearchRecipeResult> => {\n let loopSearchRequest: ApiLoopSearchRequest = {\n query: searchRequest.searchQuery,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: searchRequest.sortBy,\n facets: mapFacets(searchRequest.facets),\n },\n };\n\n // if sortby is null, dont send it.\n if (searchRequest.sortBy === null) {\n loopSearchRequest = {\n query: searchRequest.searchQuery,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n facets: mapFacets(searchRequest.facets),\n },\n };\n }\n\n const response = await searchDirectApi.searchRecipes({ loopSearchRequest });\n\n return {\n count: response.results.count,\n items: response.results.items.map(mapLoopSearchRecipe),\n facets: response.results.facets,\n queryUsed: response.queryUsed,\n };\n};\n\nconst searchProductsLoop = async (\n searchRequest: ProductSearchRequest,\n abortSignal: AbortSignal | undefined,\n searchService: SearchService | null,\n quickSearch: boolean, // used by loop to indicate if the search was used when you type, they need it for something....\n): Promise<LoopSearchProductResults> => {\n const loopSearchRequest: ApiLoopSearchRequest = {\n query: searchRequest.searchTerm,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n },\n relatedResultsOptions: {\n skip: 0,\n take: 16,\n },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n const device = Browser.platformType();\n const response = await searchDirectApi.searchProducts(\n loopSearchRequest,\n searchRequest.storeId,\n abortSignal,\n searchService,\n customerGroups,\n device,\n quickSearch,\n );\n const mappedResponse = mapLoopProductSearchResponse(response, searchRequest);\n return mappedResponse;\n};\n\nconst searchProductOffersLoop = async (\n searchRequest: ProductOfferSearchRequest,\n abortSignal?: AbortSignal,\n groupOffers?: boolean,\n overwritePersonalizeCampaigns?: boolean,\n) => {\n const loopSearchRequest: ApiLoopCurrentOffersRequest = {\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n },\n customData: {\n personalizeCampaigns: !!overwritePersonalizeCampaigns,\n },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n const response = await productApi.getCurrentProductOffersLoop(\n loopSearchRequest,\n searchRequest.storeId,\n abortSignal,\n customerGroups,\n groupOffers,\n );\n\n const mappedResponse = mapLoopProductNoQuerySearchResponse(response);\n return mappedResponse;\n};\n\nconst searchArticlesLoop = async (\n searchRequest: SearchRequest,\n abortSignal: AbortSignal,\n): Promise<SearchArticleResults> => {\n const loopSearchRequest: ApiLoopSearchRequest = {\n query: searchRequest.searchTerm,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n },\n };\n\n const response = await searchDirectApi.searchArticles(loopSearchRequest, abortSignal);\n const mappedResponse = mapLoopArticleSearchResponse(response, searchRequest);\n return mappedResponse;\n};\n\nconst searchStoresLoop = async (\n searchRequest: SearchRequest,\n abortSignal: AbortSignal,\n): Promise<SearchStoreResults> => {\n const loopSearchRequest: ApiLoopSearchRequest = {\n query: searchRequest.searchTerm,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n },\n };\n\n const response = await searchDirectApi.searchStores(loopSearchRequest, abortSignal);\n const mappedResponse = mapLoopStoreSearchResponse(response, searchRequest);\n return mappedResponse;\n};\n\nconst searchLoyaltyProductsById = async (ids: number[]): Promise<SearchPointshop[]> => {\n if (!ids || !ids.length) {\n return [];\n }\n const distinctIds = ids.filter((id, index, result) => id && index === result.indexOf(id));\n const response = await searchDirectApi.getLoyaltyProductsById(distinctIds);\n\n const mappedResponse = response.results.items\n .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n .map(mapLoopSearchPointshop);\n return mappedResponse;\n};\n\nconst searchLoyaltyProducts = async (\n searchRequest: PointshopSearchAndRequest,\n): Promise<SearchPointshop[]> => {\n const loopSearchRequest: ApiLoopSearchRequest = {\n query: '',\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n filter: searchRequest.filter && mapAndFilter(searchRequest.filter),\n },\n };\n const response = await searchDirectApi.searchLoyaltyProducts({ loopSearchRequest });\n\n const mappedResponse = response.results.items\n .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n .map(mapLoopSearchPointshop);\n return mappedResponse;\n};\n\nconst mapResultOptions = (searchRequest: BaseSearchRequest): ApiLoopResultOptions => ({\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy), // this will probably be different per document type, if we ever use it\n facets: mapFacets(searchRequest.facets), // this will probably be different per document type, if we ever use it\n});\n\nconst mapResultFilterOptions = (searchRequest: PointshopSearchRequest): ApiLoopResultOptions => ({\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy), // this will probably be different per document type, if we ever use it\n facets: mapFacets(searchRequest.facets), // this will probably be different per document type, if we ever use it\n filter: searchRequest.filter && mapAndOrFilter(searchRequest.filter),\n});\n\nconst searchGlobalLoop = async (\n searchRequest: GlobalSearchRequest,\n quickSearch: boolean,\n abortSignal?: AbortSignal,\n): Promise<GlobalSearchResults> => {\n const loopGlobalSearchRequest: ApiLoopGlobalSearchRequest = {\n query: searchRequest.searchTerm,\n };\n\n if (searchRequest.productSearchRequest) {\n loopGlobalSearchRequest.resultsOptions = mapResultOptions(\n searchRequest.productSearchRequest,\n );\n } else {\n // we dont want products data when no productSearchRequest is provided\n loopGlobalSearchRequest.resultsOptions = {\n skip: 0,\n take: 0,\n };\n }\n\n if (searchRequest.storeSearchRequest) {\n loopGlobalSearchRequest.storesResultsOptions = mapResultOptions(\n searchRequest.storeSearchRequest,\n );\n }\n\n if (searchRequest.articleSearchRequest) {\n loopGlobalSearchRequest.editorialContentResultsOptions = mapResultOptions(\n searchRequest.articleSearchRequest,\n );\n }\n\n if (searchRequest.pointshopSearchRequest) {\n loopGlobalSearchRequest.pointshopResultsOptions = mapResultFilterOptions(\n searchRequest.pointshopSearchRequest,\n );\n }\n\n if (searchRequest.recipeSearchRequest) {\n loopGlobalSearchRequest.recipesResultsOptions = mapResultOptions(\n searchRequest.recipeSearchRequest,\n );\n }\n\n if (searchRequest.recipeCategoriesSearchRequest) {\n loopGlobalSearchRequest.recipeCategoriesResultsOptions = mapResultOptions(\n searchRequest.recipeCategoriesSearchRequest,\n );\n }\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const device = Browser.platformType();\n const response = await searchDirectApi.searchGlobal(\n loopGlobalSearchRequest,\n searchRequest.storeId,\n abortSignal,\n customerGroups,\n device,\n quickSearch,\n );\n const mappedResponse = mapLoopGlobalSearchResponse(response, searchRequest.searchTerm);\n return mappedResponse;\n};\n\nconst searchByAttribute = async (\n searchRequest: SearchByAttributeRequest,\n): Promise<LoopNoQueryProductResults> => {\n const loopSearchRequest: ApiLoopSearchByAttributeRequest = {\n attribute: searchRequest.attribute,\n requestAlias: searchRequest.requestAlias\n ? {\n name: searchRequest.requestAlias.name,\n value: searchRequest.requestAlias.value,\n details: searchRequest.requestAlias.details,\n }\n : undefined,\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n sortBy: mapSortOrder(searchRequest.sortBy),\n facets: mapFacets(searchRequest.facets),\n },\n customData: {\n getEntitiesByAttributeABTest:\n searchRequest.customData?.getEntitiesByAttributeABTest || false,\n },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const device = Browser.platformType();\n const response = await searchDirectApi.searchByAttribute(\n loopSearchRequest,\n searchRequest.storeId,\n customerGroups,\n device,\n );\n\n DirectProductProvider.instance.insertItems(response.results.items, searchRequest.storeId);\n const mappedResponse = mapLoopProductNoQuerySearchResponse(response);\n\n return mappedResponse;\n};\n\nconst searchByAttributeLoop = async (\n attribute: {\n name: string;\n value: string;\n },\n resultsPerPage: number,\n selectedPage: number,\n selectedBrand: string[] | null,\n selectedSortOrder: string | null,\n selectedEnvironmentalLabels: string[] | null,\n storeId: string,\n personalizeProductsByAttribute: boolean | null,\n requestAlias?: SearchRequestAlias,\n) => {\n const sortBy = selectedSortOrder ? [selectedSortOrder] : [];\n const facets = [\n {\n type: SearchFacetType.Brand,\n selected: selectedBrand || [],\n },\n {\n type: SearchFacetType.EnvironmentalLabels,\n selected: selectedEnvironmentalLabels || [],\n },\n ];\n\n const currentPage = selectedPage > 0 ? selectedPage - 1 : 0;\n\n return searchByAttribute({\n attribute,\n sortBy,\n resultsPerPage,\n facets,\n page: currentPage,\n storeId,\n customData: {\n getEntitiesByAttributeABTest: personalizeProductsByAttribute || false,\n },\n requestAlias,\n });\n};\n\nconst autocomplete = async (\n searchTerm: string,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n skip: number = 0,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n take: number = 5,\n abortSignal: AbortSignal | undefined,\n searchService: SearchService | null,\n storeId: string,\n) => {\n const loopAutocompleteRequest: ApiLoopAutocompleteRequest = {\n query: searchTerm,\n queriesOptions: { skip, take },\n };\n\n const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n const device = Browser.platformType();\n\n const response = await searchDirectApi.autoComplete(\n loopAutocompleteRequest,\n abortSignal,\n storeId,\n searchService,\n customerGroups,\n device,\n );\n\n const mappedResponse = mapLoopAutocompleteResponse(response, searchTerm);\n return mappedResponse;\n};\n\nconst searchProductsInSection = async (\n attribute: {\n name: string;\n value: string;\n },\n resultsPerPage: number,\n selectedPage: number,\n selectedBrand: string[],\n selectedSortOrder: string | null,\n selectedEnvironmentalLabels: string[],\n storeId: string,\n personalizeProductsByAttribute: boolean | null,\n requestAlias?: SearchRequestAlias,\n): Promise<LoopNoQueryProductResults> => {\n const loopResults = await searchByAttributeLoop(\n attribute,\n resultsPerPage,\n selectedPage,\n selectedBrand,\n selectedSortOrder,\n selectedEnvironmentalLabels,\n storeId,\n personalizeProductsByAttribute,\n requestAlias,\n );\n\n return loopResults;\n};\n\nconst searchPointshopProductsInPointRange = async (\n minPointsValue: number,\n maxPointsValue: number,\n searchRequest: {\n page: number;\n resultsPerPage: number;\n },\n) => {\n const rangeFacet: ApiLoopRangeFacet = {\n attributeName: 'pointPrice',\n type: 'range',\n selected: {\n min: minPointsValue,\n max: maxPointsValue,\n },\n };\n\n const loopSearchRequest: ApiLoopSearchRequest = {\n query: '',\n resultsOptions: {\n skip: searchRequest.page * searchRequest.resultsPerPage,\n take: searchRequest.resultsPerPage,\n facets: [rangeFacet],\n },\n };\n\n const response = await searchDirectApi.searchLoyaltyProducts({ loopSearchRequest });\n const mapped = response.results.items\n .filter((x) => x.type === 'PointshopEntity')\n .map(mapLoopSearchPointshop);\n\n return mapped;\n};\n\nexport type SearchService = 'aiSearchService' | 'loop54SearchService_v1';\n\nconst searchFlow = {\n searchProductsLoop,\n searchProductOffersLoop,\n searchArticlesLoop,\n searchStoresLoop,\n searchGlobalLoop,\n searchByAttribute,\n autocomplete,\n searchProductsInSection,\n searchByAttributeLoop,\n searchRecipesLoop,\n searchLoyaltyProductsById,\n searchLoyaltyProducts,\n searchPointshopProductsInPointRange,\n};\n\nexport default searchFlow;\n","import { useCallback } from 'react';\n\nimport { useAsyncDispatcher } from '../../common/hooks/useAsyncDispatcher';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\nimport { storeSelectors } from '../../common/selectors/storeSelectors';\nimport type {\n ApiLoopSearchAndFilter,\n ApiLoopSearchFilter,\n ApiLoopSearchInverseFilter,\n ApiLoopSearchOrFilter,\n} from '../api/searchRequests';\nimport searchFlow from '../flow/searchFlow';\nimport type { GlobalSearchRequest } from '../models/models';\nimport { SearchResultType } from '../models/SearchResultType';\n\nexport interface SearchResultPageCountPerType {\n products: number;\n recipes: number;\n stores: number;\n articles: number;\n pointshop: number;\n}\n\nexport const globalSearchAbortable = (\n query: string,\n currentProductionUnit: string,\n resultCountsPerPage: SearchResultPageCountPerType,\n quickSearch: boolean,\n abortSignal?: AbortSignal,\n) => {\n const searchRequest = {\n page: 0,\n resultsPerPage: 0,\n facets: [],\n sortBy: [],\n };\n\n // PARTNERERBJUDANDEN\n const partnerTypeFilter: ApiLoopSearchFilter = {\n type: 'type',\n comparisonMode: 'equals',\n value: 'PartneroffersEntity',\n };\n const partnererbjudandeAndFilter: ApiLoopSearchAndFilter = {\n and: [],\n };\n partnererbjudandeAndFilter.and.push(partnerTypeFilter);\n\n // POINTSHOP\n const pointshopValidityStartFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_validityStartDate',\n comparisonMode: 'lessThan',\n value: new Date().toISOString().replace('T', ' '),\n };\n const pointshopValidityEndFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_validityEndDate',\n comparisonMode: 'greaterThan',\n value: new Date().toISOString().replace('T', ' '),\n };\n const pointshopTypeFilter: ApiLoopSearchFilter = {\n type: 'type',\n value: 'PointshopEntity',\n comparisonMode: 'equals',\n };\n const notHiddenFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_category',\n value: 'Dold kategori',\n comparisonMode: 'equals',\n };\n const pointshopNotFilter: ApiLoopSearchInverseFilter = {\n not: notHiddenFilter,\n };\n\n const pointshopAndFilter: ApiLoopSearchAndFilter = {\n and: [],\n };\n pointshopAndFilter.and.push(pointshopValidityEndFilter);\n pointshopAndFilter.and.push(pointshopValidityStartFilter);\n pointshopAndFilter.and.push(pointshopTypeFilter);\n pointshopAndFilter.and.push(pointshopNotFilter);\n\n const orFilter: ApiLoopSearchOrFilter = {\n or: [],\n };\n orFilter.or.push(partnererbjudandeAndFilter);\n orFilter.or.push(pointshopAndFilter);\n\n const searchRequestPointshop = {\n page: 0,\n resultsPerPage: 0,\n facets: [],\n sortBy: [],\n filter: orFilter,\n };\n\n return searchFlow.searchGlobalLoop(\n {\n searchTerm: query,\n storeId: currentProductionUnit,\n productSearchRequest: {\n ...searchRequest,\n resultsPerPage: resultCountsPerPage.products,\n },\n articleSearchRequest: {\n ...searchRequest,\n resultsPerPage: resultCountsPerPage.articles,\n },\n storeSearchRequest: {\n ...searchRequest,\n resultsPerPage: resultCountsPerPage.stores,\n },\n recipeSearchRequest: {\n ...searchRequest,\n resultsPerPage: resultCountsPerPage.recipes,\n },\n pointshopSearchRequest: {\n ...searchRequestPointshop,\n resultsPerPage: resultCountsPerPage.pointshop,\n },\n },\n quickSearch,\n abortSignal,\n );\n};\n\nexport const useGlobalSearchResultState = (\n pageCounts: SearchResultPageCountPerType,\n quickSearch: boolean,\n) => {\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n const { execute, result, error, isLoading, status } = useAsyncDispatcher(\n (_query: string, _currentProductionUnit: string, _quickSearch: boolean) => {\n return globalSearchAbortable(\n _query,\n _currentProductionUnit,\n pageCounts,\n _quickSearch,\n undefined,\n );\n },\n );\n\n const fetch = useCallback(\n (_query: string) => {\n if (currentProductionUnit) {\n execute(_query, currentProductionUnit, quickSearch);\n }\n },\n [currentProductionUnit, quickSearch, execute],\n );\n return {\n result,\n error,\n isLoading,\n fetch,\n status,\n };\n};\n\nconst getGlobalSearchSingleTypeRequest = (\n searchTerm: string,\n storeId: string,\n selectedPage: number,\n pageSize: number,\n resultType: SearchResultType,\n): GlobalSearchRequest => {\n const filledSingleTypeRquest = {\n page: selectedPage,\n resultsPerPage: pageSize,\n facets: [],\n sortBy: [],\n };\n\n // PARTNERERBJUDANDEN\n const partnerTypeFilter: ApiLoopSearchFilter = {\n type: 'type',\n comparisonMode: 'equals',\n value: 'PartneroffersEntity',\n };\n const partnererbjudandeAndFilter: ApiLoopSearchAndFilter = {\n and: [],\n };\n partnererbjudandeAndFilter.and.push(partnerTypeFilter);\n\n // POINTSHOP\n const pointshopValidityStartFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_validityStartDate',\n comparisonMode: 'lessThan',\n value: new Date().toISOString().replace('T', ' '),\n };\n const pointshopValidityEndFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_validityEndDate',\n comparisonMode: 'greaterThan',\n value: new Date().toISOString().replace('T', ' '),\n };\n const pointshopTypeFilter: ApiLoopSearchFilter = {\n type: 'type',\n value: 'PointshopEntity',\n comparisonMode: 'equals',\n };\n const notHiddenFilter: ApiLoopSearchFilter = {\n type: 'attribute',\n attributeName: 'pointshop_category',\n value: 'Dold kategori',\n comparisonMode: 'equals',\n };\n const pointshopNotFilter: ApiLoopSearchInverseFilter = {\n not: notHiddenFilter,\n };\n\n const pointshopAndFilter: ApiLoopSearchAndFilter = {\n and: [],\n };\n\n pointshopAndFilter.and.push(pointshopValidityEndFilter);\n pointshopAndFilter.and.push(pointshopValidityStartFilter);\n pointshopAndFilter.and.push(pointshopTypeFilter);\n pointshopAndFilter.and.push(pointshopNotFilter);\n\n const orFilter: ApiLoopSearchOrFilter = {\n or: [],\n };\n orFilter.or.push(partnererbjudandeAndFilter);\n orFilter.or.push(pointshopAndFilter);\n\n const filledSingleTypeFilterRquest = {\n page: selectedPage,\n resultsPerPage: pageSize,\n facets: [],\n sortBy: [],\n filter: orFilter,\n };\n\n const globalSearchRequest: GlobalSearchRequest = {\n searchTerm,\n storeId,\n productSearchRequest:\n resultType === SearchResultType.Products ? filledSingleTypeRquest : undefined,\n articleSearchRequest:\n resultType === SearchResultType.Articles ? filledSingleTypeRquest : undefined,\n pointshopSearchRequest:\n resultType === SearchResultType.Pointshop ? filledSingleTypeFilterRquest : undefined,\n storeSearchRequest:\n resultType === SearchResultType.Stores ? filledSingleTypeRquest : undefined,\n recipeSearchRequest:\n resultType === SearchResultType.Recipes ? filledSingleTypeRquest : undefined,\n recipeCategoriesSearchRequest:\n resultType === SearchResultType.Recipes\n ? { ...filledSingleTypeRquest, page: 0 }\n : undefined, // every time we fetch recipes in GlobalSearchState, we also want recipe categories\n };\n\n return globalSearchRequest;\n};\n\nexport const useGlobalSearchSingleTypeState = (\n pageSize: number,\n resultType: SearchResultType,\n page: number,\n) => {\n const currentProductionUnit = useAppSelector(storeSelectors.currentProductionUnit);\n const { execute, result, error, isLoading, status } = useAsyncDispatcher(\n (_query: string, _selectedPage: number, _currentProductionUnit: string) => {\n return searchFlow.searchGlobalLoop(\n getGlobalSearchSingleTypeRequest(\n _query,\n _currentProductionUnit,\n _selectedPage,\n pageSize,\n resultType,\n ),\n false,\n undefined,\n );\n },\n { keepPreviousResult: true },\n );\n\n const fetch = useCallback(\n (_query: string) => {\n if (currentProductionUnit) {\n execute(_query, page, currentProductionUnit);\n }\n },\n [currentProductionUnit, execute, page],\n );\n\n return {\n isLoading,\n result,\n error,\n fetch,\n status,\n };\n};\n","import { useSearchStateContext } from '../contexts/searchStateContext';\nimport type { AutocompleteResponse, LoopSearchProductResults } from '../models/models';\n\nexport const useProductSearchStateContext = () => {\n const x = useSearchStateContext<[LoopSearchProductResults, AutocompleteResponse]>();\n const mapped = {\n ...x,\n result: x?.result?.[0],\n autocompleteResult: x?.result?.[1],\n queryUsed: x?.result?.[0]?.queryUsed || x?.query,\n };\n return mapped;\n};\n","export enum SearchResultType {\n Recipes = 'Recipes',\n Products = 'Products',\n Stores = 'Stores',\n Articles = 'Articles',\n Pointshop = 'Pointshop',\n}\n","import type { ApiFacetOperator, ApiLoopSort, LoopSearchFilterType } from '../api/searchRequests';\n\nexport type SearchSortOrderType = 'asc' | 'desc';\nexport type SearchSortType = 'relevance' | 'attribute' | 'id' | 'type' | 'popularity';\n\nexport interface SearchResultFacet {\n name: string;\n count?: number;\n isSelected: boolean;\n}\n\nexport interface LegacySearchResults extends SearchResults<ApiProduct> {\n environmentalFacets?: SearchResultFacet[];\n}\n\nexport interface LoopSearchProductResults extends SearchResults<ApiProduct>, SearchResultFacets {\n relatedResult?: BaseSearchResults<ApiProduct>;\n queryUsed: string;\n}\n\nexport interface LoopNoQueryProductResults\n extends BaseSearchResults<ApiProduct>,\n SearchResultFacets {\n relatedResult?: BaseSearchResults<ApiProduct>;\n}\n\ninterface SearchResultFacets {\n environmentalFacets?: SearchResultFacet[];\n brandFacets?: SearchResultFacet[];\n categoryIdsFacets?: SearchResultFacet[];\n topCategoryFacets?: SearchResultFacet[];\n}\n\nexport interface BaseSearchResults<T> {\n items: T[];\n totalResults: number;\n}\n\nexport interface RecipeCategoryFacet {\n categories: RecipeCategoryFacet[] | null;\n count: number;\n item: string;\n selected: boolean;\n}\nexport interface SearchRecipeResult {\n count: number;\n facets: { name: string; items: RecipeCategoryFacet[] }[];\n items: SearchRecipe[];\n queryUsed: string;\n}\n\nexport interface SearchResults<T> extends BaseSearchResults<T> {\n query: string;\n makeSense?: boolean;\n spellingSuggestions: string[];\n}\n\nexport interface GlobalSearchResults {\n searchTerm: string;\n queryUsed: string;\n makeSense: boolean;\n spellingSuggestions: string[];\n productResults?: BaseSearchResults<ApiProduct>;\n articleResults?: BaseSearchResults<SearchArticle>;\n storeResults?: BaseSearchResults<SearchStore>;\n pointshopResults?: BaseSearchResults<SearchPointshop>;\n recipeResults?: BaseSearchResults<LightSearchRecipe>;\n recipeCategoryResults?: BaseSearchResults<SearchRecipeCategory>;\n}\n\nexport interface SearchRequestFacet {\n type: SearchFacetType;\n selected: string[];\n operator?: ApiFacetOperator;\n}\n\nexport interface SearchRequestFilter {\n type: 'attribute' | 'type' | 'id';\n attributeName?: string;\n value: string | number | boolean;\n comparisonMode:\n | 'equals'\n | 'greaterThan'\n | 'greaterThanOrEquals'\n | 'lessThan'\n | 'lessThanOrEquals'\n | 'contains';\n}\n\nexport interface SearchRequestAndFilter {\n and: LoopSearchFilterType[];\n type?: 'And';\n}\nexport interface SearchRequestOrFilter {\n or: LoopSearchFilterType[];\n type?: 'Or';\n}\n\nexport enum SearchFacetType {\n RecipeCategories = 'categories',\n Brand = 'brand',\n Loyaltybrand = 'loyaltybrand',\n EnvironmentalLabels = 'environmentalLabels',\n CategoryIds = 'categoryIds',\n LoyaltyCategory = 'loyaltyCategory',\n TopCategory = 'topCategory',\n}\n\nexport interface BaseSearchRequest {\n page: number;\n resultsPerPage: number;\n sortBy: string[];\n facets: SearchRequestFacet[];\n}\nexport interface PointshopSearchRequest {\n page: number;\n resultsPerPage: number;\n sortBy: string[];\n facets: SearchRequestFacet[];\n filter?: SearchRequestAndFilter | SearchRequestOrFilter;\n}\nexport interface PointshopSearchAndRequest {\n page: number;\n resultsPerPage: number;\n sortBy: string[];\n facets: SearchRequestFacet[];\n filter?: SearchRequestAndFilter;\n}\nexport interface RecipeSearchRequest extends Omit<BaseSearchRequest, 'sortBy'> {\n searchQuery: string;\n sortBy?: ApiLoopSort<keyof ApiLoopSearchRecipe>[];\n}\n\nexport interface SearchRequest extends BaseSearchRequest {\n searchTerm: string;\n}\n\nexport interface ProductSearchRequest extends SearchRequest {\n storeId: string;\n}\n\nexport interface ProductOfferSearchRequest extends BaseSearchRequest {\n storeId: string;\n}\n\ninterface SearchAttribute {\n name: string;\n value: string;\n}\n\nexport interface SearchRequestAlias {\n /** Specify an alias for this attribute name. */\n name: string;\n /** Specify an alias for this attribute value. */\n value: string;\n /** Specify a more detailed description for this attribute name-value pair. Will be shown in the Portal. */\n details: string;\n}\n\nexport interface SearchByAttributeRequest extends BaseSearchRequest {\n attribute: SearchAttribute;\n storeId: string;\n customData?: CustomSearchRequestData;\n /** Provides human-readable labels in the Portal. */\n requestAlias?: SearchRequestAlias;\n}\n\nexport interface CustomSearchRequestData {\n getEntitiesByAttributeABTest: boolean;\n}\n\nexport interface GlobalSearchRequest {\n searchTerm: string;\n storeId: string;\n productSearchRequest?: BaseSearchRequest;\n articleSearchRequest?: BaseSearchRequest;\n storeSearchRequest?: BaseSearchRequest;\n pointshopSearchRequest?: PointshopSearchRequest;\n recipeSearchRequest?: BaseSearchRequest;\n recipeCategoriesSearchRequest?: BaseSearchRequest;\n}\n\nexport type SortOrderType =\n | 'popular'\n | 'product_name+asc'\n | 'product_effectiveprice_cents+asc'\n | 'product_effectiveprice_cents+desc'\n | 'product_effectiveprice_with_promo+asc'\n | 'product_effectiveprice_with_promo+desc';\n\nexport interface TrackPurchaseRequest {\n products: TrackPurchaseProduct[];\n orderId: string;\n revenue: number;\n}\n\nexport interface TrackPurchaseProduct {\n productId: string;\n quantity: number;\n itemPrice: number;\n}\n\nexport interface AutocompleteResponse {\n query: string;\n hints: string[];\n}\n\nexport enum SearchType {\n Ai = 'Ai',\n}\n\nexport interface AISearchRequest {\n query: string;\n page: number;\n pageSize: number;\n}\n\n// #region Store\nexport interface SearchStore {\n id: string;\n zip: string;\n address: string;\n city: string;\n latitude: number;\n longitude: number;\n imageUrl?: string;\n services: string[];\n url: string;\n hasDR: boolean;\n ledgerAccountNumber?: number;\n name: string;\n openingHours: StoreOpeningHours[];\n}\n\nexport interface StoreOpeningHours {\n date?: Date;\n isSpecialDate: boolean;\n openFrom: string;\n openHoursText: string;\n week: number;\n openTo: string;\n sortOrder: number;\n text: string;\n type: number;\n}\nexport interface SearchStoreResults extends SearchResults<SearchStore> {}\n// #endregion\n\n// #region Article\nexport interface SearchArticle {\n id: string;\n published?: Date;\n name: string;\n headline: string;\n preamble: string;\n body?: string;\n url: string;\n imageUrl?: string;\n}\n\nexport interface SearchArticleResults extends SearchResults<SearchArticle> {}\n// #endregion\n\n// #region Pointshop\n\nexport interface SearchPointshop {\n id: string;\n category: string[];\n url: string;\n name: string;\n imageUrl: string;\n headline: string;\n preamble: string;\n body?: string;\n instruction: string;\n brand: string;\n pointPrice: number;\n fulfillmentProcess: number[];\n validityStartDate: string;\n validityEndDate: string;\n condition: string;\n type: 'PartneroffersEntity' | 'PointshopEntity';\n published?: string;\n contentType?: string;\n}\nexport interface SearchPointshopResults extends SearchResults<SearchPointshop> {}\n\n// #endregion\n\n// #region Recipes\n\nexport interface LightSearchRecipe {\n id: string; // this is in fact a recipe's EXTERNAL ID\n name: string;\n averageRating: number;\n numberOfVotes: number;\n preamble: string;\n relativeUrl?: string;\n url: string;\n imageUrl: string;\n cookingTime: string;\n climateImpactKg: number | null;\n isFoodBox: boolean;\n}\n\nexport interface SearchRecipe extends LightSearchRecipe {\n cookingInstructions: string;\n ovenTemperature: string;\n categories: string[];\n ingredients: string[];\n yieldUnit: string;\n yieldAlternative: string;\n alternativeTitle: string;\n totalTime: string;\n preparationTime: string;\n tips: string;\n keywords: string;\n servingTips: string;\n yieldValue?: number;\n publicationDate?: Date;\n energyValueKj?: number;\n energyValueKcal?: number;\n proteinPercent?: number;\n proteinGram?: number;\n carbPercent?: number;\n carbGram?: number;\n fatPercent?: number;\n fatGram?: number;\n saturatedFatGram?: number;\n saltGram?: number;\n}\n\n// #endregion\n\nexport interface SearchRecipeCategory {\n name: string;\n preamble: string;\n url: string;\n imageUrl: string;\n}\n","import { appConfig } from '../../../appConfig';\nimport { ensureSlashes, trimTrailingSlash } from '../../common/utils/stringUtils';\n\nconst GLOBAL_SEARCH_PAGE = trimTrailingSlash(\n ensureSlashes(appConfig.coopSettings.globalSearch.url),\n);\n\nexport const globalSearchRoutes = {\n root: GLOBAL_SEARCH_PAGE,\n articles: `${GLOBAL_SEARCH_PAGE}/artiklar`,\n stores: `${GLOBAL_SEARCH_PAGE}/butiker`,\n pointOffers: `${GLOBAL_SEARCH_PAGE}/erbjudanden`,\n};\n","import { appConfig } from '../../../appConfig';\nimport { SearchFromPageType } from '../../base/models/SearchFromPageType';\nimport type { GlobalSearchResults } from '../models/models';\nimport { SearchResultType } from '../models/SearchResultType';\nimport { globalSearchRoutes } from './globalSearchRoutes';\n\nexport const mapSearchFromPageToExpectedResultType = (\n searchFromPage?: SearchFromPageType,\n): SearchResultType | undefined => {\n switch (searchFromPage) {\n case SearchFromPageType.Ecommerce:\n return SearchResultType.Products;\n case SearchFromPageType.Recipes:\n return SearchResultType.Recipes;\n case SearchFromPageType.Member:\n return SearchResultType.Pointshop;\n case SearchFromPageType.Stores:\n return SearchResultType.Stores;\n case SearchFromPageType.StartPage:\n case SearchFromPageType.Finance:\n case SearchFromPageType.Other:\n default:\n return undefined;\n }\n};\n\nconst formattedSearchResultTypeMap = {\n [SearchResultType.Recipes]: 'Recept',\n [SearchResultType.Products]: 'Varor',\n [SearchResultType.Stores]: 'Butiker',\n [SearchResultType.Articles]: 'Artiklar',\n [SearchResultType.Pointshop]: 'Erbjudanden',\n} as const;\n\nexport const getSearchResultCountName = (result: SearchResultCount) => {\n return `${result.itemCount} ${getFormattedSearchResultType(result.resultType).toLowerCase()}`;\n};\n\nexport const getSearchResultTypeAriaLabel = (totalHits: number, resultType: SearchResultType) => {\n return `visa alla ${totalHits} träffar för ${getFormattedSearchResultType(\n resultType,\n ).toLowerCase()}`;\n};\n\nexport const getFormattedSearchResultType = (type?: SearchResultType) => {\n return (type && formattedSearchResultTypeMap[type]) || '';\n};\n\nexport interface SearchResultCount {\n resultType: SearchResultType;\n itemCount: number;\n}\n\n// Used in the context of Global Search Result page\nexport const getFullSearchResultLink = (\n resultType: SearchResultType | undefined,\n searchTerm: string,\n originalSearchTerm?: string,\n) => {\n const originalQuery = `${\n originalSearchTerm && originalSearchTerm !== searchTerm ? `&oq=${originalSearchTerm}` : ''\n }`;\n\n switch (resultType) {\n case SearchResultType.Products:\n return {\n type: 'absolute' as const,\n path: `${appConfig.coopSettings.ecommerce.search.url}?q=${searchTerm}${originalQuery}`,\n };\n\n case SearchResultType.Recipes:\n return {\n type: 'absolute' as const,\n path: `${appConfig.coopSettings.recipe.url}?query=${searchTerm}${originalQuery}`,\n };\n\n case SearchResultType.Stores:\n return {\n type: 'relative' as const,\n path: `${globalSearchRoutes.stores}?query=${searchTerm}${originalQuery}`,\n };\n\n case SearchResultType.Articles:\n return {\n type: 'relative' as const,\n path: `${globalSearchRoutes.articles}?query=${searchTerm}${originalQuery}`,\n };\n\n case SearchResultType.Pointshop:\n return {\n type: 'relative' as const,\n path: `${globalSearchRoutes.pointOffers}?query=${searchTerm}${originalQuery}`,\n };\n default:\n return {\n type: 'relative' as const,\n path: `?query=${searchTerm}${originalQuery}`,\n };\n }\n};\n\n// Used in any context, will always generate absolute links\nexport const getFullSearchResultAbsoluteLink = (\n resultType: SearchResultType | undefined,\n searchTerm: string,\n originalSearchTerm?: string,\n) => {\n const originalQuery = `${\n originalSearchTerm && originalSearchTerm !== searchTerm ? `&oq=${originalSearchTerm}` : ''\n }`;\n\n switch (resultType) {\n case SearchResultType.Products:\n return {\n type: 'absolute' as const,\n path: `${appConfig.coopSettings.ecommerce.search.url}?q=${searchTerm}${originalQuery}`,\n };\n\n case SearchResultType.Recipes:\n return {\n type: 'absolute' as const,\n path: `${appConfig.coopSettings.recipe.url}?query=${searchTerm}${originalQuery}`,\n };\n case SearchResultType.Stores:\n return {\n type: 'absolute' as const,\n path: `${globalSearchRoutes.stores}?query=${searchTerm}${originalQuery}`,\n };\n case SearchResultType.Articles:\n return {\n type: 'absolute' as const,\n path: `${globalSearchRoutes.articles}?query=${searchTerm}${originalQuery}`,\n };\n case SearchResultType.Pointshop:\n return {\n type: 'absolute' as const,\n path: `${globalSearchRoutes.pointOffers}?query=${searchTerm}${originalQuery}`,\n };\n default:\n return {\n type: 'absolute' as const,\n path: `${globalSearchRoutes.root}?query=${searchTerm}${originalQuery}`,\n };\n }\n};\n\nexport const getNonEmptyResultTypes = (result?: GlobalSearchResults) => {\n if (!result) {\n return null;\n }\n const existingResultCounts: SearchResultCount[] = [\n {\n itemCount: result?.productResults?.totalResults,\n resultType: SearchResultType.Products,\n },\n {\n itemCount: result?.recipeResults?.totalResults,\n resultType: SearchResultType.Recipes,\n },\n {\n itemCount: result?.storeResults?.totalResults,\n resultType: SearchResultType.Stores,\n },\n {\n itemCount: result?.articleResults?.totalResults,\n resultType: SearchResultType.Articles,\n },\n {\n itemCount: result?.pointshopResults?.totalResults,\n resultType: SearchResultType.Pointshop,\n },\n ]\n .filter((item) => item.itemCount && item.itemCount > 0)\n .map<SearchResultCount>((item) => ({\n itemCount: item.itemCount!,\n resultType: item.resultType,\n }));\n\n return existingResultCounts;\n};\n\nexport const getFullSearchResultUrlWithOrder = (\n searchTerm: string,\n originalSearchTerm: string | undefined,\n searchResultType?: SearchResultType,\n) => {\n const originalQuery = `${\n originalSearchTerm && originalSearchTerm !== searchTerm ? `&oq=${originalSearchTerm}` : ''\n }`;\n\n switch (searchResultType) {\n case undefined:\n return {\n type: 'absolute' as const,\n path: `${appConfig.coopSettings.globalSearch.url}?query=${searchTerm}${originalQuery}`,\n };\n default:\n return {\n type: 'absolute' as const,\n path: `${\n appConfig.coopSettings.globalSearch.url\n }?query=${searchTerm}${originalQuery}#${getFormattedSearchResultType(\n searchResultType,\n )}`,\n };\n }\n};\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../appConfig';\nimport axiosClientFactory from '../../common/api/clients/clientFactory';\n\nconst getDirectShoppingListAxiosClient = (accessToken: string): AxiosInstance => {\n const directShoppingListAxiosClient = axiosClientFactory.createDirectApiClient({\n baseURL: appConfig.coopSettings.serviceAccess.shoppingListApiUrl,\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n params: {\n 'api-version': appConfig.coopSettings.serviceAccess.shoppingListApiVersion,\n },\n });\n\n return directShoppingListAxiosClient;\n};\n\nexport default getDirectShoppingListAxiosClient;\n","/**\n * Based on https://apitest.coop.se/shoppinglist/swagger/index.html\n */\n\nimport type {\n OfferType,\n ShoppingListCreateRequestBody,\n ShoppingListIngredient,\n ShoppingListItemModelRequestBody,\n ShoppingListModel,\n ShoppingListRenameRequestBody,\n} from '../models';\nimport getDirectShoppingListAxiosClient from './directShoppingListAxiosClient';\n\nconst getLists = async (token: string): Promise<ShoppingListModel[]> => {\n const response = await getDirectShoppingListAxiosClient(token).get('');\n return response.data;\n};\n\nconst getListsWithoutProducts = async (token: string): Promise<ShoppingListModel[]> => {\n const response = await getDirectShoppingListAxiosClient(token).get('?includeProducts=false');\n return response.data;\n};\n\nconst getIngredients = async (token: string, name: string): Promise<ShoppingListIngredient[]> => {\n const response = await getDirectShoppingListAxiosClient(token).get(`/ingredients/${name}`);\n return response.data;\n};\n\nconst getList = async (token: string, id: number): Promise<ShoppingListModel> => {\n const response = await getDirectShoppingListAxiosClient(token).get(`/${id}`);\n return response.data;\n};\nconst createList = async (\n token: string,\n request: ShoppingListCreateRequestBody,\n): Promise<ShoppingListModel> => {\n const response = await getDirectShoppingListAxiosClient(token).post(`/create`, request);\n return response.data;\n};\n\nconst removeList = async (token: string, id: number): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).delete(`/${id}`);\n return response.data;\n};\n\nconst renameList = async (\n token: string,\n id: number,\n request: ShoppingListRenameRequestBody,\n): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).put(`/${id}/rename`, request);\n return response.data;\n};\n\nconst addRecipeToList = async ({\n token,\n listId,\n recipeId,\n ingredients,\n}: {\n token: string;\n listId: number;\n recipeId: number;\n ingredients: ShoppingListItemModelRequestBody[];\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).post(\n `/${listId}/recipe/${recipeId}`,\n ingredients,\n );\n return response.data;\n};\n\nconst removeRecipeFromList = async ({\n token,\n listId,\n recipeId,\n}: {\n token: string;\n listId: number;\n recipeId: number;\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).delete(\n `/${listId}/recipe/${recipeId}`,\n );\n return response.data;\n};\n\nconst addOfferToList = async ({\n token,\n listId,\n offerId,\n offerType,\n}: {\n token: string;\n listId: number;\n offerId: string;\n offerType: OfferType;\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).post(\n `/${listId}/offer/${offerType}:${offerId}`,\n );\n return response.data;\n};\n\nconst removeOfferFromList = async ({\n token,\n listId,\n offerId,\n}: {\n token: string;\n listId: number;\n offerId: string;\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).delete(\n `/${listId}/offer/${offerId}`,\n );\n return response.data;\n};\n\nconst addProductToList = async ({\n token,\n id,\n product,\n}: {\n token: string;\n id: number;\n product: ShoppingListItemModelRequestBody;\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).post(`/${id}/products`, [\n product,\n ]);\n return response.data;\n};\n\nconst deleteProductsFromList = async ({\n token,\n id,\n productId,\n}: {\n token: string;\n id: number;\n productId: number;\n}) => {\n const response = await getDirectShoppingListAxiosClient(token).delete(`/${id}/products`, {\n data: [productId],\n });\n return response.data;\n};\n\nconst updateProductsFromList = async ({\n token,\n id,\n products,\n}: {\n token: string;\n id: number;\n products: ShoppingListItemModelRequestBody[];\n}): Promise<number> => {\n const response = await getDirectShoppingListAxiosClient(token).put(`/${id}/products`, products);\n return response.data;\n};\n\nconst toggleCheckProduct = async ({\n token,\n listId,\n productId,\n}: {\n token: string;\n listId: number;\n productId: number;\n}) => {\n const response = await getDirectShoppingListAxiosClient(token).put(\n `/${listId}/check/${productId}`,\n {},\n );\n return response;\n};\n\nexport default {\n getLists,\n getListsWithoutProducts,\n getIngredients,\n list: {\n get: getList,\n create: createList,\n remove: removeList,\n rename: renameList,\n product: {\n add: addProductToList,\n update: updateProductsFromList,\n delete: deleteProductsFromList,\n toggleCheck: toggleCheckProduct,\n },\n recipe: {\n add: addRecipeToList,\n remove: removeRecipeFromList,\n },\n offer: {\n add: addOfferToList,\n remove: removeOfferFromList,\n },\n },\n};\n","import { Button, ChipIconButton, Icon, OverlayLoader } from '@coop/components';\nimport { CheckmarkIcon, CloseIcon, PaperIcon } from '@coop/icons';\nimport type { FC } from 'react';\n\nimport { Modal } from '../../common/components/atoms/Modal';\nimport type { ShoppingListModel } from '../models';\n\ninterface AddToShoppingListModalProps {\n isOpen: boolean;\n close: () => void;\n lists?: ShoppingListModel[];\n onAddToNewListClick: () => void;\n onAddClick: (item: ShoppingListModel) => void;\n onRemoveClick: (item: ShoppingListModel) => void;\n isLoadingLists: boolean;\n isItemAdded: (item: ShoppingListModel) => boolean;\n notification?: React.ReactNode;\n}\n\nconst AddToShoppingListModal: FC<React.PropsWithChildren<AddToShoppingListModalProps>> = ({\n isOpen,\n close,\n lists,\n isLoadingLists,\n isItemAdded,\n onAddToNewListClick,\n onAddClick,\n onRemoveClick,\n notification,\n}) => {\n return (\n <Modal\n isOpen={isOpen}\n close={close}\n additionalClasses=\"u-size1of1 u-sm-size2of3 u-lg-size1of2 u-xlg-size1of3\"\n >\n <div\n className=\"u-bgWhite u-paddingAmd u-borderRadius8 u-posRelative u-overflowAuto mixinScroll\"\n style={{ minHeight: 500, maxHeight: 500 }}\n >\n {notification}\n <OverlayLoader isLoading={isLoadingLists} />\n <div>\n <h2 className=\"Heading Heading--h4 u-textLarge\">Lägg till i inköpslista</h2>\n <div className=\"FlyIn-close\">\n <ChipIconButton\n theme=\"whiteGreen\"\n onClick={close}\n size={32}\n icon={CloseIcon}\n label=\"Stäng\"\n />\n </div>\n </div>\n\n <ul className=\"u-paddingAz u-listStyleTypeNone\">\n {lists?.map((list) => {\n const isAdded = isItemAdded(list);\n return (\n <li key={list.ID}>\n <button\n type=\"button\"\n className=\"u-size1of1 u-greenHover u-flex u-flexAlignCenter u-borderBottom u-paddingBsm u-marginBsm\"\n onClick={() =>\n isAdded ? onRemoveClick(list) : onAddClick(list)\n }\n >\n <Icon icon={PaperIcon} color=\"green\" width={16} height={16} />\n <span className=\"u-marginLsm\">{list.Name}</span>\n {isAdded && (\n <div className=\"u-marginLauto\">\n <Icon\n icon={CheckmarkIcon}\n color=\"green\"\n width={24}\n height={24}\n />\n </div>\n )}\n </button>\n </li>\n );\n })}\n </ul>\n <div className=\"u-flex u-flexJustifyCenter\">\n <Button size={40} theme=\"primary\" onClick={onAddToNewListClick}>\n + Lägg till i ny lista\n </Button>\n </div>\n </div>\n </Modal>\n );\n};\n\nexport default AddToShoppingListModal;\n","import type { ApiRecipeIngredient } from '../../models/recipe/recipeModel';\nimport { Helpers } from '../../utility/helpers';\nimport type {\n ShoppingListItemModel,\n ShoppingListItemModelRequestBody,\n ShoppingListModel,\n} from './models';\n\nconst singularToPlural = {\n ask: 'askar',\n askar: 'askar',\n bit: 'bitar',\n bitar: 'bitar',\n burk: 'burkar',\n burkar: 'burkar',\n cl: 'cl',\n ml: 'ml',\n cm: 'cm',\n dl: 'dl',\n flaska: 'flaskor',\n flaskor: 'flaskor',\n g: 'g',\n hg: 'hg',\n kg: 'kg',\n knippa: 'knippor',\n knippe: 'knippor',\n knippor: 'knippor',\n krm: 'krm',\n kruka: 'krukor',\n krukor: 'krukor',\n kvist: 'kvistar',\n kvistar: 'kvistar',\n l: 'l',\n liter: 'l',\n msk: 'msk',\n paket: 'pkt',\n pkt: 'pkt',\n portion: 'portioner',\n portioner: 'portioner',\n pÃ¥se: 'pÃ¥sar',\n pÃ¥sar: 'pÃ¥sar',\n skiva: 'skivor',\n st: 'st',\n stk: 'st',\n stycken: 'st',\n tsk: 'tsk',\n} as const;\n\ntype SingularKeys = keyof typeof singularToPlural;\ntype PluralKeys = (typeof singularToPlural)[SingularKeys];\n\nconst pluralToSingular = Object.entries(singularToPlural).map(([key, value]) => ({ value, key }));\n\nconst acceptableUnits: (SingularKeys | PluralKeys)[] = [\n ...(Object.values(singularToPlural) as PluralKeys[]),\n ...(Object.keys(singularToPlural) as SingularKeys[]),\n];\n\nexport const stringQuantityToNumber = (quantity: string | null) => {\n if (quantity === null) {\n return 0;\n }\n return Number(quantity?.replace(',', '.'));\n};\n\nconst getValidUnit = (unit: string, quantity: number) => {\n if (unit?.length > 0 && quantity < 2) {\n const found = pluralToSingular.find(({ key }) => key === unit);\n if (found?.value) {\n return found.value;\n }\n }\n\n if (unit?.length > 0 && quantity > 1) {\n if (unit in singularToPlural) {\n return singularToPlural[unit as SingularKeys];\n }\n }\n\n if (acceptableUnits.includes(unit)) {\n return unit;\n }\n\n return null;\n};\n\nexport const findQuantityFromInputString = (input: string) => {\n const acceptableNumberChars = ['.', ','];\n const foundFirstCharacter = input.split('').find((c) => {\n return !acceptableNumberChars.includes(c) && Number.isNaN(Number(c));\n });\n const preFirstChar =\n foundFirstCharacter && input.split(foundFirstCharacter)[0].replace(',', '.');\n const isNumber = preFirstChar !== '' && !Number.isNaN(Number(preFirstChar));\n\n if (preFirstChar && isNumber) {\n return preFirstChar.replace('.', ',').trim();\n }\n\n return null;\n};\n\nexport const findUnitFromInputString = (input: string) => {\n const foundUnits = acceptableUnits\n .map((unit) => ({ unit, index: input.indexOf(unit) }))\n .filter((unitObj) => unitObj.index !== -1);\n\n if (foundUnits.length === 0) {\n return null;\n }\n\n const closestUnit = foundUnits.reduce((lowest, curr) =>\n lowest.index > curr.index ? curr : lowest,\n ).unit;\n const [preUnit, postPost] = input.split(closestUnit);\n const preUnitIsNumber = !Number.isNaN(Number(preUnit));\n const postUnitExists = postPost?.length > 0 && postPost[0] === ' ';\n\n if (preUnitIsNumber && postUnitExists) {\n return closestUnit;\n }\n\n return null;\n};\n\nexport const findNameFromInputString = (input: string) => {\n const quantity = findQuantityFromInputString(input);\n const unit = findUnitFromInputString(input);\n\n if (unit) {\n return input.split(unit)[1].trim();\n }\n\n if (quantity) {\n const [, ...afterQuantity] = input.replace('.', ',').split(quantity);\n return afterQuantity.join('').trim();\n }\n\n return input;\n};\n\nexport const createProductRequestBody = (\n input: string,\n placement = 'Övrigt',\n): ShoppingListItemModelRequestBody => ({\n id: 0,\n name: findNameFromInputString(input),\n quantity: findQuantityFromInputString(input),\n unit: findUnitFromInputString(input),\n placement,\n pluralName: null,\n checked: false,\n ean: null,\n});\n\nexport const isSimilarIngredient = (\n item: ShoppingListItemModel,\n ingredient: ShoppingListItemModelRequestBody,\n) => {\n const hasSameName = ingredient.name === item.name;\n const hasSameUnit = ingredient.unit === item.unit;\n\n if (hasSameUnit && hasSameName) {\n return true;\n }\n\n return false;\n};\n\nexport const getIngredientsThatShouldNotBeUpdated = (\n list: ShoppingListModel,\n ingredients: ShoppingListItemModelRequestBody[],\n): ShoppingListItemModelRequestBody[] =>\n ingredients.filter(\n (ingredient) => !list.Products.find((item) => isSimilarIngredient(item, ingredient)),\n );\n\n// only one recipeId per ingredient because app does that way and currently no other way in API\nexport const getIngredientsThatShouldBeUpdatedInMergedForm = (\n list: ShoppingListModel,\n ingredients: ShoppingListItemModelRequestBody[],\n) => {\n const similiarIngredients = ingredients.filter((ingredient) =>\n list.Products.find((item) => isSimilarIngredient(item, ingredient)),\n );\n\n const result = list.Products.reduce((acc, item) => {\n const matchedIngredient = acc.find((ingredient) => isSimilarIngredient(item, ingredient));\n\n if (matchedIngredient) {\n const recipeID = item.recipeID ? item.recipeID : matchedIngredient.recipeId;\n const newQuantity =\n stringQuantityToNumber(item.quantity) +\n stringQuantityToNumber(matchedIngredient.quantity);\n const correctQuantity = item.quantity === null ? null : String(newQuantity);\n\n return acc.map((addedItem) => {\n if (addedItem === matchedIngredient) {\n const x: ShoppingListItemModelRequestBody = {\n id: item.id,\n name: item.name,\n checked: item.isChecked,\n ean: item.ean,\n placement: item.placement,\n pluralName: item.pluralName,\n unit: item.unit,\n quantity: correctQuantity,\n recipeId: recipeID,\n availableAsEcological: item.availableAsEcological,\n externalIngredientID: item.externalIngredientID,\n offerId: item.offerID,\n };\n return x;\n }\n return addedItem;\n });\n }\n return acc;\n }, similiarIngredients);\n\n return result;\n};\n\nexport const createIngredientRequestBody = (\n ingredient: ApiRecipeIngredient,\n recipeId: number,\n): ShoppingListItemModelRequestBody => ({\n recipeId,\n externalIngredientID: ingredient.ingredient?.externalId,\n id: 0,\n name: ingredient.name,\n quantity: ingredient.quantity,\n unit: getValidUnit(ingredient.unit, Number(ingredient.quantity)),\n placement: ingredient.ingredient !== null ? ingredient.ingredient.placement : 'Övrigt',\n pluralName: ingredient.ingredient !== null ? ingredient.ingredient.pluralName : null,\n availableAsEcological: ingredient?.ingredient?.hasOrganicAlternative\n ? true\n : Boolean(ingredient?.ingredient?.konsumHasEcological),\n checked: false,\n ean: null,\n});\n\nexport const getDefaultListName = () => {\n const currentDate = new Date();\n const currentWeekDayName = Helpers.getDayName(currentDate, true);\n const currentMonthName = Helpers.getMonthName(currentDate, true);\n const currentDayOfMonthNumber = currentDate.getDate();\n\n return `Lista, ${currentWeekDayName} ${currentDayOfMonthNumber} ${currentMonthName}`;\n};\n\nexport const getSortedListByUpdatedDate = (lists: ShoppingListModel[]) =>\n lists.slice().sort((a, b) => new Date(b.Updated).getTime() - new Date(a.Updated).getTime());\n","export class DefaultProductSection implements ApiProductSection {\n public static NAME = 'Övrigt';\n public static ID = 9999999;\n\n id: number;\n name: string;\n portion?: number;\n portionOptions?: number[];\n constructor() {\n this.id = DefaultProductSection.ID;\n this.name = DefaultProductSection.NAME;\n }\n}\n\nexport interface ProductSectionOrderItems<T> {\n items: T[];\n section: ApiProductSection;\n}\n\nexport type ProductSectionOrderItemsHashMap<T> = Map<string, ProductSectionOrderItems<T>>;\n","/* eslint-disable no-useless-escape */\n/* eslint-disable no-plusplus */\n/* eslint-disable max-classes-per-file */\n\nclass BreakPoint {\n from: number;\n\n to: number;\n\n name: BrowserSize;\n\n constructor(name: BrowserSize, from: number, to: number) {\n this.name = name;\n this.from = from;\n this.to = to;\n }\n\n /**\n * Used for object comparison\n */\n valueOf() {\n return this.from;\n }\n}\nexport enum BrowserSize {\n /** 0px - 374px */\n default = 'default',\n\n /** 375px - 479px */\n xxsm = 'xxsm',\n\n /** 480px - 599px */\n xsm = 'xsm',\n\n /** 600px - 769px */\n sm = 'sm',\n\n /** 770px - 1023px */\n md = 'md',\n\n /** 1024px - 1365px */\n lg = 'lg',\n\n /** 1366px - 1719px */\n xlg = 'xlg',\n\n /** 1720px - 1919px */\n xxlg = 'xxlg',\n\n /** 1920px - 99999px */\n full = 'full',\n}\nexport enum Keyboard {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Delete = 46,\n Backspace = 8,\n UpArrow = 38,\n DownArrow = 40,\n}\n\nexport enum KeyboardCustom {\n Numeric = 900,\n Arrows = 910,\n}\n\nenum PlatformType {\n Desktop = 'desktop',\n Mobile = 'mobile',\n}\n\nexport const BREAKPOINT_MIN_FROM = 0;\nexport const BREAKPOINT_MAX_TO = 99999;\n\nexport class Browser {\n static breakPoints = {\n [BrowserSize.default]: new BreakPoint(BrowserSize.default, BREAKPOINT_MIN_FROM, 374),\n [BrowserSize.xxsm]: new BreakPoint(BrowserSize.xxsm, 375, 479),\n [BrowserSize.xsm]: new BreakPoint(BrowserSize.xsm, 480, 599),\n [BrowserSize.sm]: new BreakPoint(BrowserSize.sm, 600, 767),\n [BrowserSize.md]: new BreakPoint(BrowserSize.md, 768, 1023),\n [BrowserSize.lg]: new BreakPoint(BrowserSize.lg, 1024, 1365),\n [BrowserSize.xlg]: new BreakPoint(BrowserSize.xlg, 1366, 1719),\n [BrowserSize.xxlg]: new BreakPoint(BrowserSize.xxlg, 1720, 1919),\n [BrowserSize.full]: new BreakPoint(BrowserSize.full, 1920, BREAKPOINT_MAX_TO),\n };\n\n static getBreakpoint(name: BrowserSize) {\n const breakPoint = Browser.breakPoints[name];\n return breakPoint;\n }\n\n static isMobile() {\n let check = false;\n ((a: string) => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a,\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4),\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor);\n return check;\n }\n\n static platformType() {\n return Browser.isMobile() ? PlatformType.Mobile : PlatformType.Desktop;\n }\n\n static createNewEvent(eventName: string): Event {\n if (typeof Event === 'function') {\n return new Event(eventName);\n }\n const event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n return event;\n }\n}\n","export namespace Cloudinary {\n const IMAGE_MATCH = /^(.+upload)(.*?)(\\/v?(?:\\d+)?.+)$/;\n // eslint-disable-next-line no-useless-escape\n const DOMAIN_MATCH = /^.*:?[\\/\\/]?(res\\.cloudinary\\.com.*)/;\n\n /**\n * Defaults cloudinary URLs to JPG format and protocoll insensitive\n * @param {String} url Raw cloudinary url\n * @return {String} Formated url\n */\n export const sanitize = (url: string, extension?: string) => {\n if (url && url.match(DOMAIN_MATCH)) {\n return (\n url\n // Remove any transformation\n .replace(IMAGE_MATCH, '$1$3')\n // Default to jpg images\n .replace(/^[^.]+$|\\.(?!(png)$)([^.]+$)/, extension ?? '.jpg')\n // Remove protocol\n .replace(DOMAIN_MATCH, '//$1')\n );\n }\n\n return url;\n };\n\n export const makeImageIdentifierSeoFriendly = (\n imgIdentifier: string,\n altText: string,\n ): string => {\n let id = imgIdentifier;\n if (id) {\n // replace last dot (.) with \"/altText.\". Eg: /v1442921161/52045.jpg -> /v1442921161/52045/altText.jpg\n id = imgIdentifier.replace(/.([^.]*)$/, `/${encodeURIComponent(altText)}.$1`);\n }\n return id;\n };\n\n export const makeImagePathSeoFriendly = (imgPath: string): string => {\n let path = imgPath;\n if (!path) {\n return path;\n }\n path = path.replace('/image/upload', '/images');\n path = path.replace('/video/upload', '/videos');\n path = path.replace('/raw/upload', '/files');\n return path;\n };\n\n export const imageIdentifier = (url: string) => {\n const match = url.match(IMAGE_MATCH);\n\n return (match && match[3]?.replace(' ', '%20').replace(/\\/$/, '')) || undefined;\n };\n\n export const imagePath = (url: string) => {\n const match = url.match(IMAGE_MATCH);\n\n return (match && `${match[1].replace(/\\/$/, '')}/`) || undefined;\n };\n}\n","export const IDS_REDIRECTREASON_QUERY = 'redirectReason';\nexport const IDS_REDIRECTREASON_QUERYVALUE_SIGNUP = 'signup';\nexport const IDS_RETURNURL_QUERY = 'returnUrl';\n","export class Cookies {\n static create(name: string, value: string, days?: number, secure?: boolean) {\n let date: Date;\n let expires: string;\n\n if (days) {\n date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = `; expires=${date.toUTCString()}`;\n } else {\n expires = '';\n }\n document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(\n value,\n )}${expires}; path=/${secure ? '; secure' : ''}`;\n }\n\n static read(name: string) {\n let c: string;\n const nameEq = `${name}=`;\n const ca = document.cookie.split(';');\n\n for (let i = 0; i < ca.length; i += 1) {\n c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEq) === 0) {\n return decodeURIComponent(c.substring(nameEq.length, c.length));\n }\n }\n return undefined;\n }\n\n static eraseCookie(name: string) {\n Cookies.create(name, '', -1);\n }\n}\n","import type { SwiperOptions } from 'swiper/types';\n\nimport { isNumeric } from '../microApps/common/utils/numberUtils';\nimport { BREAKPOINT_MAX_TO, BREAKPOINT_MIN_FROM, Browser, BrowserSize } from './browser';\n\nexport type CoopLayoutSize = 'full' | 'default';\n\nexport type CoopContentPageSize = CoopLayoutSize | 'narrow';\n\nexport type SwiperBreakpoints =\n | {\n [BREAKPOINT_MIN_FROM]: SwiperOptions; // mandatory \"from 0px\" breakpoint\n [index: number]: SwiperOptions;\n }\n | undefined;\n\nexport class CoopSwiperBreakpoints {\n public static readonly AREA_BRAND_CATEGORY = 'BrandCategory';\n\n public static readonly AREA_LARGE_TEASER_LIST = 'LargeTeasersList';\n\n public static readonly AREA_LARGE_TEASER_GRID = 'LargeTeasersGrid';\n\n public static readonly AREA_BRAND_CATEGORY_LISTING = 'BrandCategoryListing';\n\n public static readonly AREA_HERO_PRODUCT = 'HeroProduct';\n\n public static readonly AREA_RECIPE = 'Recipe';\n\n public static readonly AREA_NEW_RECIPE_LIST = 'NewRecipeList';\n\n public static readonly AREA_MY_COOP = 'MyCoop';\n\n /** This is used in React Swiper LISTS of OLD design product teasers */\n public static readonly AREA_PRODUCT_LIST = 'ProductList';\n\n /** This is used in React Swiper LISTS of NEW design product teasers */\n public static readonly AREA_NEW_PRODUCT_LIST = 'NewProductList';\n\n /** This is used in React Swiper LISTS of NEW design product teasers WITH BANNER */\n public static readonly AREA_NEW_PRODUCT_LIST_WITH_BANNER = 'NewProductListWithBanner';\n\n /** This is used in GRIDS of OLD design product teasers, that are using ItemGrid component */\n public static readonly AREA_PRODUCT_GRID = 'ProductGrid';\n\n /** This is used in GRIDS of NEW design product teasers, that are using ItemGrid component */\n public static readonly AREA_NEW_PRODUCT_GRID = 'NewProductGrid';\n\n public static readonly AREA_GROUPED_OFFERS_GRID = 'GroupedOffersGrid';\n\n /** This is used in GRIDS of NEW React recipe lisiting block, when not using swiper, less than 6, centered and useNarrow */\n public static readonly AREA_RECIPE_LISTING_GRID = 'RecipeListingGrid';\n\n /** This is used in React Swiper Recipe Lisiting Block when using swiper and useNarrow */\n public static readonly AREA_RECIPE_LISTING_NARROW = 'RecipeListingSwiperNarrow';\n\n public static readonly AREA_DR_OFFERS_LIST = 'DrOffersList';\n\n /** This is used in weekly menu recipes blockin swiper list */\n public static readonly AREA_WEEKLY_MENU_LIST = 'WeeklyMenuList';\n\n public static readonly AREA_PERSONAL_OFFERS_LIST = 'PersonalOffersList';\n\n public static readonly AREA_TV_OFFERS_LIST = 'TVOffersList';\n\n public static readonly AREA_FOOTER_GRID = 'FooterGrid';\n\n static getBreakpointsFor(\n area: keyof SwiperBreakpointsCollection,\n hasSideMenu: boolean,\n pageContentSize: CoopContentPageSize,\n layoutSize: CoopLayoutSize,\n ): SwiperBreakpoints {\n const isViewportInconsistent = hasSideMenu || pageContentSize !== layoutSize; // this mean that page changes at SIDEBAR_HIDE_BREAKPOINT and .e. sidebar is hidden, so the breakpoints must also change\n\n const pageContentSizeOrFallback = pageContentSize || layoutSize;\n\n switch (pageContentSizeOrFallback) {\n case 'full':\n return FULL_WITH_SIDEMENU_BREAKPOINTS[area];\n case 'narrow':\n return isViewportInconsistent\n ? NARROW_WITH_SIDEMENU_BREAKPOINTS[area]\n : NARROW_WITHOUT_SIDEMENU_BREAKPOINTS[area];\n case 'default':\n default:\n return isViewportInconsistent\n ? DEFAULT_WITH_SIDEMENU_BREAKPOINTS[area]\n : DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS[area];\n }\n }\n}\n\nexport const getSwiperBreakpoint = (browserSize: BrowserSize) => {\n return Browser.getBreakpoint(browserSize).from; // we always operate on the \"from\" values what describing Swiper breakponts, never use \"to\"\n};\n\n// The breakpoint where sidebar navigation gets hidden\nconst SIDEBAR_HIDE_BREAKPOINT = getSwiperBreakpoint(BrowserSize.lg);\n\nexport interface SwiperBreakpointsCollection {\n BrandCategory: SwiperBreakpoints;\n BrandCategoryListing: SwiperBreakpoints;\n LargeTeasersList: SwiperBreakpoints;\n LargeTeasersGrid: SwiperBreakpoints;\n HeroProduct: SwiperBreakpoints;\n Recipe: SwiperBreakpoints;\n MyCoop: SwiperBreakpoints;\n ProductList: SwiperBreakpoints;\n NewProductList: SwiperBreakpoints;\n NewProductListWithBanner: SwiperBreakpoints;\n ProductGrid: SwiperBreakpoints;\n NewProductGrid: SwiperBreakpoints;\n GroupedOffersGrid: SwiperBreakpoints;\n NewRecipeList: SwiperBreakpoints;\n RecipeListingGrid: SwiperBreakpoints;\n RecipeListingSwiperNarrow: SwiperBreakpoints;\n DrOffersList: SwiperBreakpoints;\n WeeklyMenuList: SwiperBreakpoints;\n PersonalOffersList: SwiperBreakpoints;\n TVOffersList: SwiperBreakpoints;\n FooterGrid: SwiperBreakpoints;\n}\n\n// I.e. Handla, Hallbarhet, Medlem, Bank\nconst FULL_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n BrandCategory: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n LargeTeasersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n LargeTeasersGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n BrandCategoryListing: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n },\n HeroProduct: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n Recipe: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4.25, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6.25, slidesPerGroup: 6 },\n },\n MyCoop: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 8, slidesPerGroup: 8 },\n },\n // mostly same as ProductList\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 8, slidesPerGroup: 8 },\n },\n GroupedOffersGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xxsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductListWithBanner: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 2, slidesPerGroup: 2 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 1, slidesPerGroup: 1 },\n 1200: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n RecipeListingGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n RecipeListingSwiperNarrow: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 2.25 },\n },\n DrOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n WeeklyMenuList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n TVOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3 },\n 900: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4 },\n },\n FooterGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n};\n\n// I.e. My Coop pages\nconst DEFAULT_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4 },\n },\n};\n\n// I.e. Checkout, Coop start page, Butiker, Global Search results\nconst DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // mostly same as ProductList\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductListWithBanner: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n // mostly same as NewProductList\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n Recipe: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4.25, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 5.25, slidesPerGroup: 5 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6.25, slidesPerGroup: 6 },\n },\n RecipeListingGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n WeeklyMenuList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3 },\n 900: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4 },\n 1200: { slidesPerView: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n};\n\n// I.e Recipe details page\nconst NARROW_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n};\n\n// I.e. Article page\nconst NARROW_WITHOUT_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...NARROW_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n },\n};\n\ninterface BreakpointRange {\n from: number;\n to: number;\n cellsInRow: number;\n}\n\nexport const getGridBreakpointRanges = (breakpointArray: SwiperBreakpoints): BreakpointRange[] => {\n const breakpoints =\n breakpointArray &&\n Object.entries(breakpointArray).map((x) => {\n const [key, value] = x;\n return {\n from: parseInt(key, 10),\n perView: isNumeric(value.slidesPerView) ? value.slidesPerView : 0,\n };\n });\n\n if (!breakpoints?.length)\n throw new Error('Breakpoint array must contain at least one breakpoint');\n\n const ranges: BreakpointRange[] = [];\n\n for (let i = 0; i < breakpoints.length - 1; i += 1) {\n ranges.push({\n from: breakpoints[i].from,\n to: breakpoints[i + 1].from - 1,\n cellsInRow: breakpoints[i].perView,\n });\n }\n\n // create last breakpoint from X to 99999\n ranges.push({\n from: breakpoints[breakpoints.length - 1].from,\n to: BREAKPOINT_MAX_TO,\n cellsInRow: breakpoints[breakpoints.length - 1].perView,\n });\n\n return ranges;\n};\n","import { BREAKPOINT_MIN_FROM, BrowserSize } from './browser';\nimport type { SwiperBreakpoints } from './coopSwiperBreakpoints';\nimport { getSwiperBreakpoint } from './coopSwiperBreakpoints';\n\nexport class CoopSwiperBreakpointsUnique {\n public static readonly AREA_MINICART = 'MiniCart';\n\n public static readonly AREA_CHECKOUT_STEP_2 = 'CheckoutStep2';\n\n public static readonly AREA_RECIPE_MODAL = 'RecipeModal';\n\n static getUniqueBreakpointsFor(uniqueArea: keyof SwiperBreakpointsCollectionUnique) {\n return UNIQUE_AREA_BREAKPOINTS[uniqueArea];\n }\n}\n\ninterface SwiperBreakpointsCollectionUnique {\n MiniCart: {\n ProductList: SwiperBreakpoints;\n };\n CheckoutStep2: {\n ProductList: SwiperBreakpoints;\n };\n RecipeModal: {\n ProductList: SwiperBreakpoints;\n };\n}\n\nconst UNIQUE_AREA_BREAKPOINTS: SwiperBreakpointsCollectionUnique = {\n MiniCart: {\n ProductList: {\n [BREAKPOINT_MIN_FROM]: {\n slidesPerView: 2.1,\n slidesPerGroup: 2,\n },\n [getSwiperBreakpoint(BrowserSize.sm)]: {\n slidesPerView: 2.5,\n slidesPerGroup: 2,\n },\n },\n },\n CheckoutStep2: {\n ProductList: {\n [BREAKPOINT_MIN_FROM]: {\n slidesPerView: 2.1,\n slidesPerGroup: 2,\n },\n [getSwiperBreakpoint(BrowserSize.sm)]: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n },\n [getSwiperBreakpoint(BrowserSize.xlg)]: {\n slidesPerView: 4,\n slidesPerGroup: 4,\n },\n },\n },\n RecipeModal: {\n ProductList: {\n [BREAKPOINT_MIN_FROM]: {\n slidesPerView: 2.1,\n slidesPerGroup: 2,\n },\n [getSwiperBreakpoint(BrowserSize.xsm)]: {\n slidesPerView: 2.5,\n slidesPerGroup: 2.5,\n },\n [getSwiperBreakpoint(BrowserSize.sm)]: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n },\n [getSwiperBreakpoint(BrowserSize.md)]: {\n slidesPerView: 4,\n slidesPerGroup: 4,\n },\n },\n },\n};\n","import { appConfig } from '../appConfig';\nimport trackingFlow from '../microApps/common/flow/trackingFlow';\nimport persistance from '../microApps/common/persistance/persistance';\nimport {\n GdprCookieVendors,\n hasAcceptedGdprCookieVendor,\n triggerOnAllConsentAccepted,\n triggerOnAllConsentRejected,\n triggerOnConsentGatheredGdpr,\n triggerOnSingleConsentChange,\n} from './gdpr';\n\nconst consentRejected = () => {\n // erase cookie that we add ourselves, rest is removed by DY scripts\n persistance.dynamicYield.removeCookies();\n};\n\nconst updateDYConsent = () => {\n if (\n hasAcceptedGdprCookieVendor(GdprCookieVendors.DynamicYield) &&\n hasAcceptedGdprCookieVendor(GdprCookieVendors.GoogleAnalytics)\n ) {\n trackSpaDY(window.DY.recommendationContext, window.location.href);\n } else {\n consentRejected();\n }\n};\n\nexport const trackProfileDY = () => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n trackingFlow.profile(appConfig.coopUserSettings.isCompany);\n }\n};\n\nexport const trackIdentifyDY = () => {\n if (appConfig.coopUserSettings.isAuthenticated) {\n trackingFlow.identify(appConfig.coopUserSettings.shoppingUserId, 'id'); // id is also used as cuidType in the mobile app, thats why its used\n }\n};\n\nexport const trackSpaDY = (data: DynamicYieldPageContext, url: string) => {\n trackingFlow.trackPageView(data, url);\n};\n\nexport const updateDyStaticContext = (context: DynamicYieldPageContext) => {\n DY.recommendationContext = context;\n};\n\nexport const createCartPageContext = (url: string, cartProductIds: string[]) => ({\n location: url,\n type: 'CART',\n data: [...cartProductIds],\n});\n\nexport const createOtherPageContext = (url: string) => ({\n location: url,\n type: 'OTHER',\n data: [],\n});\n\nexport const createHomePageContext = (url: string) => ({\n location: url,\n type: 'HOMEPAGE',\n data: [],\n});\n\nexport const createProductPageContext = (url: string, productId: string) => ({\n location: url,\n type: 'PRODUCT',\n data: [productId],\n});\n\nexport const createCategoryPageContext = (url: string, categoryNamesList: string[]) => ({\n location: url,\n type: 'CATEGORY',\n data: [...categoryNamesList],\n});\n\nconst initializeDynamicYield = () => {\n trackIdentifyDY();\n triggerOnConsentGatheredGdpr(() => updateDYConsent());\n triggerOnAllConsentAccepted(() => {\n trackSpaDY(window.DY.recommendationContext, window.location.href);\n });\n triggerOnAllConsentRejected(consentRejected);\n triggerOnSingleConsentChange(() => updateDYConsent());\n trackProfileDY();\n};\n\nexport default initializeDynamicYield;\n","/* eslint-disable no-console */\nconst enum Environment {\n Production = 'production',\n QA = 'qa',\n Development = 'development',\n Storybook = 'storybook',\n}\n\nexport const isProductionEnvironment = process.env.APP_ENV === Environment.Production;\n\nexport const isTestingEnvironment = process.env.APP_ENV === Environment.QA;\n\nexport const isDevelopmentEnvironment = process.env.APP_ENV === Environment.Development;\n\nexport const isStorybookEnvironment = process.env.APP_ENV === Environment.Storybook;\n\nif (isTestingEnvironment) {\n console.log('Using testing environment');\n}\n\nif (isDevelopmentEnvironment) {\n console.log('Using development environment');\n}\n","/* eslint-disable no-underscore-dangle */\n// To understand the jargon: https://help.consentmanager.net/books/cmp/page/understanding-account-structure-vendors-purposes-and-cookies\n\nimport { Cookies } from './cookies';\n\nexport enum GdprCookiePurposes {\n Functional = 'c51', // Strictly neccessary, i.e. always activated\n Marketing = 'c52',\n Preferences = 'c53',\n Measuring = 'c54',\n Other = 'c55',\n}\n\nconst CookieVendorsProduction = {\n Amazon: 's40',\n Cloudflare: 'c65',\n ConsentManager: 's23',\n COOP: 'c9233', // Stricly neccessary , i.e. always activated\n GoogleAds: 's1',\n GoogleAnalytics: 's26',\n GoogleGeneral: 's135',\n GoogleTagManager: 's905',\n HotJar: 's46',\n IABEurope_CMPDomain: 's24',\n MicrosoftAzure: 'c9245',\n Loop54: 'c11229',\n DynamicYield: 'c13463',\n} as const;\n\nconst CookieVendorsTest = {\n MicrosoftAzure: 'c9968',\n Loop54: 'c11222',\n DynamicYield: 'c13452',\n GoogleAnalytics: 's26',\n} as const;\n\ntype CookieVendorValues =\n | (typeof CookieVendorsProduction)[keyof typeof CookieVendorsProduction]\n | (typeof CookieVendorsTest)[keyof typeof CookieVendorsTest];\n\nexport const GdprCookieVendors = {\n MicrosoftAzure: window.isTestingOrDevEnv\n ? CookieVendorsTest.MicrosoftAzure\n : CookieVendorsProduction.MicrosoftAzure,\n\n Loop54: window.isTestingOrDevEnv ? CookieVendorsTest.Loop54 : CookieVendorsProduction.Loop54,\n\n DynamicYield: window.isTestingOrDevEnv\n ? CookieVendorsTest.DynamicYield\n : CookieVendorsProduction.DynamicYield,\n\n GoogleAnalytics: window.isTestingOrDevEnv\n ? CookieVendorsTest.GoogleAnalytics\n : CookieVendorsProduction.GoogleAnalytics,\n} as const;\n\nexport const gdprAddEventListener = (event: CMPEvent, callback: () => void) => {\n window.__cmp?.('addEventListener', [event, callback, false], null);\n};\n\nexport const gdprRemoveEventListener = (event: CMPEvent, callback: () => void) => {\n window.__cmp?.('removeEventListener', [event, callback, false], null);\n};\n\n// seems like this one is firing on consent gather (load) and when there is a change to consent\nexport const triggerOnConsentGatheredGdpr = (callback: () => void) => {\n window.__cmp?.('addEventListener', ['consent', callback, false], null);\n};\n\nexport const hasAcceptedGdprPurpose = (gdprPurpose: GdprCookiePurposes): boolean => {\n if (window.__cmp?.('getCMPData')?.purposeLI[gdprPurpose]) {\n return true;\n }\n\n return false;\n};\n\nexport const hasAcceptedGdprCookieVendor = (gdprCookieVendor: CookieVendorValues): boolean => {\n if (window.__cmp?.('getCMPData')?.vendorConsents?.[gdprCookieVendor]) {\n return true;\n }\n\n return false;\n};\n\nexport const syncConsentManagerVendors = () => {\n const vendorSync = () => {\n const ccmAcceptedVendors = getAcceptedVendors();\n const importantVendors = <string[]>[\n GdprCookieVendors.Loop54,\n GdprCookieVendors.DynamicYield,\n GdprCookieVendors.GoogleAnalytics,\n ];\n\n const vendorsForCookie = ccmAcceptedVendors.filter((x) => importantVendors.includes(x));\n\n // sync vendor consents, we need it synchronously somewhere else\n Cookies.create('coop-ccm-av', vendorsForCookie.join('|'), 365);\n };\n\n triggerOnConsentGatheredGdpr(vendorSync);\n};\n\nexport const hasAcceptedGdprCookieVendorsSync = (vendors: CookieVendorValues[]) => {\n const consentCookie = Cookies.read('coop-ccm-av');\n if (!consentCookie) return false;\n\n if (!vendors) return false;\n\n const stringedVendors = vendors.map((vendor) => vendor.toString());\n const cookieVendors = consentCookie.split('|');\n\n const hasAccepted = stringedVendors.every((vendor) => cookieVendors.includes(vendor));\n return hasAccepted;\n};\n\nexport const triggerOnAllConsentAccepted = (callback: Function) => {\n window.__cmp?.('addEventListener', ['consentapproved', callback, false], null);\n};\n\nexport const triggerOnAllConsentRejected = (callback: Function) => {\n window.__cmp?.('addEventListener', ['consentrejected', callback, false], null);\n};\n\nexport const triggerOnSingleConsentChange = (callback: Function) => {\n window.__cmp?.('addEventListener', ['consentcustom', callback, false], null);\n};\n\nexport const getAcceptedVendors = () => {\n const cmpData = window.__cmp?.('getCMPData');\n if (cmpData) {\n return Object.keys(cmpData.vendorConsents);\n }\n\n return [];\n};\n\nexport const triggerWhenGDPRConsentExists = ({\n cookieVendor,\n onConsentExists,\n onActiveDecline,\n}: {\n onConsentExists: () => void;\n onActiveDecline: () => void;\n cookieVendor: CookieVendorValues;\n}) => {\n const fallback = () =>\n triggerOnConsentGatheredGdpr(() => {\n if (hasAcceptedGdprCookieVendor(cookieVendor)) {\n onConsentExists();\n } else {\n onActiveDecline();\n }\n });\n\n window.addEventListener('load', () => {\n if (typeof window.__cmp === 'function') {\n if (hasAcceptedGdprCookieVendor(cookieVendor)) {\n onConsentExists();\n } else {\n fallback();\n }\n }\n });\n};\n","import type { PriceData } from '../microApps/common/models/priceData/priceData';\nimport { PriceType } from '../microApps/common/models/priceData/priceData';\nimport { isNumber, isNumeric } from '../microApps/common/utils/numberUtils';\n\nexport namespace Helpers {\n /**\n * One day in javascript time\n */\n export const ONE_DAY = 86400000; // 24 hours * 60 minutes * 60 seconds * 1000 millisconds = 86400000\n\n const emailReg = /^[\\w.\\-+_]+@([.\\-a-z0-9]+\\.[a-z]{2,10})$/;\n export const validateEmail = (email: string) => {\n if (emailReg.test(email)) {\n return true;\n }\n return false;\n };\n\n export const getParameterByName = (name: string, input?: string) => {\n let url = input;\n if (!url) url = window.location.href;\n return decodeURIComponent(\n url.replace(\n new RegExp(\n `^(?:.*[&\\\\?]${encodeURIComponent(name).replace(\n // eslint-disable-next-line no-useless-escape\n /[\\.\\+\\*]/g,\n '\\\\$&',\n )}(?:\\\\=([^&]*))?)?.*$`,\n 'i',\n ),\n '$1',\n ),\n );\n };\n\n /**\n * Returns the name of a month (gmt + 1)\n * @param date either the date or a month number (0 based).\n * @param short if you want 'jan' insted of 'januari'.\n */\n export const getMonthName = (date: Date | number, short?: boolean) => {\n const months = [\n 'januari',\n 'februari',\n 'mars',\n 'april',\n 'maj',\n 'juni',\n 'juli',\n 'augusti',\n 'september',\n 'oktober',\n 'november',\n 'december',\n ];\n const monthsShort = [\n 'Jan',\n 'Feb',\n 'Mars',\n 'April',\n 'Maj',\n 'Juni',\n 'Juli',\n 'Aug',\n 'Sep',\n 'Okt',\n 'Nov',\n 'Dec',\n ];\n\n let monthIndex: number;\n if (isNumeric(date) && date >= 0 && date <= 11) {\n monthIndex = <number>date;\n } else if (date instanceof Date) {\n const localDate = new Date(\n date.valueOf() + (date.getTimezoneOffset() + 120) * 60 * 1000,\n );\n monthIndex = localDate.getMonth();\n } else {\n return '';\n }\n\n return short ? monthsShort[monthIndex] : months[monthIndex];\n };\n\n /**\n * Returns the name of a day\n * @param date either the date or a day number (0 based).\n * @param short if you want 'MÃ¥n' insted of 'MÃ¥ndag'.\n */\n export const getDayName = (date: Date | number, short?: boolean) => {\n const weekdays = ['söndag', 'mÃ¥ndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'];\n const weekdaysShort = ['sön', 'mÃ¥n', 'tis', 'ons', 'tor', 'fre', 'lör'];\n\n let dayIndex: number;\n if (isNumeric(date) && date >= 0 && date <= 6) {\n dayIndex = <number>date;\n } else if (date instanceof Date) {\n // time zone adjustment do not touch\n const localDate = new Date(\n date.valueOf() + (date.getTimezoneOffset() + 120) * 60 * 1000,\n );\n dayIndex = localDate.getDay();\n } else {\n return '';\n }\n\n return short ? weekdaysShort[dayIndex] : weekdays[dayIndex];\n };\n\n export const dateIsToday = (date: Date) => {\n const today = new Date();\n return (\n today.getDate() === date.getDate() &&\n today.getMonth() === date.getMonth() &&\n today.getFullYear() === date.getFullYear()\n );\n };\n\n export const dateIsTomorrow = (date: Date) => {\n const tommorow = new Date();\n tommorow.setDate(tommorow.getDate() + 1);\n return datesIsSameDay(date, tommorow);\n };\n\n export const dateIsYesterday = (date: Date) => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return datesIsSameDay(date, yesterday);\n };\n\n export const datesIsSameDay = (date1: Date, date2: Date) => {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n };\n\n /**\n formats a date by date, month format\n */\n export const formatDateDdMmm = (date: Date, shortMonth?: boolean) => {\n if (!date) return '';\n const localDate = new Date(date.valueOf() + (date.getTimezoneOffset() + 120) * 60 * 1000);\n\n const day = localDate.getDate();\n\n return `${day} ${getMonthName(localDate, shortMonth)}`;\n };\n\n /**\n * formats date to yyyy-mm-dd, working with gmt + 1\n * @param date\n */\n export const formatDateYyyyMmDd = (date: Date) => {\n if (!date) return '';\n const localDate = new Date(date.valueOf() + (date.getTimezoneOffset() + 120) * 60 * 1000);\n const day = localDate.getDate();\n const month = localDate.getMonth() + 1;\n const year = localDate.getFullYear();\n let result = `${year}-`;\n if (month < 10) result += '0';\n result += `${month}-`;\n if (day < 10) result += '0';\n result += day;\n return result;\n };\n\n /**\n * Simply takes the date part out of the Date and returns it as a string\n * @param date 2021-05-01T01:00:00+02:00\n * @returns 2021-05-01\n */\n export const formatDateYyyyMmDdIgnoringTimeZone = (date: Date) => {\n const month = `${date.getMonth() + 1}`;\n const day = `${date.getDate()}`;\n const year = date.getFullYear();\n\n const formattedMonth = month.length < 2 ? `0${month}` : month;\n const formattedDay = day.length < 2 ? `0${day}` : day;\n\n return `${year}-${formattedMonth}-${formattedDay}`;\n };\n\n /**\n * gets the current day, setting hours and seconds to 00\n * @param date\n */\n export const getToday = () => {\n const date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n };\n\n /**\n * Gets only date from datetime, basically sets hours, seconds etc to 0.\n * @param date\n */\n export const getDatePart = (date: Date | number) => {\n const newDate = new Date(date);\n newDate.setHours(0, 0, 0, 0);\n return newDate;\n };\n\n export const containsOnlyMonthInDate = (date: Date, dates: Date[]) => {\n const currentMonth = date.getMonth();\n return dates.findIndex((d) => d.getMonth() !== currentMonth) === -1;\n };\n\n export const getDaysForMonthInDate = (date: Date) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n return new Date(year, month + 1, 0).getDate();\n };\n\n export const getDaysLeftForMonthInDate = (date: Date) => {\n const daysForMonth = getDaysForMonthInDate(date);\n return daysForMonth - date.getDate();\n };\n\n /**\n * Will return an array of dates for the months between and including startDate and endDate,\n * with the date always being the first date of the month\n * @param startDate 2021-03-05\n * @param endDate 2021-05-07\n * @returns [2021-03-01, 2021-04-01, 2021-05-01]\n */\n export const getMonthsInInterval = (startDate: Date, endDate: Date): Date[] => {\n const startYear = startDate.getFullYear();\n const startMonth = startDate.getMonth();\n const endYear = endDate.getFullYear();\n const endMonth = endDate.getMonth();\n\n const yearDiff = endYear - startYear;\n const monthDiff = endMonth - startMonth + 1;\n const months = yearDiff * 12 + monthDiff;\n\n const monthsNumbers = Array.from({ length: months }, (_, i) => i);\n\n return monthsNumbers.map(\n (monthNumber) =>\n new Date(Date.UTC(startDate.getFullYear(), startMonth + monthNumber, 1)),\n );\n };\n\n /**\n * E.g '12:00 idag', '12:00 imorgon', '12:00 den 16 februari'\n * if 'reversed': i.e. 'idag 12:00', 'imorgon 12:00', '12:00 den 16 februari'\n * @param dateToFormat\n */\n export const formatDateToHHDate = (date: Date | number, reverse: boolean = false) => {\n const dateToFormat = date instanceof Date ? date : new Date(date);\n const TODAY_TEXT: string = 'idag';\n const TOMORROW_TEXT: string = 'imorgon';\n\n const formattedTime = Helpers.formatHHmm(dateToFormat);\n\n const today = new Date();\n if (dateToFormat.getDate() === today.getDate()) {\n return reverse ? `${TODAY_TEXT} ${formattedTime}` : `${formattedTime} ${TODAY_TEXT}`;\n }\n\n if (dateToFormat.getDate() === today.getDate() + 1) {\n return reverse\n ? `${TOMORROW_TEXT} ${formattedTime}`\n : `${formattedTime} ${TOMORROW_TEXT}`;\n }\n\n return `${formattedTime} den ${dateToFormat.getDate()} ${Helpers.getMonthName(\n dateToFormat.getMonth(),\n )}`;\n };\n\n export const formatHHmm = (date: Date) => {\n const formatTimeTwoDigts = (n: number) => {\n return n < 10 ? `0${n}` : n;\n };\n\n const hours = formatTimeTwoDigts(date.getHours());\n const minutes = formatTimeTwoDigts(date.getMinutes());\n return `${hours}.${minutes}`;\n };\n\n /**\n * Safely converts values to numbers and adds them together. Falsy values defaults to 0.\n * @param ...args values to add together.\n * @return sum of ...args\n */\n export const safeStringAddition = (\n ...args: (string | number | null | undefined | object)[]\n ): number =>\n args\n .filter(Boolean)\n .filter((item) => typeof item !== 'object')\n .map((item) => parseFloat(item.toString()))\n .map((x) => x || 0)\n .reduce((prev, acc) => prev + acc);\n\n /**\n * @param x, number to format\n * @param separator, default separator is space\n */\n\n export const formatNumber = (\n numberString: string,\n separator?: string,\n decimalSeparator?: string,\n ) => {\n let sep = separator;\n let decSep = decimalSeparator;\n\n if (!numberString) return numberString;\n if (!sep) sep = ' ';\n if (!decSep) decSep = ',';\n\n let result = numberString.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, sep);\n if (result.indexOf('-') === 0) result = `- ${result.slice(1)}`;\n\n return result.replace('.', decSep);\n };\n\n const PRICE_DECIMAL_SEPARATOR = ',';\n\n type DecimalFormatMode = 'doubleZero' | 'dash' | 'hideRest';\n\n /**\n * If showDoubleZero == \"doubleZero\": Formats a number i.e. from 1.54 to 1,54, and 1.00 to 1,00\n * If showDoubleZero == \"dash\": Formats a number i.e. from 1.54 to 1,54, and 1.00 to 1:-\n * If showDoubleZero == \"hideRest\": Formats a number i.e. from 1.54 to 1,54, and 1.00 to 1 - so. If there is a rest, it will be shown anyway.\n *\n * Dash should only be used in promotion splashes\n */\n export const toEcommercePrice = (\n price: number | undefined,\n noDecimalMode: DecimalFormatMode = 'doubleZero',\n ) => {\n let decimalMode = noDecimalMode;\n let hideDecimals = false;\n if (price == null) {\n return '';\n }\n\n let result = truncateDecimalsWithSeparator(price, 2, ' ', PRICE_DECIMAL_SEPARATOR);\n if (price >= 1000) {\n result = insertEveryNCharacters(result, 3, ' ');\n decimalMode = 'hideRest'; // intended by designers: always hide decimals if price is counted in thousands\n }\n\n const hasNoRest = result.indexOf(`${PRICE_DECIMAL_SEPARATOR}00`) > -1;\n\n if (hasNoRest) {\n if (decimalMode === 'dash') {\n result = result.replace(`${PRICE_DECIMAL_SEPARATOR}00`, ':-');\n }\n\n if (decimalMode === 'doubleZero') {\n // already has double zero, do nothing\n }\n\n if (decimalMode === 'hideRest') {\n hideDecimals = true;\n }\n }\n\n // only hide if the is no rest, otherwise show the rest as normal\n if (hasNoRest && hideDecimals) {\n result = result.slice(0, result.indexOf(PRICE_DECIMAL_SEPARATOR));\n }\n\n return result;\n };\n\n /**\n * Formats a number i.e. from 1.54 to 1:54 kr, and 1.00 to 1:00 kr.\n */\n export const toEcommercePriceWithCurrency = (\n price: number | null | undefined,\n noDecimalMode: DecimalFormatMode = 'doubleZero',\n ) => {\n if (price == null) {\n return '';\n }\n\n let result = Helpers.toEcommercePrice(price, noDecimalMode);\n\n result += ' kr';\n return result;\n };\n\n export const truncateWithoutEmptyDecimals = (num: number | string) =>\n truncateDecimalsWithSeparator(num, 2).replace(',00', '');\n\n export const isMmkid = (mmkid: string) => {\n return /^(\\d{7})$/.test(trimAndRemoveWhiteSpaces(mmkid));\n };\n\n export const trimAndRemoveWhiteSpaces = (s: string) => {\n return s.trim().replace(/\\s/g, '');\n };\n\n export const isNullOrWhiteSpace = (s: string) => {\n return !s || s.length === 0 || !s.trim();\n };\n\n // TODO this is NIGHTMARE, this needs to be refactored and write tests to it, it's unreadable\n export const truncateDecimalsWithSeparator = (\n num: number | string,\n digits: number,\n separator?: string,\n decimalSeparator?: string,\n ) => {\n if (typeof num === 'number') {\n // eslint-disable-next-line no-param-reassign\n num = num.toFixed(2); // handle numbers in scientific notifcation, like 10.2345E23\n }\n const numS = num.toString().replace(',', '.');\n let decPos = numS.indexOf('.');\n const substrLength = decPos === -1 ? numS.length : 1 + decPos + digits;\n const trimmedResult = numS.substr(0, substrLength);\n let finalResult = Number.isNaN(trimmedResult) ? '0' : trimmedResult;\n\n if (decPos !== -1) {\n let s = `${trimmedResult}`;\n decPos = s.indexOf('.');\n let decLength = s.length - decPos;\n\n while (decLength <= digits) {\n s += '0';\n decPos = s.indexOf('.');\n decLength = s.length - decPos;\n }\n finalResult = s;\n }\n\n return formatNumber(finalResult, separator, decimalSeparator);\n };\n\n export const alphabeticSortAscPredicate = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (b > a) {\n return -1;\n }\n return 0;\n };\n\n /**\n * Slugifies a string, note that this might not be the same slugification method as backend\n */\n export const slugify = (string: string) => {\n const a = 'à áâäæãåÄăąçćÄÄ‘ÄèéêëēėęěğǵḧîïÃīįìłḿñńǹňôöòóœøÅõőṕŕřßśšşșťțûüùúūǘůűųẃáºÃ¿Ã½Å¾ÅºÅ¼Â·/_,:;';\n const b = 'aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------';\n const p = new RegExp(a.split('').join('|'), 'g');\n\n return (\n string\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(p, (c) => b.charAt(a.indexOf(c))) // Replace special characters\n .replace(/&/g, '-and-') // Replace & with 'and'\n // eslint-disable-next-line no-useless-escape\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word characters\n // eslint-disable-next-line no-useless-escape\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, '')\n ); // Trim - from end of text\n };\n\n export const capitalizeFirstLetter = (string: string) => {\n if (!string) return string;\n return string.charAt(0).toUpperCase() + string.slice(1);\n };\n\n export const capitalize = (string: string) => {\n if (!string) return string;\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n };\n\n export const capitalizeWords = (string: string) => {\n if (!string) return null;\n\n const splitBy = ' ';\n\n const words = string.split(splitBy);\n return words.map(capitalize).join(splitBy);\n };\n\n /**\n * Sort array of objects by property\n * Returns a sort function\n * Example : myArrayOfObjects.sort(Helpers.by('name'));\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export const by =\n <T>(property: keyof T) =>\n (a: T, b: T) =>\n // eslint-disable-next-line no-nested-ternary\n a[property] > b[property] ? 1 : a[property] < b[property] ? -1 : 0;\n\n export const insertEveryNCharacters = (input: string, every: number, separator: string) => {\n const regex = new RegExp(`\\\\B(?=(\\\\d{${every}})+(?!\\\\d))`, 'g');\n const result = input.replace(regex, separator);\n\n return result;\n };\n\n /**\n * Format number for points and amount\n * 10000 > 10 000\n * 9999 > 9 999\n */\n export const formatMemberPointsAndAmount = (input: number) => {\n if (!input) return input;\n const result = insertEveryNCharacters(input.toString(), 3, ' ');\n return result;\n };\n\n /**\n * Swedish formatted amount\n * Numbers up to 9999 should not have a space, then the space should be every 3 chars.\n * 9000, 10 000, 100 000, 1 000 000\n */\n export const swedishAmount = (input: string) => {\n const resultWithoutSpaces = input.replace(' ', '');\n if (resultWithoutSpaces.length < 5) {\n return resultWithoutSpaces;\n }\n\n const result = insertEveryNCharacters(input, 3, ' ');\n\n return result;\n };\n\n /**\n * Swedish formatted phone number.\n * Code from https://codegolf.stackexchange.com/questions/195787/format-a-swedish-phone-number\n */\n // eslint-disable-next-line no-return-assign\n export const swedishPhoneNumber = (\n input: string,\n B = (I: number) => +input[I] && input.length - I > 4,\n A = (a: string) => a.includes(input[1]),\n b = B(0),\n // eslint-disable-next-line no-nested-ternary\n L = A('8') ? 2 : A('569') ? 4 : 3,\n ) =>\n (b\n ? ''\n : input.slice(\n 0,\n // eslint-disable-next-line no-nested-ternary, no-param-reassign\n B(L) ? L : (L = L > 3 ? (B(3) ? 3 : 2) : L > 2 ? (B(4) ? 4 : 2) : B(4) ? 4 : 3),\n )) +\n (b ? '' : '-') +\n input.slice(b ? 0 : L).replace(/./g, (e, i, T, U = `${e} `) =>\n // eslint-disable-next-line no-nested-ternary\n T[5]\n ? // eslint-disable-next-line no-nested-ternary\n T[6]\n ? // eslint-disable-next-line no-nested-ternary\n T[7]\n ? // eslint-disable-next-line eqeqeq\n i == 2 || i == 5\n ? U\n : e\n : // eslint-disable-next-line eqeqeq\n i == 2 || i == 4\n ? U\n : e\n : // eslint-disable-next-line eqeqeq\n i == 1 || i == 3\n ? U\n : e\n : // eslint-disable-next-line eqeqeq\n i == 2\n ? U\n : e,\n );\n\n export const safeSwedishPhoneNumber = (input: string) => {\n if (!input) {\n return null;\n }\n\n try {\n return swedishPhoneNumber(input);\n } catch {\n return input;\n }\n };\n\n /**\n * Formats Swedish phone number with country code and 10 digits, no spaces\n * Example 1: 0701112233 > +46701112233\n * Example 2: 070-111 22 33 > +46701112233\n * Example 3: +46 (070) 111-22-33 > +46701112233\n */\n export const swedishPhoneNumberFullFormat = (input: string) => {\n // Step 1: Clean up the input by removing spaces, hyphens, and parentheses\n let cleanedNumber = input.replace(/[^\\d+]/g, '');\n if (cleanedNumber.startsWith('+46')) {\n // Need to split it up and remove 0 if it is the first after +46.\n const testNumber = cleanedNumber.slice(3);\n if (testNumber.startsWith('0')) {\n cleanedNumber = `+46${testNumber.slice(1)}`;\n }\n } else if (cleanedNumber.startsWith('0')) {\n // Starts with a '0', replace it with '+46'\n cleanedNumber = `+46${cleanedNumber.slice(1)}`;\n } else if (!cleanedNumber.startsWith('+')) {\n // If the number doesn't start with a '+', assume it's a local Swedish number\n cleanedNumber = `+46${cleanedNumber}`;\n }\n return cleanedNumber;\n };\n\n export const formatPostalCode = (postalCode: string) => {\n return (postalCode && postalCode.match(/.{1,3}/g)?.join(' ')) || '';\n };\n\n export const getPrice = (priceData: PriceData, priceType: PriceType) => {\n switch (priceType) {\n case PriceType.ExcludeTax:\n return priceData?.exclTaxPrice;\n case PriceType.IncludeTax:\n default:\n return priceData?.inclTaxPrice;\n }\n };\n\n /**\n * Always use price with tax for GA\n */\n export const getPriceForGa = (priceData: PriceData) => {\n return getPrice(priceData, PriceType.IncludeTax);\n };\n\n export const getPriceTypeText = (priceType: PriceType) => {\n switch (priceType) {\n case PriceType.ExcludeTax:\n return 'Exkl. moms';\n\n case PriceType.IncludeTax:\n default:\n return 'Inkl. moms';\n }\n };\n\n export const isZipCode = (zipCodeString: string) => {\n const possibleZipCode = zipCodeString.split(' ').join('');\n return possibleZipCode.length === 5 && isNumber(possibleZipCode);\n };\n}\n","import { appInsights } from '../appInsights';\n\nexport const logPropertyMissing = (err: Error) => {\n appInsights.trackException({\n exception: {\n ...err,\n message: `Runtime property missing. ${err.message}`,\n },\n });\n};\n\nexport const logMissingContext = (contextName: string) => {\n const error = new Error(`React Context missing: ${contextName}`);\n\n appInsights.trackException({\n exception: {\n ...error,\n },\n });\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nwindow.abtest = {};\n\n(window as any).hideLoginReminder = () => {\n window.abtest.loginReminderPopupShown = false;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Accordion--default\":\"uQoAqqx6\",\"AccordionItem\":\"piwULS3m\",\"AccordionHeader\":\"HXu37Y5q\",\"AccordionContent\":\"mpl9oZN6\",\"Accordion--splitted\":\"F9Wnh_SN\",\"AccordionTrigger\":\"a9ShLV3j\",\"AccordionChevron\":\"FyfbfKVj\",\"slideDown\":\"ul2JMOGH\",\"slideUp\":\"PByVuNmz\",\"Accordion-gray\":\"odcxhOBR\",\"Accordion-white\":\"B3Rty6Sz\",\"Accordion-green\":\"lQTJWIkg\",\"Accordion--rounded\":\"n1yxWvZ1\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport { Icon } from '@coop/components';\nimport { ChevronDownIcon } from '@coop/icons';\nimport type {\n AccordionContentProps,\n AccordionHeaderProps,\n AccordionItemProps,\n AccordionMultipleProps,\n AccordionSingleProps,\n AccordionTriggerProps,\n} from '@radix-ui/react-accordion';\nimport * as AccordionRadix from '@radix-ui/react-accordion';\nimport { Slottable } from '@radix-ui/react-slot';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './Accordion.module.scss';\n\nconst AccordionRoot = React.forwardRef<\n HTMLDivElement,\n (AccordionSingleProps | AccordionMultipleProps) &\n React.RefAttributes<HTMLDivElement> & {\n theme?: 'gray' | 'white' | 'green';\n splitted?: boolean;\n rounded?: boolean;\n }\n>(({ theme, splitted, rounded, className, ...props }, ref) => {\n const classes = classNames(\n styles.Accordion,\n className,\n theme === 'gray' && styles['Accordion-gray'],\n theme === 'white' && styles['Accordion-white'],\n theme === 'green' && styles['Accordion-green'],\n splitted ? styles['Accordion--splitted'] : styles['Accordion--default'],\n !!rounded && styles['Accordion--rounded'],\n );\n\n return <AccordionRadix.Root {...props} ref={ref} className={classes} />;\n});\n\nconst AccordionItem = React.forwardRef<\n HTMLDivElement,\n AccordionItemProps & React.RefAttributes<HTMLDivElement>\n>((props, ref) => {\n const classes = classNames(styles.AccordionItem, props.className);\n\n return <AccordionRadix.Item {...props} ref={ref} className={classes} />;\n});\n\nconst AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n AccordionTriggerProps &\n React.RefAttributes<HTMLButtonElement> & {\n iconClassName?: string;\n iconPosition?: 'left' | 'right';\n withChevron?: boolean;\n }\n>(({ iconClassName, iconPosition = 'right', children, withChevron = true, ...props }, ref) => {\n const classes = classNames(styles.AccordionTrigger, props.className);\n\n return (\n <AccordionRadix.Trigger {...props} ref={ref} className={classes}>\n {iconPosition === 'left' && !props.disabled && withChevron && (\n <Icon\n icon={ChevronDownIcon}\n width={20}\n height={20}\n aria-hidden=\"true\"\n className={classNames(iconClassName, styles.AccordionChevron)}\n />\n )}\n <Slottable>{children}</Slottable>\n {!props.disabled && iconPosition === 'right' && withChevron && (\n <Icon\n icon={ChevronDownIcon}\n width={20}\n height={20}\n aria-hidden=\"true\"\n className={classNames(iconClassName, styles.AccordionChevron)}\n />\n )}\n </AccordionRadix.Trigger>\n );\n});\n\nconst AccordionHeader = React.forwardRef<\n HTMLDivElement,\n AccordionHeaderProps & React.RefAttributes<HTMLHeadingElement>\n>((props, ref) => {\n const classes = classNames(styles.AccordionHeader, props.className);\n\n return <AccordionRadix.Header {...props} ref={ref} className={classes} />;\n});\n\nconst AccordionContent = React.forwardRef<\n HTMLDivElement,\n AccordionContentProps & React.RefAttributes<HTMLDivElement>\n>((props, ref) => {\n const classes = classNames(styles.AccordionContent, props.className);\n\n return <AccordionRadix.Content {...props} ref={ref} className={classes} />;\n});\n\nconst Accordion = {\n Root: AccordionRoot,\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Header: AccordionHeader,\n Content: AccordionContent,\n};\n\n(Accordion.Root as React.FC<React.ComponentProps<typeof AccordionRoot>>).displayName =\n 'Accordion.Root';\n(Accordion.Item as React.FC<React.ComponentProps<typeof AccordionItem>>).displayName =\n 'Accordion.Item';\n(Accordion.Trigger as React.FC).displayName = 'Accordion.Trigger';\n(Accordion.Header as React.FC).displayName = 'Accordion.Header';\n(Accordion.Content as React.FC).displayName = 'Accordion.Content';\n\nexport default Accordion;\n","/* eslint-disable react/jsx-props-no-spreading */\n\n'use client';\n\nimport type * as React from 'react';\nimport { useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport type { CSSTransitionProps } from 'react-transition-group/CSSTransition';\n\nimport Badge from './Badge';\nimport styles from './Badge.module.scss';\nimport type { BadgeProps } from './Badge.types';\n\nconst AnimatedBadge = (\n props: React.PropsWithChildren<BadgeProps> & {\n animationProps: CSSTransitionProps;\n },\n) => {\n const isUpdatingAndActive = [styles['is-updating'], styles['is-active']].join(' ');\n const isActive = styles['is-active'];\n\n const transitionRef = useRef(null);\n\n const { key, ...animProps } = props.animationProps;\n\n return (\n <CSSTransition\n nodeRef={transitionRef}\n key={key}\n timeout={0}\n {...animProps}\n classNames={{\n appear: isUpdatingAndActive,\n appearActive: isUpdatingAndActive,\n appearDone: isActive,\n enter: isUpdatingAndActive,\n enterActive: isUpdatingAndActive,\n enterDone: isActive,\n }}\n >\n <Badge ref={transitionRef} {...props} className={styles['Badge--animated']} />\n </CSSTransition>\n );\n};\n\nexport default AnimatedBadge;\n","/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\n\nimport { Icon } from '../Icon';\nimport type { BadgeProps } from './Badge.types';\nimport { getBadgeClasses } from './Badge.utils';\n\nconst Badge = React.forwardRef<HTMLDivElement, React.PropsWithChildren<BadgeProps>>(\n (props, ref) => {\n const classes = getBadgeClasses(props);\n\n return (\n <div\n ref={ref}\n className={classes}\n style={{\n top: props.top,\n right: props.right,\n bottom: props.bottom,\n left: props.left,\n transform: [\n props.offsetX !== undefined && `translateX(${props.offsetX})`,\n props.offsetY !== undefined && `translateY(${props.offsetY})`,\n ]\n .filter(Boolean)\n .join(' '),\n }}\n >\n {props.leftIcon && (\n <Icon icon={props.leftIcon} aria-hidden style={{ marginRight: 4 }} />\n )}\n {props.children}\n </div>\n );\n },\n);\n\nexport default Badge;\n","import classNames from 'classnames';\n\nimport styles from './Badge.module.scss';\nimport type { BadgeColor, BadgeProps, BadgeSize } from './Badge.types';\n\nexport const getBadgeClasses = (props: BadgeProps): string => {\n return classNames(\n props.className,\n styles.Badge,\n props.wide ? styles['Badge-wide'] : '',\n getSizeClass(props.size),\n getColorClass(props.color),\n );\n};\n\nconst getSizeClass = (size: BadgeSize): string => {\n switch (size) {\n case 'xsmall':\n return styles['Badge--xsmall'];\n case 'small':\n return styles['Badge--small'];\n case 'medium':\n default:\n return styles['Badge--medium'];\n }\n};\n\nconst getColorClass = (color: BadgeColor): string => {\n switch (color) {\n case 'white':\n return styles['Badge--white'];\n case 'ctaGreen':\n return styles['Badge--ctaGreen'];\n case 'greenLight2':\n return styles['Badge--greenLight2'];\n default:\n return styles['Badge--ctaGreen'];\n }\n};\n","import classNames from 'classnames';\nimport type * as React from 'react';\n\nimport styles from './Badge.module.scss';\n\nconst BadgePositioning = (props: React.PropsWithChildren<{ className?: string }>) => {\n return (\n <div className={classNames(props.className, styles.BadgePositioning)}>{props.children}</div>\n );\n};\n\nexport default BadgePositioning;\n","// extracted by mini-css-extract-plugin\nexport default {\"Button\":\"Wy2NiM6K\",\"Button--icon\":\"MV0OfllN\",\"Button--disabled\":\"CUgMJr3g\",\"Button--fullWidth\":\"mOvy16Ff\",\"Button--loading\":\"QJED71d2\",\"Button-rightSlot\":\"RkSiKsUf\",\"Button-loading\":\"GEkzJUz5\",\"Button--size40\":\"n7zzFW7b\",\"Button--size48\":\"KBjvDjcp\",\"Button--size56\":\"pJYkFGQu\",\"Button--primary\":\"IGOfolJn\",\"Button--primaryOutline\":\"jitKXYlf\",\"Button--light\":\"VAlxHcWJ\",\"Button--whiteGreen\":\"n1SrI3ae\",\"Button--whiteBlack\":\"tqWpu7Ik\",\"Button--whiteOutline\":\"WUEvOu2W\",\"Button--red\":\"KgDhJ23K\",\"Button--redLight\":\"ha5qCfJ6\"};","import type { SpinnerSize } from '../Loader';\nimport type { DsButtonSize } from './Button.types';\n\nexport const getSpinnerSizeForButtonSize = (buttonSize: DsButtonSize): SpinnerSize => {\n switch (buttonSize) {\n case 40:\n return 20;\n case 48:\n return 24;\n case 56:\n return 28;\n default:\n return exhaustiveCheck(buttonSize);\n }\n};\n\nconst exhaustiveCheck = (value: never): never => {\n throw new Error(`Unhandled value: ${value}`);\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport classNames from 'classnames';\nimport type { HTMLAttributes } from 'react';\nimport * as React from 'react';\nimport { pick } from 'underscore';\n\nimport { Loader } from '../Loader';\nimport styles from './Button.module.scss';\nimport type { BaseButtonProps, ButtonProps } from './Button.types';\nimport { getSpinnerSizeForButtonSize } from './Button.utils';\n\ntype AllOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T];\ntype AllNonOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T];\n\ntype OptionalToMaybeUndefined<T> = { [K in AllOptionalKeys<T>]: T[K] | undefined } & {\n [K in AllNonOptionalKeys<T>]: T[K];\n};\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({ size = 40, ...props }, ref) => {\n const classes = classNames(\n props.className,\n styles.Button,\n props.asIcon && styles['Button--icon'],\n props.disabled && styles['Button--disabled'],\n props.fullWidth && styles['Button--fullWidth'],\n props.isActive && styles['is-active'],\n props.isLoading && styles['Button--loading'],\n styles[`Button--size${size}`],\n styles[`Button--${props.theme || 'primary'}`],\n );\n\n // Convert all optional keys to required but with undefined as a possible value, to make it typesafe when a prop is added to BaseButtonProps without changing customProps below\n const customProps: OptionalToMaybeUndefined<BaseButtonProps> = {\n theme: props.theme,\n size,\n testSelector: props.testSelector,\n isLoading: props.isLoading,\n asChild: props.asChild,\n asIcon: props.asIcon,\n rightSlot: props.rightSlot,\n isActive: props.isActive,\n fullWidth: props.fullWidth,\n className: props.className,\n loadingText: props.loadingText,\n };\n\n const keysNotFromCustomProps = Object.keys(props).filter(\n (key) => !Object.keys(customProps).includes(key),\n );\n\n // Get only props that are not in custom props - will essentailly become native HTMLElement's attributes in runtime\n // If we would spread props to a Slot component, it would throw a warnining in console about props that are not available as native attributes in HTML tag\n const baseButtonProps = pick(props, keysNotFromCustomProps);\n\n const useHtmlButtonElement = !props.asChild;\n\n const isDisabled = props.isLoading || (useHtmlButtonElement && props.disabled);\n const disabledOnClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const buttonClick = isDisabled ? disabledOnClick : baseButtonProps.onClick;\n\n const htmlButtonOnlyProps = useHtmlButtonElement\n ? ({\n disabled: false, // accessibility, do not use html disable as it makes button unfocusable\n 'aria-disabled': isDisabled,\n onClick: buttonClick,\n type: baseButtonProps.type || 'button',\n } as Partial<HTMLAttributes<HTMLButtonElement>>)\n : {};\n\n const Component = useHtmlButtonElement ? 'button' : Slot;\n\n if (props.isLoading) {\n return (\n <Component\n {...baseButtonProps}\n ref={ref}\n className={classes}\n data-test={customProps.testSelector}\n {...htmlButtonOnlyProps}\n onClick={\n customProps.isLoading\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : htmlButtonOnlyProps.onClick\n }\n >\n <div className={styles['Button-loading']}>\n {props.loadingText || 'Laddar'}\n <Loader\n ariaHidden\n type=\"spinner\"\n theme=\"currentColor\"\n size={getSpinnerSizeForButtonSize(size)}\n />\n </div>\n </Component>\n );\n }\n\n return (\n <Component\n {...baseButtonProps}\n ref={ref}\n className={classes}\n data-test={customProps.testSelector}\n {...htmlButtonOnlyProps}\n >\n {/* TODO keep an eye on this: https://github.com/radix-ui/primitives/issues/1825 and modify when its available */}\n <Slottable>{props.children}</Slottable>\n\n {props.rightSlot && React.isValidElement(props.rightSlot)\n ? React.cloneElement(props.rightSlot, {\n className: classNames(\n props.rightSlot.props?.className,\n styles['Button-rightSlot'],\n ),\n 'aria-hidden': true,\n } as React.HTMLAttributes<HTMLElement>)\n : props.rightSlot}\n </Component>\n );\n});\n\nexport default Button;\n","import * as React from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport type { Icon } from '../Icon';\nimport { AccessibleIcon } from '../Icon';\nimport Button from './Button';\nimport type { ButtonProps } from './Button.types';\n\ntype IconButtonProps = {\n icon: Parameters<typeof Icon>[0]['icon'];\n label: string;\n} & Omit<ButtonProps, 'asIcon' | 'asChild'>;\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ icon, label, children, ...buttonProps }, ref) => {\n return (\n <Button\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...buttonProps}\n asIcon\n ref={ref}\n loadingText={<VisuallyHidden>{buttonProps.loadingText || 'Laddar'}</VisuallyHidden>}\n >\n <AccessibleIcon label={label} icon={icon} />\n {children}\n </Button>\n );\n },\n);\n\nexport default IconButton;\n","'use client';\n\nimport { CheckmarkIcon } from '@coop/icons';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport classNames from 'classnames';\nimport type * as React from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport { Icon } from '../Icon';\nimport styles from './Checkbox.module.scss';\n\ninterface StyledCheckboxProps extends CheckboxPrimitive.CheckboxProps {\n label: React.ReactNode;\n labelVisuallyHidden?: boolean; // hide for render, but still announce when using screen reader\n disabled?: boolean;\n validationMsg?: string;\n theme?: 'shadowed' | 'default';\n indicatorVerticalPosition?: 'top' | 'center';\n}\n\nconst StyledCheckbox = ({\n label,\n validationMsg,\n className,\n disabled = false,\n labelVisuallyHidden = false,\n theme = 'default',\n indicatorVerticalPosition: labeVerticalPosition = 'center',\n ...props\n}: StyledCheckboxProps) => {\n const classes = classNames(\n styles.Checkbox,\n className,\n theme === 'shadowed' && styles['Checkbox-shadowed'],\n disabled && styles['is-disabled'],\n validationMsg && styles['is-invalid'],\n );\n\n return (\n <div className={classes}>\n <CheckboxPrimitive.Root\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n className={classNames(\n styles.CheckboxButton,\n labeVerticalPosition === 'center' && styles['CheckboxButton--center'],\n labeVerticalPosition === 'top' && styles['CheckboxButton--top'],\n )}\n disabled={disabled}\n >\n {theme === 'shadowed' && <div className={classNames(styles.IndicatorShadow)} />}\n <CheckboxPrimitive.Indicator className={styles.Indicator}>\n <Icon icon={CheckmarkIcon} aria-hidden />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label htmlFor={props.id} className={classNames(styles.Label)}>\n {labelVisuallyHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n {validationMsg && <span className={styles.ValidationMessage}>{validationMsg}</span>}\n </label>\n </div>\n );\n};\n\nexport default StyledCheckbox;\n","// extracted by mini-css-extract-plugin\nexport default {\"Checkbox\":\"Y02YGszF\",\"is-disabled\":\"Q92zu7lA\",\"is-invalid\":\"pTNKREns\",\"CheckboxButton\":\"WTmRJxlo\",\"CheckboxButton--center\":\"ChXSMKxP\",\"CheckboxButton--top\":\"oWSBitfJ\",\"Indicator\":\"Kvm8CmPU\",\"Label\":\"xlvlfBnS\",\"ValidationMessage\":\"k4rpKaRx\",\"Checkbox-shadowed\":\"OgUQu9R2\",\"IndicatorShadow\":\"YbZlQr1_\"};","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"gUGSFhfR\",\"FullWidth\":\"bN5IbhqF\",\"CountBadge\":\"PEjz9ZE8\",\"isActive\":\"cRIHKLyd\",\"Size-24\":\"xpx_0_aF\",\"Size-32\":\"ucdesrxw\",\"WithLeftSlot\":\"co6d_hTc\",\"WithRightSlot\":\"JbpuCWgM\",\"WithCountBadge\":\"LrMbMOI2\",\"WithTextOnly\":\"TGFfLiEs\",\"WithIconOnly\":\"qfkHWAKt\",\"LeftSlot\":\"aEovGJlI\",\"RightSlot\":\"MvecgTAP\",\"Theme-whiteGreen\":\"CkqGWkRo\",\"Theme-whiteBlack\":\"BPNK9JRC\",\"Theme-grey\":\"BCi5irdg\",\"Theme-redLight\":\"Jnh70212\",\"Theme-red\":\"gm5Iv4VJ\",\"Theme-yellow\":\"SnrQ8b74\",\"Theme-green1\":\"GQKZVZvw\",\"Theme-green2\":\"eq13yBob\",\"Theme-greenCta\":\"UhM7Xoea\",\"CountBadgeAlt1\":\"wwdEzHWU\",\"CountBadgeAlt2\":\"s5o23tRu\"};","import { Slot, Slottable } from '@radix-ui/react-slot';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './Chip.module.scss';\nimport type { ChipSize, ChipTheme } from './Chip.types';\n\nexport interface ChipProps {\n className?: string;\n theme: ChipTheme;\n size: ChipSize;\n asChild?: boolean;\n asIcon?: boolean;\n isActive?: boolean;\n leftSlot?: React.ReactNode;\n\n rightSlot?: React.ReactNode;\n count?: number;\n countVariant?: 1 | 2;\n fullWidth?: boolean;\n}\n\nconst Chip = (props: React.PropsWithChildren<ChipProps>) => {\n const type =\n (props.asIcon === true && 'WithIconOnly') ||\n (props.count !== undefined && 'WithCountBadge') ||\n (props.leftSlot && 'WithLeftSlot') ||\n (props.rightSlot && 'WithRightSlot') ||\n 'WithTextOnly';\n\n const classes = classNames(\n props.className,\n styles.Container,\n styles[`Theme-${props.theme}`],\n styles[`Size-${props.size}`],\n styles[type],\n props.isActive && styles.isActive,\n props.fullWidth && styles.FullWidth,\n );\n\n const Component = props.asChild ? Slot : 'div';\n\n return (\n <Component className={classes}>\n {props.leftSlot && React.isValidElement(props.leftSlot)\n ? React.cloneElement(props.leftSlot, {\n className: classNames(props.leftSlot.props?.className, styles.LeftSlot),\n 'aria-hidden': true,\n } as React.HTMLAttributes<HTMLElement>)\n : props.leftSlot}\n\n <Slottable>{props.children}</Slottable>\n\n {props.count !== undefined && (\n <div\n className={classNames(\n styles.CountBadge,\n (!props.countVariant || props.countVariant === 1) && styles.CountBadgeAlt1,\n props.countVariant === 2 && styles.CountBadgeAlt2,\n )}\n >\n {props.count}\n </div>\n )}\n\n {props.rightSlot && (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>\n {React.isValidElement(props.rightSlot)\n ? React.cloneElement(props.rightSlot, {\n className: classNames(\n props.rightSlot.props?.className,\n styles.RightSlot,\n ),\n 'aria-hidden': true,\n } as React.HTMLAttributes<HTMLElement>)\n : props.rightSlot}\n </>\n )}\n </Component>\n );\n};\n\nexport default Chip;\n","import type { SpinnerSize } from '../Loader';\nimport type { ChipSize } from './Chip.types';\n\nexport const getSpinnerSizeForChipSize = (chipSize: ChipSize): SpinnerSize => {\n switch (chipSize) {\n case 24:\n return 12;\n case 32:\n return 16;\n default:\n return exhaustiveCheck(chipSize);\n }\n};\n\nconst exhaustiveCheck = (value: never): never => {\n throw new Error(`Unhandled value: ${value}`);\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport type { PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { pick } from 'underscore';\n\nimport { Loader } from '../Loader';\nimport type { ChipProps } from './Chip';\nimport Chip from './Chip';\nimport { getSpinnerSizeForChipSize } from './Chip.utils';\n\ntype AllOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T];\ntype AllNonOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T];\n\ntype OptionalToMaybeUndefined<T> = { [K in AllOptionalKeys<T>]: T[K] | undefined } & {\n [K in AllNonOptionalKeys<T>]: T[K];\n};\n\ntype ChipButtonBaseProps = {\n isLoading?: boolean;\n loadingText?: string;\n} & Omit<ChipProps, 'asChild'>;\n\nexport type ChipButtonProps = ChipButtonBaseProps & React.ComponentPropsWithoutRef<'button'>;\n\nconst ChipButton = React.forwardRef<HTMLButtonElement, PropsWithChildren<ChipButtonProps>>(\n ({ children, ...props }, ref) => {\n const customProps: OptionalToMaybeUndefined<ChipButtonBaseProps> = {\n asIcon: props.asIcon,\n count: props.count,\n countVariant: props.countVariant,\n fullWidth: props.fullWidth,\n isActive: props.isActive,\n rightSlot: props.rightSlot,\n leftSlot: props.leftSlot,\n size: props.size,\n theme: props.theme,\n isLoading: props.isLoading,\n loadingText: props.loadingText,\n className: props.className,\n };\n\n const keysNotFromCustomProps = Object.keys(props).filter(\n (key) => !Object.keys(customProps).includes(key),\n );\n\n const buttonProps = pick(props, keysNotFromCustomProps);\n\n return (\n <Chip\n {...customProps}\n rightSlot={\n customProps.isLoading ? (\n <Loader\n type=\"spinner\"\n size={getSpinnerSizeForChipSize(props.size)}\n ariaHidden\n />\n ) : (\n customProps.rightSlot\n )\n }\n asChild\n >\n {/* https://twitter.com/housecor/status/1710698679735062741 */}\n <button\n ref={ref}\n {...buttonProps}\n type=\"button\"\n onClick={\n customProps.isLoading\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : buttonProps.onClick\n }\n disabled={buttonProps.disabled}\n >\n {props.isLoading ? props.loadingText || 'Laddar' : children}\n </button>\n </Chip>\n );\n },\n);\n\nexport default ChipButton;\n","'use client';\n\nimport { AccessibleIcon } from '@radix-ui/react-accessible-icon';\nimport * as React from 'react';\n\nimport { Icon } from '../Icon';\nimport type { IconProps } from '../Icon/Icon';\nimport type { ChipButtonProps } from './ChipButton';\nimport ChipButton from './ChipButton';\n\ntype ChipIconButtonProps = {\n icon: IconProps['icon'];\n label: string;\n} & Omit<ChipButtonProps, 'asIcon' | 'onClick'> &\n Required<Pick<ChipButtonProps, 'onClick'>>;\n\nconst ChipIconButton = React.forwardRef<\n HTMLButtonElement,\n React.PropsWithChildren<ChipIconButtonProps>\n>(({ icon, label: title, children, ...chipButtonProps }, ref) => {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <ChipButton ref={ref} {...chipButtonProps} asIcon>\n <AccessibleIcon label={title}>\n <Icon icon={icon} />\n </AccessibleIcon>\n {children}\n </ChipButton>\n );\n});\n\nexport default ChipIconButton;\n","import { useInitialFocus } from '@coop/hooks';\nimport { CloseIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type * as React from 'react';\nimport { useRef } from 'react';\n\nimport { ChipIconButton } from '../Chip';\nimport { Modal, ModalHeader } from '../Modal';\nimport { OverlayLoader } from '../OverlayLoader';\nimport styles from './Confirm.module.scss';\n\nexport type BaseConfirmProps = {\n /**\n * Show or hide the confirm dialog\n */\n show: boolean;\n\n /**\n * The heading of the confirm dialog\n */\n heading: string;\n\n /**\n * The message of the confirm dialog\n */\n message?: React.ReactNode;\n\n /**\n * Function to close the confirm dialog\n */\n close: () => void;\n\n /**\n * Show or hide the loading indicator\n */\n isLoading?: boolean;\n\n /**\n * Disable outside click to close the confirm dialog\n */\n disableOutsideClick?: boolean;\n\n /**\n * Slot for custom body content,\n */\n bodySlot?: React.ReactNode;\n\n /**\n * Render trigger for the confirm dialog for the browser to know where should it focus when the dialog is closed\n */\n renderTrigger?: (ref: React.RefObject<HTMLButtonElement>) => React.ReactNode;\n\n idForDebug?: string;\n afterClose?: () => void;\n noAnimation?: boolean;\n};\n\nconst BaseConfirm = (\n props: React.PropsWithChildren<\n BaseConfirmProps & {\n buttonSlot?: React.ReactNode;\n closeButtonRef?: React.RefObject<HTMLButtonElement>;\n }\n >,\n) => {\n const headerRef = useRef<HTMLHeadingElement>(null);\n useInitialFocus(headerRef, props.show);\n\n return (\n <Modal\n isOpen={props.show}\n close={props.close}\n disableOutsideClick={props.disableOutsideClick}\n additionalClasses={styles.ModalWrapper}\n initialFocusOnDialog={false}\n renderTrigger={props.renderTrigger}\n idForDebug={props.idForDebug}\n afterClose={props.afterClose}\n animation={props.noAnimation ? 'none' : 'scale'}\n >\n <section className={classNames(styles.Confirm)}>\n <div className={styles.ConfirmDialog}>\n <ModalHeader ref={headerRef} className={styles.ConfirmDialogHeader}>\n {props.heading}\n </ModalHeader>\n\n {!!props.message && (\n <p className={classNames(styles.ConfirmDialogMessage)}>{props.message}</p>\n )}\n\n {!!props.bodySlot && (\n <div className={classNames(styles.ConfirmDialogBody)}>{props.bodySlot}</div>\n )}\n\n {!!props.buttonSlot && (\n <div className={classNames(styles.ConfirmDialogFooter)}>\n <OverlayLoader isLoading={!!props.isLoading} />\n\n {props.buttonSlot}\n </div>\n )}\n </div>\n <div className={styles.ConfirmClose}>\n <ChipIconButton\n ref={props.closeButtonRef}\n size={32}\n onClick={props.close}\n icon={CloseIcon}\n label=\"Stäng dialog\"\n theme=\"whiteGreen\"\n />\n </div>\n </section>\n </Modal>\n );\n};\n\nexport default BaseConfirm;\n","// extracted by mini-css-extract-plugin\nexport default {\"ModalWrapper\":\"MTUscfFT\",\"Confirm\":\"AFCPqClW\",\"ConfirmClose\":\"xD8Xc4GJ\",\"ConfirmDialog\":\"pczjmnKP\",\"ConfirmDialogHeader\":\"gHCJmzXO\",\"ConfirmDialogFooter\":\"KoF15lyh\",\"ConfirmDialogMessage\":\"sjvI4pO0\",\"ConfirmDialogBody\":\"CZoR8Ky3\"};","/* eslint-disable react/no-children-prop */\n/* eslint-disable react/jsx-props-no-spreading */\nimport type * as React from 'react';\n\nimport { Button } from '../Button';\nimport type { BaseConfirmProps } from './BaseConfirm';\nimport BaseConfirm from './BaseConfirm';\n\ninterface ConfirmProps extends BaseConfirmProps {\n onConfirm: () => void;\n onCancel?: () => void;\n cancelButtonText?: string;\n /**\n * Text for the confirm button\n */\n confirmButtonText?: string;\n\n cancelButtonProps?: React.ComponentProps<typeof Button>;\n confirmButtonProps?: React.ComponentProps<typeof Button>;\n}\n\n/**\n * Confirm modal with two buttons, one for confirm and one for cancel.\n * Useful when we want the user to confirm or cancel a specific choice.\n */\nconst Confirm = (props: ConfirmProps) => {\n const confirmButtonTextFinal = props.confirmButtonText || 'Ja';\n const cancelButtonTextFinal = props.cancelButtonText || 'Avbryt';\n\n return (\n <BaseConfirm\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n buttonSlot={\n <>\n <Button\n theme=\"light\"\n onClick={() => {\n props.onCancel?.();\n props.close();\n }}\n children={cancelButtonTextFinal}\n {...props.cancelButtonProps}\n />\n <Button\n theme=\"primary\"\n onClick={props.onConfirm}\n children={confirmButtonTextFinal}\n {...props.confirmButtonProps}\n />\n </>\n }\n />\n );\n};\n\nexport default Confirm;\n","import { Button } from '../Button';\nimport type { BaseConfirmProps } from './BaseConfirm';\nimport BaseConfirm from './BaseConfirm';\n\ninterface ConfirmAlertProps extends BaseConfirmProps {\n onConfirm: () => void;\n onCancel?: () => void;\n cancelButtonText?: string;\n /**\n * Text for the confirm button\n */\n confirmButtonText?: string;\n}\n\n/**\n * Confirm modal with two red buttons, one for confirm and one for cancel.\n * Alert or warning message where the user is about to make an important or destructive choice.\n */\nconst ConfirmAlert = (props: ConfirmAlertProps) => {\n const confirmButtonTextFinal = props.confirmButtonText || 'Okej, dÃ¥ vet jag';\n const cancelButtonTextFinal = props.cancelButtonText || 'Avbryt';\n\n return (\n <BaseConfirm\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n buttonSlot={\n <>\n <Button\n theme=\"redLight\"\n onClick={() => {\n props.onCancel?.();\n props.close();\n }}\n >\n {cancelButtonTextFinal}\n </Button>\n <Button theme=\"red\" onClick={props.onConfirm}>\n {confirmButtonTextFinal}\n </Button>\n </>\n }\n />\n );\n};\n\nexport default ConfirmAlert;\n","import type { BaseConfirmProps } from './BaseConfirm';\nimport BaseConfirm from './BaseConfirm';\n\ninterface ConfirmInfoProps extends BaseConfirmProps {}\n\n/**\n * Confirm modal with no buttons other that close X button in the corner.\n * Standard notification message.\n */\nconst ConfirmInfo = (props: ConfirmInfoProps) => {\n return (\n <BaseConfirm\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nexport default ConfirmInfo;\n","'use client';\n\n/* eslint-disable react/jsx-props-no-spreading */\nimport { AccessibleIcon as RadixAccessibleIcon } from '@radix-ui/react-accessible-icon';\nimport type { ComponentProps } from 'react';\n\nimport Icon from './Icon';\n\nconst AccessibleIcon = (props: ComponentProps<typeof Icon> & { label: string }) => {\n const { label, ...iconProps } = props;\n return (\n <RadixAccessibleIcon label={label}>\n <Icon {...iconProps} />\n </RadixAccessibleIcon>\n );\n};\n\nexport default AccessibleIcon;\n","import classNames from 'classnames';\n\nimport styles from './Icon.module.scss';\nimport type { BaseSVGIconProps, IconColors } from './Icon.types';\n\nconst getIconSvgColor = (typed?: IconColors) => {\n switch (typed) {\n case 'white':\n return styles['Icon--white'];\n case 'green':\n return styles['Icon--green'];\n case 'greenDark':\n return styles['Icon--greenDark'];\n case 'transparent':\n return styles['Icon--transparent'];\n case 'black':\n return styles['Icon--black'];\n case 'grayMedium':\n return styles['Icon--grayMedium'];\n case 'yellow':\n return styles['Icon--yellow'];\n case 'red':\n return styles['Icon--red'];\n case 'dsGreen':\n return styles['Icon--ctaGreen'];\n\n default: // by default icon will get a color of nearest 'color' property in css, via currentColor\n break;\n }\n};\n\ntype ExtendedSVGProps = React.PropsWithChildren<React.SVGProps<SVGSVGElement>> & {\n title?: string;\n};\n\nexport const buildSvgIconProps = (props: BaseSVGIconProps): ExtendedSVGProps => {\n const { rotateClockwise, colorByStroke, color, title, ...svgProps } = props;\n let { style } = props;\n\n if (props.rotateClockwise) {\n style = {\n ...style,\n transform: `rotate(${rotateClockwise})`,\n };\n }\n\n return {\n ...svgProps,\n style,\n title,\n className: classNames(\n props.className,\n styles.Icon,\n getIconSvgColor(color),\n !colorByStroke && styles.useFill,\n ),\n };\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Icon\":\"Aaxl5y1U\",\"useFill\":\"Rn3d3ufj\",\"Icon--black\":\"fY7vcMv4\",\"Icon--white\":\"FSdketcV\",\"Icon--green\":\"hOMd5AXj\",\"Icon--ctaGreen\":\"m36hlGRg\",\"Icon--greenDark\":\"j0DPSk3p\",\"Icon--grayMedium\":\"G84lQRiB\",\"Icon--transparent\":\"H9xFaG8t\",\"Icon--yellow\":\"hwJSl5DI\",\"Icon--red\":\"Jl6iblXc\",\"Icon--blue\":\"vKmaA0Ye\"};","import type { BaseSVGIconProps } from './Icon.types';\nimport { buildSvgIconProps } from './Icon.utils';\n\nexport interface IconProps extends BaseSVGIconProps {\n icon: (props: React.SVGProps<SVGSVGElement>) => React.ReactNode;\n}\n\n/**\n * Wrapper for SVG files that embraces bundling SVG files together with JS.\n * Pass imported SVG module into 'icon' prop.\n * That way, the SVG will be bundled together with JS code chunks, so only the necessary SVGs will be downloaded.\n */\nconst Icon = ({\n role = 'graphics-document',\n colorByStroke = false,\n icon,\n ...rest\n}: React.PropsWithChildren<IconProps>) => {\n const svgProps = buildSvgIconProps({ role, colorByStroke, ...rest });\n\n return icon(svgProps);\n};\n\nexport default Icon;\n","// extracted by mini-css-extract-plugin\nexport default {\"Item\":\"pTBUdwWd\",\"ItemSelected\":\"ylL8_7oD\"};","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n// import type { AriaListBoxOptions } from '@react-aria/listbox';\n// import type { Node } from '@react-types/shared';\nimport type { Node } from '@react-types/shared';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { type AriaListBoxOptions, useListBox, useOption } from 'react-aria';\nimport {\n type ListBoxItemProps,\n type ListBoxProps,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n} from 'react-aria-components';\nimport { type ListState } from 'react-stately';\n\nimport actionListStyles from '../ActionList/ActionList.module.scss';\nimport { Icon } from '../Icon';\nimport listBoxStyles from './ListBox.module.scss';\n\nexport const StaticListBox = <TItem extends object>(\n props: ListBoxProps<TItem> & React.RefAttributes<HTMLDivElement>,\n) => {\n return <AriaListBox {...props} className={actionListStyles.ActionList} />;\n};\n\nexport const StaticListBoxItem = <TItem extends object>(\n props: ListBoxItemProps<TItem> & React.RefAttributes<TItem>,\n) => {\n return (\n <AriaListBoxItem\n {...props}\n className={classNames(actionListStyles.Item, listBoxStyles.Item)}\n />\n );\n};\n\nexport interface ResultListBoxStateShowProps {\n showEmptyStateWhen: boolean;\n renderEmptyState?: () => React.ReactNode;\n showErrorStateWhen: boolean;\n renderErrorState?: () => React.ReactNode;\n}\n\ninterface DynamicListBoxProps<TItem extends object>\n extends ResultListBoxStateShowProps,\n AriaListBoxOptions<TItem> {\n listBoxRef: React.RefObject<HTMLDivElement>;\n state: ListState<TItem>;\n itemClassName?: string;\n}\n\nexport const DynamicListBox = <T extends object>(\n props: DynamicListBoxProps<T> & React.RefAttributes<HTMLDivElement>,\n) => {\n const ref = React.useRef(null);\n const { listBoxProps } = useListBox(props, props.state, ref);\n\n if (props.showErrorStateWhen) {\n return (\n <div ref={ref} {...listBoxProps} className={actionListStyles.NoResults}>\n <div className={actionListStyles.NoResultsItem}>\n {props.renderErrorState?.() || 'Ett fel uppstod'}\n </div>\n </div>\n );\n }\n\n if (props.showEmptyStateWhen && [...props.state.collection].length === 0) {\n return (\n <div ref={ref} {...listBoxProps} className={actionListStyles.NoResults}>\n <div className={actionListStyles.NoResultsItem}>\n {props.renderEmptyState?.() || 'Inga resultat'}\n </div>\n </div>\n );\n }\n\n return (\n <ul\n {...listBoxProps}\n ref={ref}\n className={classNames(actionListStyles.ActionList, listBoxProps.className)}\n >\n {[...props.state.collection].map((item) => (\n <DynamicListBoxItem\n key={item.key}\n item={item}\n state={props.state}\n className={props.itemClassName}\n />\n ))}\n </ul>\n );\n};\n\ninterface DynamicListBoxItemProps<TItem extends object> {\n className?: string;\n item: Node<TItem>;\n state: ListState<TItem>;\n}\n\nconst DynamicListBoxItem = <T extends object>(props: DynamicListBoxItemProps<T>) => {\n const ref = React.useRef(null);\n const { optionProps, isFocusVisible, isSelected } = useOption(\n { key: props.item.key },\n props.state,\n ref,\n );\n\n return (\n <li\n {...optionProps}\n className={classNames(\n actionListStyles.Item,\n listBoxStyles.Item,\n isSelected && listBoxStyles.ItemSelected,\n isFocusVisible && actionListStyles.ItemFocusVisible,\n optionProps.className,\n props.className,\n )}\n ref={ref}\n >\n {props.item.rendered}\n </li>\n );\n};\n\nexport const ListBoxItemIcon = ({ icon }: { icon?: React.ComponentProps<typeof Icon>['icon'] }) => {\n return icon ? <Icon icon={icon} className={actionListStyles.ItemIcon} aria-hidden /> : null;\n};\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useDelayedIsLoading = (isLoading?: boolean, delay?: number) => {\n const [show, setShow] = useState(isLoading || false);\n\n useEffect(() => {\n if (delay === undefined) {\n return;\n }\n\n if (!isLoading) {\n setShow(false);\n }\n\n const timer = setTimeout(() => {\n if (isLoading) {\n setShow(true);\n }\n }, delay);\n\n return () => clearTimeout(timer);\n }, [delay, isLoading]);\n\n return show;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Loader\":\"ken7OpC9\",\"Loader--balls\":\"BJX_I8L2\",\"Loader-icon\":\"UaiajNv5\",\"ballsLoader\":\"nSjQyqnO\",\"Loader--small\":\"b7hNrd9K\",\"Loader--medium\":\"lDI8wPez\",\"Loader--spinner\":\"nBQtnloe\",\"lds-ring\":\"lARoDij3\",\"Loader--white\":\"XgWzTR0o\",\"Loader--green\":\"YVapjME7\",\"Loader--greenDark\":\"sF_NubHd\",\"Loader--yellowLight\":\"VWU4y8A0\",\"Loader--currentColor\":\"Bl4AJNb9\",\"Loader--size12\":\"LXy6R5We\",\"Loader--size16\":\"ee9Rqq2S\",\"Loader--size20\":\"oYOPlJQ9\",\"Loader--size24\":\"HMffKdpx\",\"Loader--size28\":\"UJnaQ2pQ\"};","import styles from './Loader.module.scss';\nimport type { LoaderSize, LoaderTheme } from './Loader.types';\n\nexport const getClassForTheme = (theme: LoaderTheme) => {\n switch (theme) {\n case 'green':\n return styles['Loader--green'];\n case 'greenDark':\n return styles['Loader--greenDark'];\n case 'white':\n return styles['Loader--white'];\n case 'yellowLight':\n return styles['Loader--yellowLight'];\n case 'currentColor':\n return styles['Loader--currentColor'];\n default:\n return null;\n }\n};\n\nexport const getClassForSize = (theme: LoaderSize) => {\n switch (theme) {\n case 'small':\n return styles['Loader--small'];\n case 12:\n return styles['Loader--size12'];\n case 16:\n return styles['Loader--size16'];\n case 20:\n return styles['Loader--size20'];\n case 24:\n return styles['Loader--size24'];\n case 28:\n return styles['Loader--size28'];\n case 'default':\n default:\n return null;\n }\n};\n","'use client';\n\nimport classNames from 'classnames';\nimport type * as React from 'react';\n\nimport { useDelayedIsLoading } from './Loader.hooks';\nimport styles from './Loader.module.scss';\nimport type { LoaderSize, LoaderTheme } from './Loader.types';\nimport { getClassForSize, getClassForTheme } from './Loader.utils';\n\ninterface LoaderProps {\n size?: LoaderSize;\n additionalClassNames?: string;\n theme?: LoaderTheme;\n delay?: number;\n style?: React.CSSProperties;\n\n /** By default, loader is shown until unmounted, but you can control it with this prop */\n isLoading?: boolean;\n type?: 'balls' | 'spinner';\n ariaHidden?: boolean;\n}\n\nconst Loader = ({\n theme = 'green',\n type = 'balls',\n ...props\n}: React.PropsWithChildren<LoaderProps>) => {\n const enableDelay = !!props.delay;\n const showDelayedLoader = useDelayedIsLoading(props.isLoading, props.delay);\n\n if (props.isLoading === false) {\n return null;\n }\n\n if (enableDelay && !showDelayedLoader) {\n return null;\n }\n\n if (type === 'spinner') {\n return (\n <div\n className={classNames(\n styles.Loader,\n styles['Loader--spinner'],\n props.additionalClassNames,\n props.size && getClassForSize(props.size),\n )}\n style={props.style}\n aria-hidden={props.ariaHidden}\n >\n <div />\n <div />\n <div />\n </div>\n );\n }\n\n if (type === 'balls') {\n return (\n <div\n className={classNames(\n styles.Loader,\n styles['Loader--balls'],\n props.additionalClassNames,\n theme && getClassForTheme(theme),\n props.size && getClassForSize(props.size),\n )}\n style={props.style}\n aria-hidden={props.ariaHidden}\n >\n <div className={styles['Loader-icon']}>\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n }\n\n return null;\n};\n\nexport default Loader;\n","import { useCallback, useContext, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { ModalContextState } from './ModalContext';\n\n/**\n * Traps the users focus made with tab and shift+tab on the ref\n * caution: clicking outside the ref area will cause the focus to not be trapped\n */\nexport const useTrapFocus = <TElement extends HTMLElement>() => {\n const ref = useRef<TElement>(null);\n\n // We need a getFunction because querySelectorAll returns a snapshot and our React children\n // can update its children nodes or not completely rendered\n const getElements = useCallback(\n () => [\n ...Array.from(ref.current?.querySelectorAll<HTMLElement>(ACCEPTABLE_SELECTORS) || []),\n ],\n [],\n );\n\n const ACCEPTABLE_SELECTORS = 'a[href], button, textarea, input, select, [tabindex]';\n\n useEffect(() => {\n const focusIsOutsideOfTrap = (acceptableElements: Element[]) =>\n document.activeElement && !acceptableElements.includes(document.activeElement);\n\n const handleNext = (event: Event) => {\n const foundElements = getElements();\n if (!foundElements?.length) {\n return;\n }\n\n const currentFocusIsLast =\n foundElements[foundElements.length - 1] === document.activeElement;\n\n if (currentFocusIsLast || focusIsOutsideOfTrap(foundElements)) {\n event.preventDefault();\n foundElements[0].focus();\n }\n };\n\n const handlePrev = (event: Event) => {\n const foundElements = getElements();\n if (!foundElements?.length) {\n return;\n }\n\n const currentFocusIsFirst = foundElements[0] === document.activeElement;\n\n if (currentFocusIsFirst || focusIsOutsideOfTrap(foundElements)) {\n event.preventDefault();\n foundElements[foundElements.length - 1].focus();\n }\n };\n\n const handleUserKeyPress = (event: KeyboardEvent) => {\n if (!event.shiftKey && event.key?.toLowerCase() === 'Tab'.toLowerCase()) {\n handleNext(event);\n }\n\n if (event.shiftKey && event.key?.toLowerCase() === 'Tab'.toLowerCase()) {\n handlePrev(event);\n }\n };\n\n window.addEventListener('keydown', handleUserKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleUserKeyPress);\n };\n }, [getElements]);\n\n return ref;\n};\n\nexport const useEscapeKey = (callback: () => void) => {\n useEffect(() => {\n const handleUserKeyPress = (event: KeyboardEvent) => {\n if (event.key?.toLowerCase() === 'Escape'.toLowerCase()) {\n callback();\n }\n };\n\n window.addEventListener('keydown', handleUserKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleUserKeyPress);\n };\n }, [callback]);\n};\n\n/**\n * Used to check if a component is mounted inside a modal\n */\nexport const useIsInsideModal = () => {\n const maybeParentModalContext = useContext(ModalContextState);\n const isInsideAnotherModal = !!maybeParentModalContext;\n\n return isInsideAnotherModal;\n};\n\nexport const useModalContext = () => {\n const context = useContext(ModalContextState);\n return context;\n};\n\nconst findDirectBodyChild = (element: Element | null): Element | null => {\n if (!element || element.parentElement === document.body) {\n return element;\n }\n return findDirectBodyChild(element.parentElement);\n};\n\nconst toggleBodyChildrenInert = (htmlId: string, shouldInert: boolean) => {\n const htmlElement = document.getElementById(htmlId);\n const skipInertElement = findDirectBodyChild(htmlElement);\n\n Array.from(document.body.children).forEach((el) => {\n if (el.getAttribute('inert-ignore') === 'true') {\n return;\n }\n if (el === skipInertElement) {\n return;\n }\n\n if (shouldInert) {\n el.setAttribute('inert', 'true');\n } else {\n el.removeAttribute('inert');\n }\n });\n};\n\n/**\n * When a modal is open HTML inert attribute will be added to all HTML body children except that modal\n * Inert makes the element and all its children not focusable and not clickable, but still visible.\n * Screen readers will ignore the inert elements and any aria-live in it will not be announced.\n * */\nexport const useModalInert = (isOpen: boolean, htmlId?: string) => {\n const hasParentModal = useIsInsideModal();\n\n useLayoutEffect(() => {\n if (!htmlId) {\n return;\n }\n\n // If the modal has a parent modal, the parent already handles the inert attribute\n if (hasParentModal) {\n return;\n }\n\n if (isOpen) {\n toggleBodyChildrenInert(htmlId, true);\n } else {\n toggleBodyChildrenInert(htmlId, false);\n }\n\n // If modal doenst have any parent modals (aka is a \"top level\" modal), remove the inert on component rerender\n // It will be run on component's unmounting too\n return () => {\n toggleBodyChildrenInert(htmlId, false);\n };\n }, [isOpen, htmlId, hasParentModal]);\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n if (target instanceof ShadowRoot) {\n target = target.host;\n }\n else {\n target = target.parentNode;\n }\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport { useOutsideClick } from '@coop/hooks';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useLayoutEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { CSSTransition } from 'react-transition-group';\nimport { v4 } from 'uuid';\n\nimport { useEscapeKey, useModalInert, useTrapFocus } from './Modal.hooks';\nimport styles from './Modal.module.scss';\nimport ModalContextProvider, { ModalContextState } from './ModalContext';\n\ninterface BaseModalProps {\n isOpen: boolean;\n close?: () => void;\n afterClose?: () => void;\n onExiting?: () => void;\n\n alignment?: 'center' | 'left' | 'right';\n\n position: 'absolute' | 'fixed';\n\n /** Only applicable to centered position */\n animation?: 'fade' | 'scale' | 'slideLeft' | 'slideRight' | 'none';\n toggleTime?: 250 | 500;\n disableOutsideClick?: boolean;\n\n /**\n * Sets focus on the role=\"dialog\" element when it mounts.\n * If needed, disable that and provide your own initial focus programatically in the Modal's content you create.\n */\n initialFocusOnDialog?: boolean;\n afterOutsideClick?: () => void;\n additionalContainerClasses?: string;\n asideModalContainerStyle?: React.CSSProperties;\n disableOverlay?: boolean;\n renderTrigger?: (ref: React.RefObject<HTMLButtonElement>) => React.ReactNode;\n\n /**\n * Don'r use it if you don't know what you are doing since it can break the focus management significantly.\n * This will prevent the focus to go back to the trigger element when the modal closes.\n */\n dangerouslyDisableFocusBackToTrigger?: boolean;\n}\n\n/**\n * Do not export or use this component directly, always use FlyIn or Modal components\n */\nconst BaseModal = (props: React.PropsWithChildren<BaseModalProps>) => {\n const modalContext = useContext(ModalContextState);\n\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n useLayoutEffect(() => {\n if (triggerRef.current) {\n triggerRef.current.setAttribute('aria-haspopup', 'dialog');\n }\n }, [triggerRef]);\n\n const transitionRef = useRef(null);\n\n return (\n <>\n {props.renderTrigger?.(triggerRef)}\n <MaybePortal usePortal={!modalContext?.parentId}>\n <CSSTransition\n nodeRef={transitionRef}\n in={props.isOpen}\n timeout={{\n enter: props.toggleTime,\n exit: props.toggleTime,\n }}\n classNames={{\n appearActive: styles['is-visible'],\n appearDone: styles['is-visible'],\n enterActive: styles['is-visible'],\n enterDone: styles['is-visible'],\n exitActive: styles['is-hidden'],\n exitDone: styles['is-hidden'],\n }}\n onExited={props.afterClose}\n unmountOnExit\n appear={props.animation !== 'none'}\n enter={props.animation !== 'none'}\n exit={props.animation !== 'none'}\n onExiting={props.onExiting}\n >\n <BaseModalContent ref={transitionRef} {...props} triggerRef={triggerRef} />\n </CSSTransition>\n </MaybePortal>\n </>\n );\n};\n\ntype BaseModalContentProps = React.PropsWithChildren<\n BaseModalProps & {\n triggerRef: React.RefObject<HTMLButtonElement>;\n }\n>;\n\nconst BaseModalContent = React.forwardRef<HTMLDivElement, BaseModalContentProps>((props, ref) => {\n const modalContext = useContext(ModalContextState);\n const modalHtmlId = modalContext?.id;\n\n const modalContainerStyles = classNames(\n styles.Modal,\n props.additionalContainerClasses,\n props.alignment === 'left' && styles['Modal--left'],\n props.alignment === 'right' && styles['Modal--right'],\n props.alignment === 'center' && styles['Modal--center'],\n props.alignment === 'center' &&\n props.animation === 'scale' &&\n styles['Modal--scaleAnimation'],\n props.alignment === 'center' &&\n props.animation === 'fade' &&\n styles['Modal--fadeAnimation'],\n props.alignment === 'center' &&\n props.animation === 'slideLeft' &&\n styles['Modal--slideLeftAnimation'],\n props.alignment === 'center' &&\n props.animation === 'slideRight' &&\n styles['Modal--slideRightAnimation'],\n props.animation !== 'none' && styles.Animated,\n props.position === 'fixed' && styles['Modal--fixed'],\n props.position === 'absolute' && styles['Modal--absolute'],\n );\n const handleClose = () => {\n if (!modalContext?.hasOtherModalsAsChildren) {\n // there are no other modals under this current one, we can close current\n // if there are, the parent modal will not close\n props.close?.();\n }\n };\n\n const asideRef = useTrapFocus<HTMLDivElement>();\n useEscapeKey(handleClose);\n const outsideRef = useRef(null);\n\n useOutsideClick(\n asideRef,\n () => {\n handleClose();\n props.afterOutsideClick?.();\n },\n props.isOpen && !props.disableOutsideClick,\n outsideRef,\n );\n\n // This effect need to be called first to have the right activeElement to snapshot\n useLayoutEffect(() => {\n const focusedElementOnMount =\n props.triggerRef.current || (document.activeElement as HTMLElement);\n\n return () => {\n if (focusedElementOnMount && !props.dangerouslyDisableFocusBackToTrigger) {\n focusedElementOnMount.focus();\n }\n };\n }, [props.triggerRef, props.dangerouslyDisableFocusBackToTrigger]);\n\n useLayoutEffect(() => {\n // No default focus is provided, so focus on the dialog itself\n if (props.initialFocusOnDialog) {\n asideRef.current?.focus();\n }\n }, [props.initialFocusOnDialog, asideRef]);\n\n return (\n <div ref={ref} className={modalContainerStyles} id={modalHtmlId}>\n <div\n ref={outsideRef}\n className={!props.disableOverlay ? styles['Modal-overlay'] : ''}\n />\n <div\n ref={asideRef}\n className={styles['Modal-container']}\n style={props.asideModalContainerStyle}\n aria-labelledby={modalContext?.headerId}\n role=\"dialog\"\n aria-modal\n tabIndex={props.initialFocusOnDialog ? -1 : undefined}\n >\n {props.children}\n </div>\n </div>\n );\n});\n\ninterface ModalProps extends Omit<BaseModalProps, 'position'> {\n idForDebug?: string;\n additionalClasses?: string;\n}\n\nconst Modal = ({\n toggleTime = 500,\n alignment = 'center',\n animation = 'scale',\n initialFocusOnDialog = true,\n ...props\n}: React.PropsWithChildren<ModalProps>) => {\n const id = useRef(props.idForDebug || v4());\n useModalInert(props.isOpen, id.current);\n\n return (\n <ModalContextProvider id={id.current} isOpen={props.isOpen}>\n <BaseModal\n {...props}\n toggleTime={toggleTime}\n alignment={alignment}\n animation={animation}\n position=\"fixed\"\n initialFocusOnDialog={initialFocusOnDialog}\n >\n <RemoveScroll className={props.additionalClasses}>{props.children}</RemoveScroll>\n </BaseModal>\n </ModalContextProvider>\n );\n};\n\nconst MaybePortal = (props: React.PropsWithChildren<{ usePortal: boolean }>) => {\n return props.usePortal ? (\n <Portal selector=\"div#portal\">{props.children}</Portal>\n ) : (\n <>{props.children}</>\n );\n};\n\nconst Portal = (props: React.PropsWithChildren<{ selector: string }>) => {\n const domNode = document.querySelector(props.selector) || null;\n\n if (!domNode) {\n return null;\n }\n\n return ReactDOM.createPortal(props.children, domNode);\n};\n\nexport default Modal;\n","import type * as React from 'react';\nimport { createContext, useContext, useEffect, useReducer } from 'react';\n\ninterface ModalContextStateType {\n id: string;\n headerId: string;\n parentId?: string;\n hasOtherModalsAsChildren: boolean;\n}\n\ntype ModalContextDispatchActions =\n | { type: 'set_has_children'; modalHasModalAsChild: boolean }\n | {\n type: 'set_parent_id';\n parentId: string | undefined;\n };\ntype ModalContextDiapatchType = React.Dispatch<ModalContextDispatchActions>;\n\nexport const ModalContextState = createContext<ModalContextStateType | null>(null);\n\nconst ModalContextDispatch = createContext<ModalContextDiapatchType | null>(null);\n\nconst reducer = (\n state: ModalContextStateType,\n action: ModalContextDispatchActions,\n): ModalContextStateType => {\n switch (action.type) {\n case 'set_has_children':\n return { ...state, hasOtherModalsAsChildren: action.modalHasModalAsChild };\n case 'set_parent_id':\n return { ...state, parentId: action.parentId };\n default:\n return state;\n }\n};\n\nconst ModalContextProvider = (props: React.PropsWithChildren<{ id: string; isOpen: boolean }>) => {\n const maybeParentModalContextState = useContext(ModalContextState);\n const maybeParentModalContextDispatch = useContext(ModalContextDispatch);\n\n const idFromParent = maybeParentModalContextState?.id || undefined;\n\n const [state, dispatch] = useReducer(reducer, {\n id: props.id,\n headerId: `${props.id}_header`,\n hasOtherModalsAsChildren: false,\n parentId: idFromParent,\n });\n\n useEffect(() => {\n dispatch({\n type: 'set_parent_id',\n parentId: idFromParent,\n });\n }, [idFromParent]);\n\n useEffect(() => {\n if (maybeParentModalContextDispatch) {\n maybeParentModalContextDispatch({\n type: 'set_has_children',\n modalHasModalAsChild: props.isOpen && !!state.parentId,\n });\n }\n }, [maybeParentModalContextDispatch, props.isOpen, state.parentId]);\n\n return (\n <ModalContextDispatch.Provider value={dispatch}>\n <ModalContextState.Provider value={state}>{props.children}</ModalContextState.Provider>\n </ModalContextDispatch.Provider>\n );\n};\nexport default ModalContextProvider;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\n\nimport styles from './Modal.module.scss';\nimport { ModalContextState } from './ModalContext';\n\ninterface ModalHeaderProps extends React.HtmlHTMLAttributes<HTMLHeadingElement> {}\n\nconst ModalHeader = React.forwardRef<HTMLHeadingElement, React.PropsWithChildren<ModalHeaderProps>>(\n (props, ref) => {\n return (\n // TODO: Use Heading component when moved to packages\n <ModalContextHeader\n ref={ref}\n tabIndex={-1}\n {...props}\n className={classnames(props.className, styles.ModalHeader)}\n />\n );\n },\n);\n\nexport const ModalContextHeader = React.forwardRef<\n HTMLHeadingElement,\n React.PropsWithChildren<ModalHeaderProps>\n>(({ children, ...props }, ref) => {\n const modalContext = useContext(ModalContextState);\n\n return (\n <h1 ref={ref} {...props} id={modalContext?.headerId} aria-atomic=\"true\">\n {children}\n </h1>\n );\n});\n\nexport default ModalHeader;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"VGwjfQM2\",\"ContainerFixed\":\"zAFxL3MY\",\"ContainerAbsolute\":\"E514ja3e\",\"Animated\":\"vDca2FTC\",\"is-open\":\"bwdur_uz\",\"fadeIn\":\"R_n4d3W_\",\"Content\":\"EDl3endG\",\"fadeInFromBottom\":\"RDLnzKo5\",\"is-hiding\":\"fYdqHGhC\",\"fadeOutToTop\":\"b3NuPIen\",\"Content-size\":\"OH9P70uS\",\"Content-size--default\":\"Qef1k7pZ\",\"Content-size--productCard\":\"BLuvRSTY\",\"Content-theme--darkGreen\":\"tvvzn6aK\",\"Icon\":\"r6_CnTOF\",\"Content-theme--darkPink\":\"L6PED0vJ\",\"Content-theme--lightGreen\":\"tjQACvR6\",\"TextContent\":\"XdeiGJ_B\",\"Header\":\"uJpnzAXR\",\"Message\":\"euXIjB8G\"};","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable import/prefer-default-export */\n\n'use client';\n\nimport { CheckmarkIcon, Warning1Icon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type * as React from 'react';\n\nimport { Icon } from '../Icon';\nimport { ModalContextHeader } from '../Modal';\nimport styles from './Notification.module.scss';\nimport type { NotficationThemeType } from './Notification.types';\n\nconst NotificationContent = ({\n size = 'default',\n ...props\n}: {\n show: boolean;\n header?: string;\n message: string | undefined;\n bottomSlot?: React.ReactNode;\n size?: 'default' | 'productCard';\n type: 'alert' | 'success' | 'custom';\n theme?: NotficationThemeType;\n iconSlot?: React.ComponentProps<typeof Icon>['icon'];\n asModal?: boolean;\n}) => {\n let colorTheme: NotficationThemeType | undefined = props.theme;\n switch (props.type) {\n case 'alert':\n colorTheme = 'darkPink';\n break;\n case 'success':\n colorTheme = 'darkGreen';\n break;\n case 'custom':\n colorTheme = props.theme;\n break;\n default:\n break;\n }\n\n const HeaderTag = props.asModal ? ModalContextHeader : 'p';\n const MessageTag = props.asModal && !props.header ? ModalContextHeader : 'p';\n\n return (\n <div\n className={classNames(\n styles.Content,\n size && styles[`Content-size--${size}`],\n colorTheme && styles[`Content-theme--${colorTheme}`],\n )}\n >\n <div className={styles.Icon} aria-hidden>\n {(() => {\n switch (props.type) {\n case 'alert':\n return <Icon icon={Warning1Icon} />;\n case 'success':\n return <Icon icon={CheckmarkIcon} />;\n case 'custom':\n return props.iconSlot && <Icon icon={props.iconSlot} />;\n default:\n return null;\n }\n })()}\n </div>\n <div className={styles.TextContent}>\n {!!props.header && <HeaderTag className={styles.Header}>{props.header}</HeaderTag>}\n {!!props.message && (\n <MessageTag className={styles.Message}>{props.message}</MessageTag>\n )}\n </div>\n {props.bottomSlot}\n </div>\n );\n};\n\nexport default NotificationContent;\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable import/prefer-default-export */\n\n'use client';\n\nimport { useOutsideClick, useSetTimeout } from '@coop/hooks';\nimport * as React from 'react';\n\nimport NotificationContent from './NotificationContent';\n\nconst DEFAULT_NOTIFICATION_HIDE_TIME = 2000;\n\nconst AutoClosingNotification = React.forwardRef<\n HTMLDivElement,\n Omit<React.ComponentProps<typeof NotificationContent>, 'asModal'> & {\n close: () => void;\n hideAfterMiliseconds?: number;\n hasOutsideClick?: boolean;\n }\n>(\n (\n { hideAfterMiliseconds = DEFAULT_NOTIFICATION_HIDE_TIME, hasOutsideClick = true, ...props },\n ref,\n ) => {\n useOutsideClick(\n ref as React.MutableRefObject<HTMLDivElement>,\n props.close,\n !!hasOutsideClick && props.show,\n );\n\n useSetTimeout(props.show, hideAfterMiliseconds, () => props.close());\n\n return (\n <NotificationContent\n show={props.show}\n type={props.type}\n iconSlot={props.iconSlot}\n header={props.header}\n message={props.message}\n size={props.size}\n theme={props.theme}\n />\n );\n },\n);\n\nexport default AutoClosingNotification;\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable import/prefer-default-export */\n\n'use client';\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport styles from './Notification.module.scss';\n\nconst NotificationWrapper = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<{\n noAnimation?: boolean;\n show: boolean;\n position?: 'absolute' | 'fixed';\n ariaLive?: 'assertive' | 'polite' | 'off';\n role?: string;\n }>\n>(({ position = 'fixed', ...props }, ref) => {\n return (\n <CSSTransition\n nodeRef={ref}\n in={props.show}\n timeout={{\n appear: 200,\n enter: 200,\n exit: 200,\n }}\n classNames={{\n enterActive: styles['is-open'],\n enterDone: styles['is-open'],\n exitActive: styles['is-hiding'],\n }}\n appear={!props.noAnimation}\n enter={!props.noAnimation}\n exit={!props.noAnimation}\n unmountOnExit\n >\n <div role={props.role} aria-live={props.ariaLive}>\n <section\n ref={ref}\n className={classNames(\n styles.Container,\n !props.noAnimation && styles.Animated,\n position === 'absolute' && styles.ContainerAbsolute,\n position === 'fixed' && styles.ContainerFixed,\n )}\n >\n {props.children}\n </section>\n </div>\n </CSSTransition>\n );\n});\n\nexport default NotificationWrapper;\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable import/prefer-default-export */\n\n'use client';\n\nimport { useInitialFocus } from '@coop/hooks';\nimport type * as React from 'react';\nimport { useRef } from 'react';\n\nimport { Button } from '../Button';\nimport NotificationContent from './NotificationContent';\n\nconst PermanentNotification = (\n props: React.ComponentProps<typeof NotificationContent> & {\n ctaProps?: React.ComponentProps<typeof Button>;\n useInitialCtaFocus?: boolean;\n },\n) => {\n const leastDestructiveActionRef = useRef<HTMLButtonElement>(null);\n useInitialFocus(leastDestructiveActionRef, !!props.useInitialCtaFocus && !!props.ctaProps);\n\n return (\n <NotificationContent\n show={props.show}\n type={props.type}\n iconSlot={props.iconSlot}\n header={props.header}\n message={props.message}\n size={props.size}\n theme={props.theme}\n asModal={props.asModal}\n bottomSlot={\n !!props.ctaProps && (\n <Button\n ref={leastDestructiveActionRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props.ctaProps}\n theme={(() => {\n switch (props.type) {\n case 'alert':\n return 'red';\n default:\n return 'primary';\n }\n })()}\n />\n )\n }\n />\n );\n};\n\nexport default PermanentNotification;\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable import/prefer-default-export */\n\n'use client';\n\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { Modal } from '../Modal';\nimport AutoClosingNotification from './AutoClosingNotification';\nimport type { NotificationProps } from './Notification.types';\nimport NotificationWrapper from './NotificationWrapper';\nimport PermanentNotification from './PermanentNotification';\n\nexport const Notification = (props: React.PropsWithChildren<NotificationProps>) => {\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n const [message, setMessage] = useState('');\n // derived state from props is crap, but its the only way\n // the CSS Transitions will work if 'show' is derived from\n // a message existance, i.e. show={!!message}\n useEffect(() => {\n if (props.message) setMessage(props.message);\n }, [props.message]);\n\n if (props.behaviour === 'autoclosing' || props.behaviour === undefined) {\n return (\n <NotificationWrapper\n ref={wrapperRef}\n show={props.show}\n noAnimation={props.noAnimation}\n position={props.position}\n ariaLive={props.type !== 'alert' ? 'polite' : undefined} // dont set both role and aria-live or the some screenreaders will double announce\n role={props.type === 'alert' ? 'alert' : undefined}\n >\n <AutoClosingNotification\n ref={wrapperRef}\n show={props.show}\n header={props.header}\n message={message}\n size={props.size}\n type={props.type}\n theme={props.theme}\n iconSlot={props.iconSlot}\n close={props.close}\n hideAfterMiliseconds={props.hideAfterMiliseconds}\n hasOutsideClick={props.hasOutsideClick}\n />\n </NotificationWrapper>\n );\n }\n\n if (props.behaviour === 'permanent') {\n return (\n <NotificationWrapper\n ref={wrapperRef}\n show={props.show}\n noAnimation={props.noAnimation}\n position={props.position}\n >\n <PermanentNotification\n show={props.show}\n header={props.header}\n message={message}\n size={props.size}\n type={props.type}\n theme={props.theme}\n iconSlot={props.iconSlot}\n ctaProps={props.ctaProps}\n />\n </NotificationWrapper>\n );\n }\n\n if (props.behaviour === 'modal') {\n return (\n <Modal isOpen={props.show} close={props.close} disableOutsideClick>\n <NotificationWrapper\n ref={wrapperRef}\n show\n noAnimation // animation is handled by the modal\n position={props.position}\n >\n <PermanentNotification\n show={props.show}\n header={props.header}\n message={message}\n size={props.size}\n type={props.type}\n theme={props.theme}\n iconSlot={props.iconSlot}\n ctaProps={props.ctaProps}\n useInitialCtaFocus\n asModal\n />\n </NotificationWrapper>\n </Modal>\n );\n }\n\n return null;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"LoaderOverlay\":\"QBFEn19g\",\"IsVisible\":\"ssuiTcOm\"};","'use client';\n\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport classnames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport type * as React from 'react';\nimport { forwardRef, useEffect, useId, useLayoutEffect, useRef } from 'react';\nimport { VisuallyHidden } from 'react-aria';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { Loader } from '../Loader';\nimport { useDelayedIsLoading } from '../Loader/Loader.hooks';\nimport { PacmanLoader } from '../PacmanLoader';\nimport styles from './OverlayLoader.module.scss';\n\nexport type OverlayLoaderProps = {\n isLoading: boolean;\n additionalClasses?: string;\n type?: 'balls' | 'pacman';\n delay?: number;\n size?: Parameters<typeof Loader>[0]['size'];\n loadingText?: string;\n /** Use when you want to block user from tabbing under loader. This will also trap focus inside the loader until its done */\n blocking?: boolean;\n};\n\nexport const OverlayLoader = (props: React.PropsWithChildren<OverlayLoaderProps>) => {\n const isLoading = useDelayedIsLoading(props.isLoading, props.delay || 0);\n const loaderId = useId();\n\n const shouldTrapFocus = isLoading && props.blocking;\n\n const loadingText = props.loadingText || 'Hämtar data';\n\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (shouldTrapFocus) {\n ref.current?.focus();\n }\n }, [shouldTrapFocus]);\n\n return (\n <>\n <CSSTransition\n nodeRef={ref}\n in={isLoading}\n timeout={200}\n classNames={{\n enter: styles.IsVisible,\n enterDone: styles.IsVisible,\n }}\n unmountOnExit\n appear\n >\n {props.blocking ? (\n <FocusTrap\n active={shouldTrapFocus}\n focusTrapOptions={{\n fallbackFocus: `[id=\"${loaderId}\"]`,\n allowOutsideClick: true,\n }}\n >\n <LoaderContent\n ref={ref}\n loaderId={loaderId}\n isLoading={isLoading}\n className={props.additionalClasses}\n loadingText={loadingText}\n type={props.type}\n size={props.size}\n />\n </FocusTrap>\n ) : (\n <LoaderContent\n ref={ref}\n loaderId={loaderId}\n isLoading={isLoading}\n className={props.additionalClasses}\n loadingText={loadingText}\n type={props.type}\n size={props.size}\n />\n )}\n </CSSTransition>\n </>\n );\n};\n\nconst LoaderContent = forwardRef<\n HTMLDivElement,\n {\n loaderId: string;\n ref: React.RefObject<HTMLDivElement>;\n isLoading: boolean;\n loadingText: string;\n type?: 'balls' | 'pacman';\n size?: Parameters<typeof Loader>[0]['size'];\n className?: string;\n }\n>((props, ref) => {\n return (\n <div\n id={props.loaderId}\n ref={ref}\n tabIndex={props.isLoading ? -1 : undefined}\n className={classnames(styles.LoaderOverlay, props.className)}\n role={props.isLoading ? 'status' : undefined} // it cant be \"alert\" since it interrupts VoiceOver when switching between pages and i.e. product listings are loading.\n >\n <VisuallyHidden>{props.loadingText}</VisuallyHidden>\n {(() => {\n if (props.type === 'pacman') {\n return <PacmanLoader isLoading={props.isLoading} />;\n }\n\n return <Loader isLoading={props.isLoading} size={props.size} ariaHidden />;\n })()}\n </div>\n );\n});\n\n// Native omit does not take discriminated unions into account. This one does. Taken from https://github.com/microsoft/TypeScript/issues/54451\ntype MappedOmit<T, K extends keyof T> = { [P in keyof T as P extends K ? never : P]: T[P] };\n\nexport const OverlayPacmanLoader = ({ ...props }: MappedOmit<OverlayLoaderProps, 'type'>) => {\n return <OverlayLoader {...props} type=\"pacman\" />;\n};\n\nexport const A11yOverlayLoader = (props: React.PropsWithChildren<OverlayLoaderProps>) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n ref.current?.toggleAttribute('inert', props.isLoading);\n }, [props.isLoading]);\n\n return (\n <div className=\"u-posRelative\">\n <OverlayLoader {...props} type={props.type ?? 'pacman'} />\n <div ref={ref} className={props.additionalClasses}>\n {props.children}\n </div>\n </div>\n );\n};\n\nexport const FullOverlayLoaderWrapper = ({\n isLoading,\n children,\n}: {\n isLoading: boolean;\n children: React.ReactNode;\n}) => {\n return isLoading ? <OverlayLoader isLoading={isLoading} /> : <>{children}</>;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Pacman\":\"IevSZM8h\",\"Visible\":\"qcgDJdDs\",\"Pacman-icon\":\"SyPpMEFm\",\"pacmanPacmanUp\":\"_aBptPvg\",\"pacmanPacmanBalls\":\"ZugvQ0i9\",\"pacmanPacmanDown\":\"bvuhCDA7\"};","'use client';\n\nimport classNames from 'classnames';\nimport { useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { useDelayedIsLoading } from '../Loader/Loader.hooks';\nimport styles from './PacmanLoader.module.scss';\n\ninterface PacmanLoaderProps {\n isLoading: boolean;\n delay?: number;\n className?: string;\n}\n\nconst PacmanLoader = (props: PacmanLoaderProps) => {\n const isLoading = useDelayedIsLoading(props.isLoading, props.delay || 0);\n\n const pacmanRef = useRef<HTMLDivElement>(null);\n\n return (\n <CSSTransition\n nodeRef={pacmanRef}\n in={isLoading}\n timeout={200}\n classNames={{\n enter: styles.Visible,\n enterDone: styles.Visible,\n }}\n unmountOnExit\n appear\n >\n <div ref={pacmanRef} className={classNames(styles.Pacman, props.className)} aria-hidden>\n <div className={classNames(styles['Pacman-icon'])}>\n <div />\n <div />\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n </CSSTransition>\n );\n};\n\nexport default PacmanLoader;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport classnames from 'classnames';\nimport type * as React from 'react';\n\nimport styles from './RadioGroup.module.scss';\n\nconst RadioGroupRoot = (props: React.ComponentProps<typeof RadixRadioGroup.Root>) => {\n return <RadixRadioGroup.Root {...props}>{props.children}</RadixRadioGroup.Root>;\n};\n\ntype RadioGroupItemProps = React.ComponentProps<typeof RadixRadioGroup.Item> & {\n id: string;\n label: React.ReactNode;\n classname?: string;\n 'aria-labelledby'?: string;\n};\n\nconst RadioGroupItem = ({ className, ...props }: RadioGroupItemProps) => {\n const classes = classnames(styles.Item, className);\n const labelId = `label_${props.id}`;\n\n return (\n <div className={classes}>\n <RadixRadioGroup.Item\n className={styles.Input}\n {...props}\n // aria-labelledby={props['aria-labelledby'] || labelId}\n >\n <RadixRadioGroup.Indicator className={styles.Indicator} />\n </RadixRadioGroup.Item>\n <label id={labelId} className={styles.Label} htmlFor={props.id}>\n {props.label}\n </label>\n </div>\n );\n};\n\nconst RadioGroup = {\n Root: RadioGroupRoot,\n Item: RadioGroupItem,\n};\n\nexport default RadioGroup;\n","// extracted by mini-css-extract-plugin\nexport default {\"Item\":\"UPy0YWzN\",\"Input\":\"rD4M3AMo\",\"Indicator\":\"pADozc2c\",\"scaleAnimation\":\"O7DAUoIl\",\"Label\":\"Ctt6Ndjq\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from 'classnames';\nimport type { PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { useEffect, useId, useImperativeHandle, useRef } from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport styles from './Search.module.scss';\nimport type { SearchSize } from './Search.types';\nimport SearchActions from './SearchActions';\nimport SearchContent from './SearchContent';\nimport SearchInputSlot from './SearchInputSlot';\nimport SearchRoot from './SearchRoot';\n\nexport interface SearchProps {\n className?: string;\n inputText?: string;\n defaultValue?: string;\n inputPlaceholder: string;\n noBorderRadius?: boolean;\n focusOnMount?: boolean;\n size: SearchSize;\n hide?: boolean;\n setInputText?: (newText: string) => void;\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onReset?: () => void;\n onInputClick?: () => void;\n onInputFocus?: () => void;\n onInputBlur?: () => void;\n onEnterPress?: () => void;\n onEscapePress?: () => void;\n 'aria-haspopup'?: React.ComponentPropsWithoutRef<'input'>['aria-haspopup'];\n 'aria-label'?: React.ComponentPropsWithoutRef<'input'>['aria-label'];\n description?: string;\n submitLabel?: string;\n}\n\nconst Search = React.forwardRef<HTMLInputElement, PropsWithChildren<SearchProps>>(\n (props, inputRef) => {\n const localRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(inputRef, () => localRef.current as HTMLInputElement);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.currentTarget;\n props.setInputText?.(value);\n props.onInputChange?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && props.onEnterPress) {\n localRef.current?.blur();\n props.onEnterPress();\n }\n\n if (e.key === 'Escape' && props.onEscapePress) {\n localRef.current?.blur();\n props.onEscapePress();\n }\n };\n\n useEffect(() => {\n if (props.focusOnMount) {\n localRef.current?.focus();\n }\n }, [props.focusOnMount, localRef]);\n\n const descriptionId = useId();\n\n return (\n <SearchRoot\n size={props.size}\n hide={props.hide}\n className={classNames(props.inputText && styles['has-value'], props.className)}\n >\n <SearchContent>\n {/* https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby - elements referenced by describedby can be hidden */}\n {props.description && (\n <VisuallyHidden aria-hidden>\n <span id={descriptionId}>{props.description}</span>\n </VisuallyHidden>\n )}\n <SearchInputSlot\n data-testid=\"search-input\"\n ref={localRef}\n type=\"search\"\n enterKeyHint=\"search\"\n defaultValue={props.defaultValue}\n placeholder={props.inputPlaceholder}\n onChange={handleInputChange}\n value={props.inputText}\n onFocus={props.onInputFocus}\n onBlur={props.onInputBlur}\n onKeyDown={handleKeyDown}\n onClick={props.onInputClick}\n aria-haspopup={props['aria-haspopup']}\n aria-label={props.inputPlaceholder}\n aria-describedby={props.description && descriptionId}\n />\n <SearchActions\n submitLabel={props.submitLabel}\n inputValue={props.inputText}\n onEnterPress={props.onEnterPress}\n clearButtonProps={{ onClick: props.onReset }}\n />\n </SearchContent>\n\n {props.children}\n </SearchRoot>\n );\n },\n);\n\nexport default Search;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { CloseIcon, SearchIcon } from '@coop/icons';\nimport classNames from 'classnames';\nimport type * as React from 'react';\n\nimport { ChipIconButton } from '../Chip';\nimport { Icon } from '../Icon';\nimport styles from './Search.module.scss';\n\nconst SearchActions = (props: {\n inputValue?: string;\n submitLabel?: string;\n onEnterPress?: () => void;\n clearButtonRef?: React.RefObject<HTMLButtonElement>;\n clearButtonProps?: React.ComponentPropsWithoutRef<'button'>;\n}) => {\n return (\n <div className={styles['Search-actions']}>\n {props.inputValue && props.clearButtonProps && props.clearButtonProps.onClick && (\n <ChipIconButton\n ref={props.clearButtonRef}\n icon={CloseIcon}\n label=\"Rensa\"\n theme=\"whiteGreen\"\n size={24}\n {...props.clearButtonProps}\n onClick={props.clearButtonProps.onClick}\n />\n )}\n {props.inputValue && props.onEnterPress ? (\n <ChipIconButton\n size={32}\n theme=\"greenCta\"\n icon={SearchIcon}\n onClick={props.onEnterPress}\n label={props.submitLabel || 'Sök'}\n />\n ) : (\n <div aria-hidden className={classNames(styles['Search-icon'])}>\n <Icon icon={SearchIcon} />\n </div>\n )}\n </div>\n );\n};\n\nexport default SearchActions;\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './Search.module.scss';\n\nconst SearchContent = React.forwardRef<HTMLDivElement, React.PropsWithChildren>((props, ref) => {\n return (\n <div ref={ref} className={classNames(styles['Search-content'], 'u-noPrint')}>\n {props.children}\n </div>\n );\n});\n\nexport default SearchContent;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './Search.module.scss';\n\nconst SearchInputSlot = React.forwardRef<HTMLInputElement, React.ComponentProps<'input'>>(\n (props, ref) => {\n return (\n <input\n ref={ref}\n size={1} // Enables it to shrink below default 20 which is needed for small screens\n {...props}\n className={classNames(styles['Search-input'], props.className)}\n />\n );\n },\n);\n\nexport default SearchInputSlot;\n","import styles from './Search.module.scss';\nimport type { SearchSize } from './Search.types';\n\nexport const getClassForSize = (theme: SearchSize) => {\n switch (theme) {\n case 'small':\n return styles['Search--small'];\n case 'medium':\n return styles['Search--medium'];\n case 'large':\n return styles['Search--large'];\n default:\n return '';\n }\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport styles from './Search.module.scss';\nimport type { SearchBarOptions } from './Search.types';\nimport { getClassForSize } from './Search.utils';\n\ninterface SearchProps extends SearchBarOptions {\n className?: string;\n}\n\nconst SearchRoot = React.forwardRef<HTMLDivElement, React.PropsWithChildren<SearchProps>>(\n (props, ref) => {\n return (\n <div\n ref={ref}\n className={classNames(\n styles.Search,\n props.hide && styles['Search--hidden'],\n getClassForSize(props.size),\n props.className,\n )}\n data-test=\"search\"\n >\n {props.children}\n </div>\n );\n },\n);\n\nexport default SearchRoot;\n","import type * as React from 'react';\nimport { type AriaPopoverProps, Overlay, usePopover } from 'react-aria';\nimport type { OverlayTriggerState } from 'react-stately';\n\nimport styles from './SearchAutocomplete.module.scss';\n\ninterface PopoverProps extends AriaPopoverProps {\n style?: React.CSSProperties;\n children: React.ReactNode;\n state: OverlayTriggerState;\n}\n\nconst Popover = ({ children, state, ...props }: PopoverProps) => {\n const { popoverProps } = usePopover(props, state);\n\n const style = { ...popoverProps.style, ...props.style };\n\n return (\n <Overlay>\n <div\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...popoverProps}\n className={styles.Popover}\n ref={props.popoverRef as React.RefObject<HTMLDivElement>}\n style={style}\n >\n {children}\n </div>\n </Overlay>\n );\n};\n\nexport default Popover;\n","// extracted by mini-css-extract-plugin\nexport default {\"Popover\":\"bXxScuMl\",\"ItemLabel\":\"_KG9rfUt\",\"HintHighlight\":\"j6ln53QE\"};","/* eslint-disable react/button-has-type */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { useResizeObserver } from '@coop/hooks';\n/* eslint-disable react/jsx-props-no-spreading */\nimport type { ComboBoxProps } from '@react-types/combobox';\nimport { useCallback, useState } from 'react';\nimport * as React from 'react';\nimport { useButton } from 'react-aria';\nimport { ComboBoxStateContext } from 'react-aria-components';\nimport { type ComboBoxStateOptions, Item, useComboBoxState } from 'react-stately';\n\nimport {\n type ResultListBoxStateShowProps,\n DynamicListBox,\n ListBoxItemIcon,\n} from '../ListBox/ListBox';\nimport {\n type SearchBarOptions,\n SearchActions,\n SearchContent,\n SearchInputSlot,\n SearchRoot,\n} from '../Search';\nimport Popover from './Popover';\nimport { useSearchAutocomplete } from './SearchAutocomplete.hooks';\nimport styles from './SearchAutocomplete.module.scss';\nimport { hightlightAutocompleteSubstring } from './SearchAutocomplete.utils';\n\ninterface SearchAutocompleteProps<T extends object>\n extends Omit<ComboBoxProps<T>, 'label'>,\n SearchBarOptions,\n ResultListBoxStateShowProps {\n defaultFilter?: ComboBoxStateOptions<T>['defaultFilter'];\n submitLabel?: string;\n onSubmit?: (value: string, item: T | null) => void;\n overlayMaxHeight?: number;\n}\n\nconst SearchAutocomplete = <T extends object>(props: SearchAutocompleteProps<T>) => {\n const outerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listBoxRef = React.useRef(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const clearButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const state = useComboBoxState({\n ...props,\n allowsCustomValue: true,\n allowsEmptyCollection: true, // search must always have a state of no results if no items are found\n });\n\n const {\n clearButtonProps: ariaClearButtonProps,\n inputProps,\n listBoxProps,\n descriptionProps,\n } = useSearchAutocomplete(\n {\n ...props,\n inputRef,\n listBoxRef,\n popoverRef,\n },\n state,\n );\n\n const { buttonProps } = useButton(ariaClearButtonProps, clearButtonRef);\n\n const [menuWidth, setMenuWidth] = useState<string | null>(null);\n const onResize = useCallback(() => {\n const outerRect = outerRef.current?.getBoundingClientRect();\n if (outerRect) {\n setMenuWidth(`${outerRect.right - outerRect.left}px`);\n }\n }, [outerRef, setMenuWidth]);\n\n useResizeObserver({ ref: outerRef, boxOptions: 'border-box', onResize });\n\n const description =\n state.collection.size !== 0\n ? 'Förslag visas nedan'\n : 'Sökresultaten kommer att visas medan du skriver';\n\n return (\n <ComboBoxStateContext.Provider value={state}>\n <SearchRoot ref={outerRef} size={props.size} hide={props.hide}>\n <SearchContent ref={triggerRef}>\n <SearchInputSlot\n ref={inputRef}\n {...inputProps}\n aria-label={props.placeholder}\n />\n <SearchActions\n inputValue={state.inputValue}\n onEnterPress={\n props.onSubmit\n ? () => props.onSubmit?.(state.inputValue, null)\n : undefined\n }\n submitLabel={props.submitLabel}\n clearButtonRef={clearButtonRef}\n clearButtonProps={buttonProps}\n />\n <span {...descriptionProps} style={{ display: 'none' }}>\n {description}\n </span>\n </SearchContent>\n {state.isOpen && (\n <Popover\n state={state}\n popoverRef={popoverRef}\n triggerRef={triggerRef}\n offset={12}\n style={\n {\n '--coop-listbox-trigger-width': menuWidth,\n } as React.CSSProperties\n }\n placement=\"bottom start\"\n maxHeight={props.overlayMaxHeight}\n isNonModal\n >\n <DynamicListBox\n {...listBoxProps}\n listBoxRef={listBoxRef}\n state={state}\n aria-label=\"förslag\"\n /* Show empty state only when full search (a.k.a. \"go to all results\") action is NOT available\n * Autocomplete is not a full search thats why we shouldnt say that results are empty (we dont know that yet), its only the suggestions that are empty\n */\n showEmptyStateWhen={props.showEmptyStateWhen && !props.onSubmit}\n renderEmptyState={\n props.renderEmptyState || (() => 'Vi hittar ingen träff')\n }\n showErrorStateWhen={props.showErrorStateWhen}\n renderErrorState={props.renderErrorState || (() => 'Fel vid sökning')}\n itemClassName={styles.ItemLabel}\n />\n </Popover>\n )}\n </SearchRoot>\n </ComboBoxStateContext.Provider>\n );\n};\n\nexport default SearchAutocomplete;\n\nexport const SearchAutocompleteItem = Item;\n\nexport const SearchAutocompleteItemIcon = ListBoxItemIcon;\n\nexport const SearchAutocompleteItemLabel = ({ children }: { children: string }) => {\n const state = React.useContext(ComboBoxStateContext);\n if (!state) {\n return children;\n }\n\n const { pre, post, highlighted } = hightlightAutocompleteSubstring(children, state.inputValue);\n\n return (\n <div>\n {pre && <span>{pre}</span>}\n {highlighted && <span className={styles.HintHighlight}>{highlighted}</span>}\n {post && <span>{post}</span>}\n </div>\n );\n};\n","import type { RefObject } from 'react';\nimport { mergeProps, useComboBox, useSearchField } from 'react-aria';\nimport type { ComboBoxState } from 'react-stately';\n\ninterface SearchAutocompleteOptions<T> {\n placeholder?: string;\n inputRef: RefObject<HTMLInputElement | null>;\n popoverRef: RefObject<HTMLDivElement | null>;\n listBoxRef: RefObject<HTMLElement | null>;\n onSubmit?: (value: string, item: T | null) => void;\n}\n\nexport const useSearchAutocomplete = <T>(\n props: SearchAutocompleteOptions<T>,\n state: ComboBoxState<T>,\n) => {\n const { popoverRef, inputRef, listBoxRef, onSubmit, ...otherProps } = props;\n\n const { inputProps, clearButtonProps, labelProps, descriptionProps } = useSearchField(\n {\n ...otherProps,\n value: state.inputValue,\n onChange: state.setInputValue,\n autoComplete: 'off',\n label: props.placeholder,\n onClear: () => {\n state.setInputValue('');\n state.close();\n },\n onSubmit: (value) => {\n // Prevent submission from search field if menu item was selected\n if (state.selectionManager.focusedKey === null) {\n onSubmit?.(value, null);\n }\n },\n onFocus: () => {\n // Open when in put alreday has some value. Input value is retained i.e. after outside click and user might want to see the results again\n if (state.inputValue) {\n state.open();\n }\n },\n },\n {\n value: state.inputValue,\n setValue: state.setInputValue,\n },\n inputRef,\n );\n\n const { listBoxProps, inputProps: comboBoxInputProps } = useComboBox(\n {\n ...otherProps,\n popoverRef,\n listBoxRef,\n inputRef,\n label: props.placeholder,\n // those will be merged with the inputProps from useSearchField\n onFocus: undefined,\n onFocusChange: undefined,\n onBlur: undefined,\n onKeyDown: undefined,\n onKeyUp: undefined,\n validate: undefined,\n },\n state,\n );\n\n return {\n labelProps,\n descriptionProps,\n inputProps: mergeProps(comboBoxInputProps, inputProps),\n listBoxProps,\n clearButtonProps,\n };\n};\n","import { type RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends HTMLElement>(options: {\n ref: RefObject<T>;\n boxOptions?: ResizeObserverBoxOptions;\n onResize: () => void;\n}) => {\n const { ref, boxOptions, onResize } = options;\n\n useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return;\n }\n\n window.addEventListener('resize', onResize, false);\n\n const resizeObserverInstance = new window.ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n\n onResize();\n });\n resizeObserverInstance.observe(element, { box: boxOptions });\n\n return () => {\n if (element) {\n resizeObserverInstance.unobserve(element);\n }\n };\n }, [onResize, ref, boxOptions]);\n};\n","export const hightlightAutocompleteSubstring = (input: string, hint: string) => {\n if (!input || !hint) {\n return {\n pre: input,\n highlighted: null,\n post: null,\n };\n }\n\n const inputLowercase = input?.toLowerCase();\n const hintLowercase = hint?.toLowerCase();\n\n let pre = '';\n let highlighted = '';\n let post = '';\n\n // Check if the query matches any part of the text\n if (hintLowercase && inputLowercase.includes(hintLowercase)) {\n const startIndex = inputLowercase.indexOf(hintLowercase);\n const endIndex = startIndex + hintLowercase.length;\n\n pre = input.slice(0, startIndex);\n highlighted = input.slice(startIndex, endIndex);\n post = input.slice(endIndex);\n } else {\n pre = input;\n }\n\n return {\n pre,\n highlighted,\n post,\n };\n};\n","'use client';\n\n/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport {\n Button as AriaButton,\n Popover as AriaPopover,\n Select as AriaSelect,\n SelectValue as AriaSelectValue,\n} from 'react-aria-components';\n\nimport { ListBox, ListBoxItem } from '../ListBox';\nimport { useIsInsideModal } from '../Modal';\nimport styles from './Select.module.scss';\n\nexport const Select = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof AriaSelect> & {\n 'aria-label': string;\n renderTrigger: (children: React.ReactNode) => React.ReactNode;\n popoverProps?: React.ComponentProps<typeof AriaPopover>;\n }\n>(({ renderTrigger, ...props }, forwardedRef) => {\n const isInsideModal = useIsInsideModal();\n\n return (\n <AriaSelect\n ref={forwardedRef}\n {...props}\n className={classNames(props.className, styles.Container)}\n >\n {renderTrigger(\n <AriaButton>\n <AriaSelectValue />\n </AriaButton>,\n )}\n <AriaPopover\n {...props.popoverProps}\n className={classNames(styles.Popover, props.popoverProps?.className)}\n isNonModal={isInsideModal} // if isNonModal is false and Select is in another modal, in Firefox the popover opens and closes immediately\n >\n <ListBox>{props.children}</ListBox>\n </AriaPopover>\n </AriaSelect>\n );\n});\n\nexport const SelectItem = (props: React.ComponentProps<typeof ListBoxItem>) => {\n return <ListBoxItem {...props}>{props.children}</ListBoxItem>;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"gRWV021V\",\"Popover\":\"FNklAtnZ\"};","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"v5ga9oxE\",\"Show\":\"Ctwqr1Hn\",\"fadeInFromBottom\":\"bow7Nw2N\",\"Hide\":\"ukTHsYFM\",\"fadeOutToTop\":\"D_Na4SyN\",\"NoAnimation\":\"h5BArB58\",\"Snackbar\":\"JN_hwGvR\",\"SnackbarWithAction\":\"MUzJ5p6O\",\"Size48\":\"O_CHwijs\"};","import classNames from 'classnames';\nimport type * as React from 'react';\n\nimport styles from './Snackbar.module.scss';\n\ninterface SnackbarProps {\n children?: React.ReactNode;\n actionSlot?: React.ReactNode;\n size: SnackbarSizes;\n style?: React.CSSProperties;\n noAnimation?: boolean;\n}\n\ntype SnackbarSizes = 48;\n\nconst Snackbar = (props: SnackbarProps) => {\n const classes = classNames(\n styles.Snackbar,\n props.size === 48 && styles.Size48,\n !!props.actionSlot && styles.SnackbarWithAction,\n styles.Show,\n props.noAnimation && styles.NoAnimation,\n );\n\n return (\n <div className={styles.Container}>\n <div className={classes} style={props.style}>\n {props.children}\n {props.actionSlot && <div className={styles.Action}>{props.actionSlot}</div>}\n </div>\n </div>\n );\n};\n\nexport default Snackbar;\n","/* eslint-disable jsx-a11y/label-has-associated-control */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { splitCustomObjectFromIntersection } from '@coop/utils';\nimport * as React from 'react';\nimport { type TextFieldProps } from 'react-aria-components';\n\nimport { TextField } from '../TextField';\n\ninterface TextAreaCustomProps {\n label?: string;\n helperText?: string;\n validationText?: string;\n placeholder?: string;\n rows?: number;\n postfixSlot?: React.ReactNode;\n /**\n * For more info see TextInput component.\n */\n necessityIndicator?: 'label' | 'none';\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaCustomProps & TextFieldProps>(\n (props, ref) => {\n const charCount = props.value?.length || 0;\n\n const { custom: customProps, rest: textAreaProps } = splitCustomObjectFromIntersection<\n TextAreaCustomProps,\n TextFieldProps\n >(props, {\n label: props.label,\n helperText: props.helperText,\n validationText: props.validationText,\n rows: props.rows,\n postfixSlot: props.postfixSlot,\n necessityIndicator: props.necessityIndicator,\n placeholder: props.placeholder,\n });\n\n return (\n <TextField.Root\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...textAreaProps}\n // We mostly use the inputs with React Hook Form, so the validation behavior must be set to aria\n validationBehavior={textAreaProps.validationBehavior ?? 'aria'}\n >\n <TextField.TopContainer>\n <TextField.Label\n label={customProps.label}\n isRequired={textAreaProps.isRequired}\n necessityIndicator={customProps.necessityIndicator}\n />\n <TextField.HelperText helperText={customProps.helperText} />\n </TextField.TopContainer>\n\n <TextField.InputContainer>\n <TextField.TextArea\n ref={ref}\n rows={customProps.rows}\n placeholder={customProps.placeholder}\n />\n {props.postfixSlot && (\n <TextField.Postfix>{props.postfixSlot}</TextField.Postfix>\n )}\n </TextField.InputContainer>\n\n {(customProps.validationText || textAreaProps.maxLength !== undefined) && (\n <TextField.BottomContainer>\n <div>\n {customProps.validationText && (\n <TextField.ValidationError\n validationText={customProps.validationText}\n />\n )}\n </div>\n <div style={{ flexShrink: 0 }}>\n {textAreaProps.maxLength !== undefined && (\n <>\n {charCount}/{textAreaProps.maxLength}\n </>\n )}\n </div>\n </TextField.BottomContainer>\n )}\n </TextField.Root>\n );\n },\n);\n\nexport default TextArea;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"mzNAH6Pz\",\"TopContainer\":\"jU8P02pG\",\"BottomContainer\":\"dxPSebVp\",\"InputContainer\":\"KhcWGy_U\",\"Input\":\"FB9Zekja\",\"TextArea\":\"DJjSRY6R\",\"PostfixSlot\":\"YyrA4WeF\",\"PrefixSlot\":\"_XIGwGkW\",\"HelperText\":\"z4f00Lmh\",\"Label\":\"FvaO26Ls\",\"ValidationText\":\"zssnVrz1\"};","/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from 'classnames';\nimport React from 'react';\nimport type { TextAreaProps, TextFieldProps } from 'react-aria-components';\nimport {\n FieldError as AriaFieldError,\n Input as AriaInput,\n Label as AriaLabel,\n Text as AriaText,\n TextArea as AriaTextArea,\n TextField as AriaTextField,\n} from 'react-aria-components';\n\nimport styles from './TextField.module.scss';\n\nconst TextFieldRoot = (props: TextFieldProps) => (\n <AriaTextField\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n className={classNames(props.className, styles.Container)}\n >\n {props.children}\n </AriaTextField>\n);\n\nconst TextFieldTopContainer = (props: { children: React.ReactNode }) => (\n <div className={styles.TopContainer}>{props.children}</div>\n);\n\nconst TextFieldInputContainer = (props: { children: React.ReactNode }) => (\n <div className={styles.InputContainer}>{props.children}</div>\n);\n\nconst TextFieldBottomContainer = (props: { children: React.ReactNode }) => (\n <div className={styles.BottomContainer}>{props.children}</div>\n);\n\nconst TextFieldLabel = (props: {\n label?: string;\n isRequired?: boolean;\n necessityIndicator?: 'label' | 'none';\n}) => {\n let indicator = props.necessityIndicator;\n if (!props.label) {\n return null;\n }\n\n // This case is for backwards compatibility. If the field is required, but the indicator is not set, we default to 'label'.\n // This essentially replaces old * indicator with (obligatoriskt) text if the indicator is not yet set.\n // This is to avoid breaking changes in the UI after new TextInput is deployed.\n if (props.isRequired && indicator === undefined) {\n indicator = 'label';\n }\n\n if (!indicator || indicator === 'none') {\n return <AriaLabel className={styles.Label}>{props.label}</AriaLabel>;\n }\n\n return (\n <AriaLabel className={classNames(styles.Label)}>\n {props.label}\n {props.isRequired ? (\n // Required is dealt with aria-required in the input. tehre is no ARIA for optional fields, so they must be part of the label, available for screenreaders.\n <span aria-hidden> (obligatoriskt)</span>\n ) : (\n <span> (frivilligt)</span>\n )}\n </AriaLabel>\n );\n};\n\nconst TextFieldHelperText = (props: { helperText?: string; disabledReason?: React.ReactNode }) =>\n (props.helperText || props.disabledReason) && (\n <AriaText slot=\"description\" className={styles.HelperText}>\n {[props.helperText, props.disabledReason].filter(Boolean).join('. ')}\n </AriaText>\n );\n\nconst TextFieldValidationError = (props: { validationText?: string }) =>\n props.validationText && (\n <AriaFieldError className={styles.ValidationText}>{props.validationText}</AriaFieldError>\n );\n\nconst TextFieldPostfix = (props: { children: React.ReactNode }) =>\n props.children && <div className={styles.PostfixSlot}>{props.children}</div>;\n\nconst TextFieldPrefix = (props: { children: React.ReactNode }) =>\n props.children && <div className={styles.PrefixSlot}>{props.children}</div>;\n\nconst TextFieldInput = React.forwardRef<HTMLInputElement, {}>((_props, ref) => (\n <AriaInput\n ref={ref}\n className={({ isInvalid }) => classNames(styles.Input, isInvalid && styles['is-invalid'])}\n />\n));\n\nconst TextFieldTextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>((props, ref) => (\n <AriaTextArea\n ref={ref}\n {...props}\n className={({ isInvalid }) =>\n classNames(props.className, styles.TextArea, isInvalid && styles['is-invalid'])\n }\n />\n));\n\nconst TextField = {\n Root: TextFieldRoot,\n TopContainer: TextFieldTopContainer,\n InputContainer: TextFieldInputContainer,\n BottomContainer: TextFieldBottomContainer,\n Label: TextFieldLabel,\n HelperText: TextFieldHelperText,\n ValidationError: TextFieldValidationError,\n Prefix: TextFieldPrefix,\n Postfix: TextFieldPostfix,\n Input: TextFieldInput,\n TextArea: TextFieldTextArea,\n};\n\nexport default TextField;\n","/* eslint-disable jsx-a11y/label-has-associated-control */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { splitCustomObjectFromIntersection } from '@coop/utils';\nimport * as React from 'react';\nimport type { TextFieldProps } from 'react-aria-components';\n\nimport { TextField } from '../TextField';\n\ninterface TextInputCustomProps {\n label?: string;\n helperText?: string;\n validationText?: string;\n disabledReason?: React.ReactNode;\n postfixSlot?: React.ReactNode;\n /**\n * In certain cases it is needed to hide the indicator that a field is required or optional.\n * It might depend on the context of the form and how many required fields there is versus optional ones.\n * If most fields in a form are required - show indicator for optional ones.\n * If most fields in a form are optional - show indicator for required ones.\n * By default the label indicator is shown.\n * @default \"label\"\n */\n necessityIndicator?: 'label' | 'none';\n}\n\n// Override React Aria's TextFieldProps to add comments for some props\ninterface TextFieldOverridenProps {\n /**\n * @deprecated Use helperText instead with a correct UX copy. Placeholder will be removed from TextInput for A11Y reasons.\n * */\n placeholder?: string;\n\n /** Makes a field required for A11Y purposes. It does not add a visual cue when necessityIndicator is set to 'none'. */\n isRequired?: boolean;\n\n /** Use disabledReason instead. It will make the field read only (focusable) and provide the text why its disabled in the help text label. */\n isDisabled?: never;\n}\n\nconst TextInput = React.forwardRef<\n HTMLInputElement,\n TextInputCustomProps & TextFieldProps & TextFieldOverridenProps\n>((props, ref) => {\n const { custom: customProps, rest: textInputProps } = splitCustomObjectFromIntersection<\n TextInputCustomProps,\n TextFieldProps\n >(props, {\n label: props.label,\n helperText: props.helperText,\n validationText: props.validationText,\n disabledReason: props.disabledReason,\n postfixSlot: props.postfixSlot,\n necessityIndicator: props.necessityIndicator,\n });\n\n return (\n <TextField.Root\n {...textInputProps}\n isReadOnly={!!customProps.disabledReason}\n // We mostly use the inputs with React Hook Form, so the validation behavior must be set to aria\n validationBehavior={textInputProps.validationBehavior ?? 'aria'}\n >\n <TextField.TopContainer>\n <TextField.Label\n label={customProps.label}\n isRequired={textInputProps.isRequired}\n necessityIndicator={props.necessityIndicator}\n />\n <TextField.HelperText\n helperText={customProps.helperText}\n disabledReason={customProps.disabledReason}\n />\n </TextField.TopContainer>\n\n <TextField.InputContainer>\n <TextField.Input ref={ref} />\n {props.postfixSlot && <TextField.Postfix>{props.postfixSlot}</TextField.Postfix>}\n </TextField.InputContainer>\n\n {customProps.validationText && (\n <TextField.BottomContainer>\n <TextField.ValidationError validationText={customProps.validationText} />\n </TextField.BottomContainer>\n )}\n </TextField.Root>\n );\n});\n\nexport default TextInput;\n","import { useEffect, useRef } from 'react';\n\nexport const useElementEvent = (\n target: EventTarget | null,\n event: string,\n callback: (e: Event | undefined) => void,\n runImmediately: boolean,\n addOptions: boolean | AddEventListenerOptions | undefined = undefined,\n when: boolean = true,\n) => {\n const addOptionsRef = useRef(addOptions);\n\n useEffect(() => {\n if (when && target) {\n // Add event listener\n target.addEventListener(event, callback, addOptionsRef.current);\n\n // Call handler right away so state gets updated with initial window size\n if (runImmediately) {\n callback(undefined);\n }\n }\n // Remove event listener on cleanup\n return () => target?.removeEventListener(event, callback);\n }, [when, target, event, runImmediately, callback]);\n};\n","import { useEffect } from 'react';\n\nexport const useInitialFocus = (ref: React.RefObject<HTMLElement>, triggerFocus: boolean) => {\n useEffect(() => {\n if (triggerFocus && ref.current) {\n ref.current.focus();\n }\n }, [ref, triggerFocus]);\n\n return ref;\n};\n","import type React from 'react';\nimport { useCallback, useEffect, useRef } from 'react';\n\nexport const useOutsideClick = (\n ref: React.MutableRefObject<HTMLElement | null>,\n onClickOutside: ((e: Event) => void) | undefined,\n whenTrigger: boolean,\n outsideRef?: React.MutableRefObject<HTMLElement | null>,\n) => {\n const savedHandler = useRef(onClickOutside);\n useEffect(() => {\n savedHandler.current = onClickOutside;\n });\n\n const memoizedCallback = useCallback(\n (event: Event) => {\n if (ref.current && savedHandler.current) {\n // if outsideRef is provided, check if the click was done on it or its descendants\n if (outsideRef && outsideRef.current) {\n const clickedOnOutsideRefDescendants = outsideRef.current.contains(\n event.target as Element,\n );\n if (clickedOnOutsideRefDescendants) {\n savedHandler.current(event);\n }\n } else {\n // if outsideRef is not provided, check if the click was done outside the ref\n const clickedOutsideOfRef = !ref.current.contains(event.target as Element);\n if (clickedOutsideOfRef) {\n savedHandler.current(event);\n }\n }\n }\n },\n [outsideRef, ref],\n );\n\n useEffect(() => {\n if (whenTrigger) {\n document.addEventListener('click', memoizedCallback, true);\n document.addEventListener('ontouchstart', memoizedCallback, true);\n\n return () => {\n document.removeEventListener('click', memoizedCallback, true);\n document.removeEventListener('ontouchstart', memoizedCallback, true);\n };\n }\n }, [ref, onClickOutside, whenTrigger, memoizedCallback]);\n};\n\nexport const useMultipleOutsideClickCallbacked = (\n refs: React.MutableRefObject<HTMLElement>[],\n onClickOutside: (e: Event) => void,\n whenTrigger: boolean,\n options: {\n conditionStrategy: 'meetAll' | 'meetAny';\n },\n) => {\n const savedHandler = useRef(onClickOutside);\n useEffect(() => {\n savedHandler.current = onClickOutside;\n });\n\n const memoizedCallback = useCallback(\n (e: Event) => {\n if (whenTrigger && refs && refs.length && savedHandler.current) {\n const containsCondition = (elem: HTMLElement) =>\n elem && !elem.contains(e.target as Element);\n\n const elements = refs.map((x) => x.current).filter(Boolean);\n\n if (options.conditionStrategy === 'meetAll') {\n const conditionMetByAll = elements.every(containsCondition);\n\n if (conditionMetByAll) {\n savedHandler.current(e);\n }\n return;\n }\n\n if (options.conditionStrategy === 'meetAny') {\n const conditionMetBySome = elements.some(containsCondition);\n if (conditionMetBySome) {\n savedHandler.current(e);\n }\n }\n }\n },\n [options.conditionStrategy, refs, whenTrigger],\n );\n\n useEffect(() => {\n if (whenTrigger) {\n document.addEventListener('click', memoizedCallback, true);\n document.addEventListener('ontouchstart', memoizedCallback, true);\n\n return () => {\n document.removeEventListener('click', memoizedCallback, true);\n document.removeEventListener('ontouchstart', memoizedCallback, true);\n };\n }\n }, [refs, onClickOutside, whenTrigger, memoizedCallback]);\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useSetTimeout = (condition: boolean, timeout: number, callback: () => void) => {\n const timeoutHandle = useRef<NodeJS.Timeout | null>(null);\n\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n if (condition) {\n timeoutHandle.current = setTimeout(() => {\n callbackRef.current();\n }, timeout);\n }\n\n return () => {\n if (timeoutHandle.current) {\n clearTimeout(timeoutHandle.current);\n }\n };\n }, [condition, timeout]);\n};\n","import { pick } from 'lodash-es';\n\ntype AllOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T];\ntype AllNonOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T];\n\ntype OptionalToMaybeUndefined<T> = { [K in AllOptionalKeys<T>]: T[K] | undefined } & {\n [K in AllNonOptionalKeys<T>]: T[K];\n};\n\nexport const splitCustomObjectFromIntersection = <TCustom extends {}, TResult extends {}>(\n whole: TCustom & TResult,\n custom: OptionalToMaybeUndefined<TCustom>,\n) => {\n const keysNotFromCustomProps = Object.keys(whole).filter(\n (key) => !Object.keys(custom).includes(key),\n );\n\n const rest = pick(whole, keysNotFromCustomProps) as TResult;\n return { custom, rest };\n};\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.8.4\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.2.4';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot?.children || []), ...(elementToCheck.assignedElements?.() || []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n let isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","/**\n * Swiper React 11.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 2, 2025\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","function $e42e1063c40fb3ef$export$b9ecd428b558ff10(originalEventHandler, ourEventHandler, { checkForDefaultPrevented: checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler === null || originalEventHandler === void 0 || originalEventHandler(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n };\n}\n\n\n\n\nexport {$e42e1063c40fb3ef$export$b9ecd428b558ff10 as composeEventHandlers};\n//# sourceMappingURL=index.mjs.map\n","import $kVwnw$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $kVwnw$forwardRef, createElement as $kVwnw$createElement} from \"react\";\nimport {Primitive as $kVwnw$Primitive} from \"@radix-ui/react-primitive\";\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/ const $ea1ef594cf570d83$var$NAME = 'VisuallyHidden';\nconst $ea1ef594cf570d83$export$439d29a4e110a164 = /*#__PURE__*/ $kVwnw$forwardRef((props, forwardedRef)=>{\n return /*#__PURE__*/ $kVwnw$createElement($kVwnw$Primitive.span, $kVwnw$babelruntimehelpersesmextends({}, props, {\n ref: forwardedRef,\n style: {\n // See: https://github.com/twbs/bootstrap/blob/master/scss/mixins/_screen-reader.scss\n position: 'absolute',\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n ...props.style\n }\n }));\n});\n/*#__PURE__*/ Object.assign($ea1ef594cf570d83$export$439d29a4e110a164, {\n displayName: $ea1ef594cf570d83$var$NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ const $ea1ef594cf570d83$export$be92b6f5f03c0fe9 = $ea1ef594cf570d83$export$439d29a4e110a164;\n\n\n\n\nexport {$ea1ef594cf570d83$export$439d29a4e110a164 as VisuallyHidden, $ea1ef594cf570d83$export$be92b6f5f03c0fe9 as Root};\n//# sourceMappingURL=index.mjs.map\n","import {Children as $eOI90$Children, createElement as $eOI90$createElement, Fragment as $eOI90$Fragment, cloneElement as $eOI90$cloneElement} from \"react\";\nimport {Root as $eOI90$Root} from \"@radix-ui/react-visually-hidden\";\n\n\n\nconst $08b6689415b2f49a$var$NAME = 'AccessibleIcon';\nconst $08b6689415b2f49a$export$5aec92af04ace2d2 = ({ children: children , label: label })=>{\n const child = $eOI90$Children.only(children);\n return /*#__PURE__*/ $eOI90$createElement($eOI90$Fragment, null, /*#__PURE__*/ $eOI90$cloneElement(child, {\n // accessibility\n 'aria-hidden': 'true',\n focusable: 'false' // See: https://allyjs.io/tutorials/focusing-in-svg.html#making-svg-elements-focusable\n }), /*#__PURE__*/ $eOI90$createElement($eOI90$Root, null, label));\n};\n/*#__PURE__*/ Object.assign($08b6689415b2f49a$export$5aec92af04ace2d2, {\n displayName: $08b6689415b2f49a$var$NAME\n});\nconst $08b6689415b2f49a$export$be92b6f5f03c0fe9 = $08b6689415b2f49a$export$5aec92af04ace2d2;\n\n\n\n\nexport {$08b6689415b2f49a$export$5aec92af04ace2d2 as AccessibleIcon, $08b6689415b2f49a$export$be92b6f5f03c0fe9 as Root};\n//# sourceMappingURL=index.mjs.map\n","import $73KQ4$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $73KQ4$forwardRef, createElement as $73KQ4$createElement, useCallback as $73KQ4$useCallback, useState as $73KQ4$useState, useRef as $73KQ4$useRef, useEffect as $73KQ4$useEffect} from \"react\";\nimport {composeEventHandlers as $73KQ4$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {createContextScope as $73KQ4$createContextScope} from \"@radix-ui/react-context\";\nimport {useControllableState as $73KQ4$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {useLayoutEffect as $73KQ4$useLayoutEffect} from \"@radix-ui/react-use-layout-effect\";\nimport {useComposedRefs as $73KQ4$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {Primitive as $73KQ4$Primitive} from \"@radix-ui/react-primitive\";\nimport {Presence as $73KQ4$Presence} from \"@radix-ui/react-presence\";\nimport {useId as $73KQ4$useId} from \"@radix-ui/react-id\";\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$COLLAPSIBLE_NAME = 'Collapsible';\nconst [$409067139f391064$var$createCollapsibleContext, $409067139f391064$export$952b32dcbe73087a] = $73KQ4$createContextScope($409067139f391064$var$COLLAPSIBLE_NAME);\nconst [$409067139f391064$var$CollapsibleProvider, $409067139f391064$var$useCollapsibleContext] = $409067139f391064$var$createCollapsibleContext($409067139f391064$var$COLLAPSIBLE_NAME);\nconst $409067139f391064$export$6eb0f7ddcda6131f = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , open: openProp , defaultOpen: defaultOpen , disabled: disabled , onOpenChange: onOpenChange , ...collapsibleProps } = props;\n const [open = false, setOpen] = $73KQ4$useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /*#__PURE__*/ $73KQ4$createElement($409067139f391064$var$CollapsibleProvider, {\n scope: __scopeCollapsible,\n disabled: disabled,\n contentId: $73KQ4$useId(),\n open: open,\n onOpenToggle: $73KQ4$useCallback(()=>setOpen((prevOpen)=>!prevOpen\n )\n , [\n setOpen\n ])\n }, /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.div, $73KQ4$babelruntimehelpersesmextends({\n \"data-state\": $409067139f391064$var$getState(open),\n \"data-disabled\": disabled ? '' : undefined\n }, collapsibleProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$6eb0f7ddcda6131f, {\n displayName: $409067139f391064$var$COLLAPSIBLE_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$TRIGGER_NAME = 'CollapsibleTrigger';\nconst $409067139f391064$export$c135dce7b15bbbdc = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , ...triggerProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$TRIGGER_NAME, __scopeCollapsible);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.button, $73KQ4$babelruntimehelpersesmextends({\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": $409067139f391064$var$getState(context.open),\n \"data-disabled\": context.disabled ? '' : undefined,\n disabled: context.disabled\n }, triggerProps, {\n ref: forwardedRef,\n onClick: $73KQ4$composeEventHandlers(props.onClick, context.onOpenToggle)\n }));\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$c135dce7b15bbbdc, {\n displayName: $409067139f391064$var$TRIGGER_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$CONTENT_NAME = 'CollapsibleContent';\nconst $409067139f391064$export$aadde00976f34151 = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { forceMount: forceMount , ...contentProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, props.__scopeCollapsible);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Presence, {\n present: forceMount || context.open\n }, ({ present: present })=>/*#__PURE__*/ $73KQ4$createElement($409067139f391064$var$CollapsibleContentImpl, $73KQ4$babelruntimehelpersesmextends({}, contentProps, {\n ref: forwardedRef,\n present: present\n }))\n );\n});\n/*#__PURE__*/ Object.assign($409067139f391064$export$aadde00976f34151, {\n displayName: $409067139f391064$var$CONTENT_NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ const $409067139f391064$var$CollapsibleContentImpl = /*#__PURE__*/ $73KQ4$forwardRef((props, forwardedRef)=>{\n const { __scopeCollapsible: __scopeCollapsible , present: present , children: children , ...contentProps } = props;\n const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = $73KQ4$useState(present);\n const ref = $73KQ4$useRef(null);\n const composedRefs = $73KQ4$useComposedRefs(forwardedRef, ref);\n const heightRef = $73KQ4$useRef(0);\n const height = heightRef.current;\n const widthRef = $73KQ4$useRef(0);\n const width = widthRef.current; // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = $73KQ4$useRef(isOpen);\n const originalStylesRef = $73KQ4$useRef();\n $73KQ4$useEffect(()=>{\n const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false\n );\n return ()=>cancelAnimationFrame(rAF)\n ;\n }, []);\n $73KQ4$useLayoutEffect(()=>{\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n }; // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none'; // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width; // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */ }, [\n context.open,\n present\n ]);\n return /*#__PURE__*/ $73KQ4$createElement($73KQ4$Primitive.div, $73KQ4$babelruntimehelpersesmextends({\n \"data-state\": $409067139f391064$var$getState(context.open),\n \"data-disabled\": context.disabled ? '' : undefined,\n id: context.contentId,\n hidden: !isOpen\n }, contentProps, {\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : undefined,\n ...props.style\n }\n }), isOpen && children);\n});\n/* -----------------------------------------------------------------------------------------------*/ function $409067139f391064$var$getState(open) {\n return open ? 'open' : 'closed';\n}\nconst $409067139f391064$export$be92b6f5f03c0fe9 = $409067139f391064$export$6eb0f7ddcda6131f;\nconst $409067139f391064$export$41fb9f06171c75f4 = $409067139f391064$export$c135dce7b15bbbdc;\nconst $409067139f391064$export$7c6e2c02157bb7d2 = $409067139f391064$export$aadde00976f34151;\n\n\n\n\nexport {$409067139f391064$export$952b32dcbe73087a as createCollapsibleScope, $409067139f391064$export$6eb0f7ddcda6131f as Collapsible, $409067139f391064$export$c135dce7b15bbbdc as CollapsibleTrigger, $409067139f391064$export$aadde00976f34151 as CollapsibleContent, $409067139f391064$export$be92b6f5f03c0fe9 as Root, $409067139f391064$export$41fb9f06171c75f4 as Trigger, $409067139f391064$export$7c6e2c02157bb7d2 as Content};\n//# sourceMappingURL=index.mjs.map\n","import $3DjNB$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport $3DjNB$react from \"react\";\nimport {createContextScope as $3DjNB$createContextScope} from \"@radix-ui/react-context\";\nimport {createCollection as $3DjNB$createCollection} from \"@radix-ui/react-collection\";\nimport {useComposedRefs as $3DjNB$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {composeEventHandlers as $3DjNB$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {useControllableState as $3DjNB$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {Primitive as $3DjNB$Primitive} from \"@radix-ui/react-primitive\";\nimport {createCollapsibleScope as $3DjNB$createCollapsibleScope, Root as $3DjNB$Root, Trigger as $3DjNB$Trigger, Content as $3DjNB$Content} from \"@radix-ui/react-collapsible\";\nimport {useId as $3DjNB$useId} from \"@radix-ui/react-id\";\nimport {useDirection as $3DjNB$useDirection} from \"@radix-ui/react-direction\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion\n * -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$ACCORDION_NAME = 'Accordion';\nconst $1bf158f521e1b1b4$var$ACCORDION_KEYS = [\n 'Home',\n 'End',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight'\n];\nconst [$1bf158f521e1b1b4$var$Collection, $1bf158f521e1b1b4$var$useCollection, $1bf158f521e1b1b4$var$createCollectionScope] = $3DjNB$createCollection($1bf158f521e1b1b4$var$ACCORDION_NAME);\nconst [$1bf158f521e1b1b4$var$createAccordionContext, $1bf158f521e1b1b4$export$9748edc328a73be1] = $3DjNB$createContextScope($1bf158f521e1b1b4$var$ACCORDION_NAME, [\n $1bf158f521e1b1b4$var$createCollectionScope,\n $3DjNB$createCollapsibleScope\n]);\nconst $1bf158f521e1b1b4$var$useCollapsibleScope = $3DjNB$createCollapsibleScope();\nconst $1bf158f521e1b1b4$export$a766cd26d0d69044 = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { type: type , ...accordionProps } = props;\n const singleProps = accordionProps;\n const multipleProps = accordionProps;\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$Collection.Provider, {\n scope: props.__scopeAccordion\n }, type === 'multiple' ? /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionImplMultiple, $3DjNB$babelruntimehelpersesmextends({}, multipleProps, {\n ref: forwardedRef\n })) : /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionImplSingle, $3DjNB$babelruntimehelpersesmextends({}, singleProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($1bf158f521e1b1b4$export$a766cd26d0d69044, {\n displayName: $1bf158f521e1b1b4$var$ACCORDION_NAME\n});\n$1bf158f521e1b1b4$export$a766cd26d0d69044.propTypes = {\n type (props) {\n const value = props.value || props.defaultValue;\n if (props.type && ![\n 'single',\n 'multiple'\n ].includes(props.type)) return new Error('Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`.');\n if (props.type === 'multiple' && typeof value === 'string') return new Error('Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`.');\n if (props.type === 'single' && Array.isArray(value)) return new Error('Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`.');\n return null;\n }\n};\n/* -----------------------------------------------------------------------------------------------*/ const [$1bf158f521e1b1b4$var$AccordionValueProvider, $1bf158f521e1b1b4$var$useAccordionValueContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME);\nconst [$1bf158f521e1b1b4$var$AccordionCollapsibleProvider, $1bf158f521e1b1b4$var$useAccordionCollapsibleContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, {\n collapsible: false\n});\nconst $1bf158f521e1b1b4$var$AccordionImplSingle = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { value: valueProp , defaultValue: defaultValue , onValueChange: onValueChange = ()=>{} , collapsible: collapsible = false , ...accordionSingleProps } = props;\n const [value, setValue] = $3DjNB$useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionValueProvider, {\n scope: props.__scopeAccordion,\n value: value ? [\n value\n ] : [],\n onItemOpen: setValue,\n onItemClose: $3DjNB$react.useCallback(()=>collapsible && setValue('')\n , [\n collapsible,\n setValue\n ])\n }, /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionCollapsibleProvider, {\n scope: props.__scopeAccordion,\n collapsible: collapsible\n }, /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionImpl, $3DjNB$babelruntimehelpersesmextends({}, accordionSingleProps, {\n ref: forwardedRef\n }))));\n});\n/* -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$AccordionImplMultiple = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { value: valueProp , defaultValue: defaultValue , onValueChange: onValueChange = ()=>{} , ...accordionMultipleProps } = props;\n const [value1 = [], setValue] = $3DjNB$useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n const handleItemOpen = $3DjNB$react.useCallback((itemValue)=>setValue((prevValue = [])=>[\n ...prevValue,\n itemValue\n ]\n )\n , [\n setValue\n ]);\n const handleItemClose = $3DjNB$react.useCallback((itemValue)=>setValue((prevValue = [])=>prevValue.filter((value)=>value !== itemValue\n )\n )\n , [\n setValue\n ]);\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionValueProvider, {\n scope: props.__scopeAccordion,\n value: value1,\n onItemOpen: handleItemOpen,\n onItemClose: handleItemClose\n }, /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionCollapsibleProvider, {\n scope: props.__scopeAccordion,\n collapsible: true\n }, /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionImpl, $3DjNB$babelruntimehelpersesmextends({}, accordionMultipleProps, {\n ref: forwardedRef\n }))));\n});\n/* -----------------------------------------------------------------------------------------------*/ const [$1bf158f521e1b1b4$var$AccordionImplProvider, $1bf158f521e1b1b4$var$useAccordionContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME);\nconst $1bf158f521e1b1b4$var$AccordionImpl = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { __scopeAccordion: __scopeAccordion , disabled: disabled , dir: dir , orientation: orientation = 'vertical' , ...accordionProps } = props;\n const accordionRef = $3DjNB$react.useRef(null);\n const composedRefs = $3DjNB$useComposedRefs(accordionRef, forwardedRef);\n const getItems = $1bf158f521e1b1b4$var$useCollection(__scopeAccordion);\n const direction = $3DjNB$useDirection(dir);\n const isDirectionLTR = direction === 'ltr';\n const handleKeyDown = $3DjNB$composeEventHandlers(props.onKeyDown, (event)=>{\n var _triggerCollection$cl;\n if (!$1bf158f521e1b1b4$var$ACCORDION_KEYS.includes(event.key)) return;\n const target = event.target;\n const triggerCollection = getItems().filter((item)=>{\n var _item$ref$current;\n return !((_item$ref$current = item.ref.current) !== null && _item$ref$current !== void 0 && _item$ref$current.disabled);\n });\n const triggerIndex = triggerCollection.findIndex((item)=>item.ref.current === target\n );\n const triggerCount = triggerCollection.length;\n if (triggerIndex === -1) return; // Prevents page scroll while user is navigating\n event.preventDefault();\n let nextIndex = triggerIndex;\n const homeIndex = 0;\n const endIndex = triggerCount - 1;\n const moveNext = ()=>{\n nextIndex = triggerIndex + 1;\n if (nextIndex > endIndex) nextIndex = homeIndex;\n };\n const movePrev = ()=>{\n nextIndex = triggerIndex - 1;\n if (nextIndex < homeIndex) nextIndex = endIndex;\n };\n switch(event.key){\n case 'Home':\n nextIndex = homeIndex;\n break;\n case 'End':\n nextIndex = endIndex;\n break;\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) moveNext();\n else movePrev();\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') moveNext();\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) movePrev();\n else moveNext();\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') movePrev();\n break;\n }\n const clampedIndex = nextIndex % triggerCount;\n (_triggerCollection$cl = triggerCollection[clampedIndex].ref.current) === null || _triggerCollection$cl === void 0 || _triggerCollection$cl.focus();\n });\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionImplProvider, {\n scope: __scopeAccordion,\n disabled: disabled,\n direction: dir,\n orientation: orientation\n }, /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$Collection.Slot, {\n scope: __scopeAccordion\n }, /*#__PURE__*/ $3DjNB$react.createElement($3DjNB$Primitive.div, $3DjNB$babelruntimehelpersesmextends({}, accordionProps, {\n \"data-orientation\": orientation,\n ref: composedRefs,\n onKeyDown: disabled ? undefined : handleKeyDown\n }))));\n});\n/* -------------------------------------------------------------------------------------------------\n * AccordionItem\n * -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$ITEM_NAME = 'AccordionItem';\nconst [$1bf158f521e1b1b4$var$AccordionItemProvider, $1bf158f521e1b1b4$var$useAccordionItemContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ITEM_NAME);\n/**\n * `AccordionItem` contains all of the parts of a collapsible section inside of an `Accordion`.\n */ const $1bf158f521e1b1b4$export$d99097c13d4dac9f = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { __scopeAccordion: __scopeAccordion , value: value , ...accordionItemProps } = props;\n const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ITEM_NAME, __scopeAccordion);\n const valueContext = $1bf158f521e1b1b4$var$useAccordionValueContext($1bf158f521e1b1b4$var$ITEM_NAME, __scopeAccordion);\n const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);\n const triggerId = $3DjNB$useId();\n const open1 = value && valueContext.value.includes(value) || false;\n const disabled = accordionContext.disabled || props.disabled;\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$AccordionItemProvider, {\n scope: __scopeAccordion,\n open: open1,\n disabled: disabled,\n triggerId: triggerId\n }, /*#__PURE__*/ $3DjNB$react.createElement($3DjNB$Root, $3DjNB$babelruntimehelpersesmextends({\n \"data-orientation\": accordionContext.orientation,\n \"data-state\": $1bf158f521e1b1b4$var$getState(open1)\n }, collapsibleScope, accordionItemProps, {\n ref: forwardedRef,\n disabled: disabled,\n open: open1,\n onOpenChange: (open)=>{\n if (open) valueContext.onItemOpen(value);\n else valueContext.onItemClose(value);\n }\n })));\n});\n/*#__PURE__*/ Object.assign($1bf158f521e1b1b4$export$d99097c13d4dac9f, {\n displayName: $1bf158f521e1b1b4$var$ITEM_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * AccordionHeader\n * -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$HEADER_NAME = 'AccordionHeader';\n/**\n * `AccordionHeader` contains the content for the parts of an `AccordionItem` that will be visible\n * whether or not its content is collapsed.\n */ const $1bf158f521e1b1b4$export$5e3e5deaaf81ee41 = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { __scopeAccordion: __scopeAccordion , ...headerProps } = props;\n const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);\n const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$HEADER_NAME, __scopeAccordion);\n return /*#__PURE__*/ $3DjNB$react.createElement($3DjNB$Primitive.h3, $3DjNB$babelruntimehelpersesmextends({\n \"data-orientation\": accordionContext.orientation,\n \"data-state\": $1bf158f521e1b1b4$var$getState(itemContext.open),\n \"data-disabled\": itemContext.disabled ? '' : undefined\n }, headerProps, {\n ref: forwardedRef\n }));\n});\n/*#__PURE__*/ Object.assign($1bf158f521e1b1b4$export$5e3e5deaaf81ee41, {\n displayName: $1bf158f521e1b1b4$var$HEADER_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * AccordionTrigger\n * -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$TRIGGER_NAME = 'AccordionTrigger';\n/**\n * `AccordionTrigger` is the trigger that toggles the collapsed state of an `AccordionItem`. It\n * should always be nested inside of an `AccordionHeader`.\n */ const $1bf158f521e1b1b4$export$94e939b1f85bdd73 = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { __scopeAccordion: __scopeAccordion , ...triggerProps } = props;\n const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);\n const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$TRIGGER_NAME, __scopeAccordion);\n const collapsibleContext = $1bf158f521e1b1b4$var$useAccordionCollapsibleContext($1bf158f521e1b1b4$var$TRIGGER_NAME, __scopeAccordion);\n const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);\n return /*#__PURE__*/ $3DjNB$react.createElement($1bf158f521e1b1b4$var$Collection.ItemSlot, {\n scope: __scopeAccordion\n }, /*#__PURE__*/ $3DjNB$react.createElement($3DjNB$Trigger, $3DjNB$babelruntimehelpersesmextends({\n \"aria-disabled\": itemContext.open && !collapsibleContext.collapsible || undefined,\n \"data-orientation\": accordionContext.orientation,\n id: itemContext.triggerId\n }, collapsibleScope, triggerProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($1bf158f521e1b1b4$export$94e939b1f85bdd73, {\n displayName: $1bf158f521e1b1b4$var$TRIGGER_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * AccordionContent\n * -----------------------------------------------------------------------------------------------*/ const $1bf158f521e1b1b4$var$CONTENT_NAME = 'AccordionContent';\n/**\n * `AccordionContent` contains the collapsible content for an `AccordionItem`.\n */ const $1bf158f521e1b1b4$export$985b9a77379b54a0 = /*#__PURE__*/ $3DjNB$react.forwardRef((props, forwardedRef)=>{\n const { __scopeAccordion: __scopeAccordion , ...contentProps } = props;\n const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);\n const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$CONTENT_NAME, __scopeAccordion);\n const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);\n return /*#__PURE__*/ $3DjNB$react.createElement($3DjNB$Content, $3DjNB$babelruntimehelpersesmextends({\n role: \"region\",\n \"aria-labelledby\": itemContext.triggerId,\n \"data-orientation\": accordionContext.orientation\n }, collapsibleScope, contentProps, {\n ref: forwardedRef,\n style: {\n ['--radix-accordion-content-height']: 'var(--radix-collapsible-content-height)',\n ['--radix-accordion-content-width']: 'var(--radix-collapsible-content-width)',\n ...props.style\n }\n }));\n});\n/*#__PURE__*/ Object.assign($1bf158f521e1b1b4$export$985b9a77379b54a0, {\n displayName: $1bf158f521e1b1b4$var$CONTENT_NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ function $1bf158f521e1b1b4$var$getState(open) {\n return open ? 'open' : 'closed';\n}\nconst $1bf158f521e1b1b4$export$be92b6f5f03c0fe9 = $1bf158f521e1b1b4$export$a766cd26d0d69044;\nconst $1bf158f521e1b1b4$export$6d08773d2e66f8f2 = $1bf158f521e1b1b4$export$d99097c13d4dac9f;\nconst $1bf158f521e1b1b4$export$8b251419efc915eb = $1bf158f521e1b1b4$export$5e3e5deaaf81ee41;\nconst $1bf158f521e1b1b4$export$41fb9f06171c75f4 = $1bf158f521e1b1b4$export$94e939b1f85bdd73;\nconst $1bf158f521e1b1b4$export$7c6e2c02157bb7d2 = $1bf158f521e1b1b4$export$985b9a77379b54a0;\n\n\n\n\nexport {$1bf158f521e1b1b4$export$9748edc328a73be1 as createAccordionScope, $1bf158f521e1b1b4$export$a766cd26d0d69044 as Accordion, $1bf158f521e1b1b4$export$d99097c13d4dac9f as AccordionItem, $1bf158f521e1b1b4$export$5e3e5deaaf81ee41 as AccordionHeader, $1bf158f521e1b1b4$export$94e939b1f85bdd73 as AccordionTrigger, $1bf158f521e1b1b4$export$985b9a77379b54a0 as AccordionContent, $1bf158f521e1b1b4$export$be92b6f5f03c0fe9 as Root, $1bf158f521e1b1b4$export$6d08773d2e66f8f2 as Item, $1bf158f521e1b1b4$export$8b251419efc915eb as Header, $1bf158f521e1b1b4$export$41fb9f06171c75f4 as Trigger, $1bf158f521e1b1b4$export$7c6e2c02157bb7d2 as Content};\n//# sourceMappingURL=index.mjs.map\n","import $1bpvS$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $1bpvS$forwardRef, useState as $1bpvS$useState, useRef as $1bpvS$useRef, useEffect as $1bpvS$useEffect, createElement as $1bpvS$createElement} from \"react\";\nimport {useComposedRefs as $1bpvS$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {createContextScope as $1bpvS$createContextScope} from \"@radix-ui/react-context\";\nimport {composeEventHandlers as $1bpvS$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {useControllableState as $1bpvS$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {usePrevious as $1bpvS$usePrevious} from \"@radix-ui/react-use-previous\";\nimport {useSize as $1bpvS$useSize} from \"@radix-ui/react-use-size\";\nimport {Presence as $1bpvS$Presence} from \"@radix-ui/react-presence\";\nimport {Primitive as $1bpvS$Primitive} from \"@radix-ui/react-primitive\";\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/ const $e698a72e93240346$var$CHECKBOX_NAME = 'Checkbox';\nconst [$e698a72e93240346$var$createCheckboxContext, $e698a72e93240346$export$b566c4ff5488ea01] = $1bpvS$createContextScope($e698a72e93240346$var$CHECKBOX_NAME);\nconst [$e698a72e93240346$var$CheckboxProvider, $e698a72e93240346$var$useCheckboxContext] = $e698a72e93240346$var$createCheckboxContext($e698a72e93240346$var$CHECKBOX_NAME);\nconst $e698a72e93240346$export$48513f6b9f8ce62d = /*#__PURE__*/ $1bpvS$forwardRef((props, forwardedRef)=>{\n const { __scopeCheckbox: __scopeCheckbox , name: name , checked: checkedProp , defaultChecked: defaultChecked , required: required , disabled: disabled , value: value = 'on' , onCheckedChange: onCheckedChange , ...checkboxProps } = props;\n const [button, setButton] = $1bpvS$useState(null);\n const composedRefs = $1bpvS$useComposedRefs(forwardedRef, (node)=>setButton(node)\n );\n const hasConsumerStoppedPropagationRef = $1bpvS$useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n const [checked = false, setChecked] = $1bpvS$useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = $1bpvS$useRef(checked);\n $1bpvS$useEffect(()=>{\n const form = button === null || button === void 0 ? void 0 : button.form;\n if (form) {\n const reset = ()=>setChecked(initialCheckedStateRef.current)\n ;\n form.addEventListener('reset', reset);\n return ()=>form.removeEventListener('reset', reset)\n ;\n }\n }, [\n button,\n setChecked\n ]);\n return /*#__PURE__*/ $1bpvS$createElement($e698a72e93240346$var$CheckboxProvider, {\n scope: __scopeCheckbox,\n state: checked,\n disabled: disabled\n }, /*#__PURE__*/ $1bpvS$createElement($1bpvS$Primitive.button, $1bpvS$babelruntimehelpersesmextends({\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": $e698a72e93240346$var$isIndeterminate(checked) ? 'mixed' : checked,\n \"aria-required\": required,\n \"data-state\": $e698a72e93240346$var$getState(checked),\n \"data-disabled\": disabled ? '' : undefined,\n disabled: disabled,\n value: value\n }, checkboxProps, {\n ref: composedRefs,\n onKeyDown: $1bpvS$composeEventHandlers(props.onKeyDown, (event)=>{\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n }),\n onClick: $1bpvS$composeEventHandlers(props.onClick, (event)=>{\n setChecked((prevChecked)=>$e698a72e93240346$var$isIndeterminate(prevChecked) ? true : !prevChecked\n );\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if checkbox is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n })), isFormControl && /*#__PURE__*/ $1bpvS$createElement($e698a72e93240346$var$BubbleInput, {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name: name,\n value: value,\n checked: checked,\n required: required,\n disabled: disabled // We transform because the input is absolutely positioned but we have\n ,\n style: {\n transform: 'translateX(-100%)'\n }\n }));\n});\n/*#__PURE__*/ Object.assign($e698a72e93240346$export$48513f6b9f8ce62d, {\n displayName: $e698a72e93240346$var$CHECKBOX_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/ const $e698a72e93240346$var$INDICATOR_NAME = 'CheckboxIndicator';\nconst $e698a72e93240346$export$59aad738f51d1c05 = /*#__PURE__*/ $1bpvS$forwardRef((props, forwardedRef)=>{\n const { __scopeCheckbox: __scopeCheckbox , forceMount: forceMount , ...indicatorProps } = props;\n const context = $e698a72e93240346$var$useCheckboxContext($e698a72e93240346$var$INDICATOR_NAME, __scopeCheckbox);\n return /*#__PURE__*/ $1bpvS$createElement($1bpvS$Presence, {\n present: forceMount || $e698a72e93240346$var$isIndeterminate(context.state) || context.state === true\n }, /*#__PURE__*/ $1bpvS$createElement($1bpvS$Primitive.span, $1bpvS$babelruntimehelpersesmextends({\n \"data-state\": $e698a72e93240346$var$getState(context.state),\n \"data-disabled\": context.disabled ? '' : undefined\n }, indicatorProps, {\n ref: forwardedRef,\n style: {\n pointerEvents: 'none',\n ...props.style\n }\n })));\n});\n/*#__PURE__*/ Object.assign($e698a72e93240346$export$59aad738f51d1c05, {\n displayName: $e698a72e93240346$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ const $e698a72e93240346$var$BubbleInput = (props)=>{\n const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;\n const ref = $1bpvS$useRef(null);\n const prevChecked = $1bpvS$usePrevious(checked);\n const controlSize = $1bpvS$useSize(control); // Bubble checked change to parents (e.g form change event)\n $1bpvS$useEffect(()=>{\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', {\n bubbles: bubbles\n });\n input.indeterminate = $e698a72e93240346$var$isIndeterminate(checked);\n setChecked.call(input, $e698a72e93240346$var$isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [\n prevChecked,\n checked,\n bubbles\n ]);\n return /*#__PURE__*/ $1bpvS$createElement(\"input\", $1bpvS$babelruntimehelpersesmextends({\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: $e698a72e93240346$var$isIndeterminate(checked) ? false : checked\n }, inputProps, {\n tabIndex: -1,\n ref: ref,\n style: {\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0\n }\n }));\n};\nfunction $e698a72e93240346$var$isIndeterminate(checked) {\n return checked === 'indeterminate';\n}\nfunction $e698a72e93240346$var$getState(checked) {\n return $e698a72e93240346$var$isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\nconst $e698a72e93240346$export$be92b6f5f03c0fe9 = $e698a72e93240346$export$48513f6b9f8ce62d;\nconst $e698a72e93240346$export$adb584737d712b70 = $e698a72e93240346$export$59aad738f51d1c05;\n\n\n\n\nexport {$e698a72e93240346$export$b566c4ff5488ea01 as createCheckboxScope, $e698a72e93240346$export$48513f6b9f8ce62d as Checkbox, $e698a72e93240346$export$59aad738f51d1c05 as CheckboxIndicator, $e698a72e93240346$export$be92b6f5f03c0fe9 as Root, $e698a72e93240346$export$adb584737d712b70 as Indicator};\n//# sourceMappingURL=index.mjs.map\n","import $6vYhU$react from \"react\";\nimport {createContextScope as $6vYhU$createContextScope} from \"@radix-ui/react-context\";\nimport {useComposedRefs as $6vYhU$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {Slot as $6vYhU$Slot} from \"@radix-ui/react-slot\";\n\n\n\n\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\nfunction $e02a7d9cb1dc128c$export$c74125a8e3af6bb2(name) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/ const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = $6vYhU$createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {\n collectionRef: {\n current: null\n },\n itemMap: new Map()\n });\n const CollectionProvider = (props)=>{\n const { scope: scope , children: children } = props;\n const ref = $6vYhU$react.useRef(null);\n const itemMap = $6vYhU$react.useRef(new Map()).current;\n return /*#__PURE__*/ $6vYhU$react.createElement(CollectionProviderImpl, {\n scope: scope,\n itemMap: itemMap,\n collectionRef: ref\n }, children);\n };\n /*#__PURE__*/ Object.assign(CollectionProvider, {\n displayName: PROVIDER_NAME\n });\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/ const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n const CollectionSlot = /*#__PURE__*/ $6vYhU$react.forwardRef((props, forwardedRef)=>{\n const { scope: scope , children: children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = $6vYhU$useComposedRefs(forwardedRef, context.collectionRef);\n return /*#__PURE__*/ $6vYhU$react.createElement($6vYhU$Slot, {\n ref: composedRefs\n }, children);\n });\n /*#__PURE__*/ Object.assign(CollectionSlot, {\n displayName: COLLECTION_SLOT_NAME\n });\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/ const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n const CollectionItemSlot = /*#__PURE__*/ $6vYhU$react.forwardRef((props, forwardedRef)=>{\n const { scope: scope , children: children , ...itemData } = props;\n const ref = $6vYhU$react.useRef(null);\n const composedRefs = $6vYhU$useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n $6vYhU$react.useEffect(()=>{\n context.itemMap.set(ref, {\n ref: ref,\n ...itemData\n });\n return ()=>void context.itemMap.delete(ref)\n ;\n });\n return /*#__PURE__*/ $6vYhU$react.createElement($6vYhU$Slot, {\n [ITEM_DATA_ATTR]: '',\n ref: composedRefs\n }, children);\n });\n /*#__PURE__*/ Object.assign(CollectionItemSlot, {\n displayName: ITEM_SLOT_NAME\n });\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/ function useCollection(scope) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n const getItems = $6vYhU$react.useCallback(()=>{\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort((a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [\n context.collectionRef,\n context.itemMap\n ]);\n return getItems;\n }\n return [\n {\n Provider: CollectionProvider,\n Slot: CollectionSlot,\n ItemSlot: CollectionItemSlot\n },\n useCollection,\n createCollectionScope\n ];\n}\n\n\n\n\nexport {$e02a7d9cb1dc128c$export$c74125a8e3af6bb2 as createCollection};\n//# sourceMappingURL=index.mjs.map\n","import {useCallback as $3vqmr$useCallback} from \"react\";\n\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */ function $6ed0406888f73fc4$var$setRef(ref, value) {\n if (typeof ref === 'function') ref(value);\n else if (ref !== null && ref !== undefined) ref.current = value;\n}\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */ function $6ed0406888f73fc4$export$43e446d32b3d21af(...refs) {\n return (node)=>refs.forEach((ref)=>$6ed0406888f73fc4$var$setRef(ref, node)\n )\n ;\n}\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */ function $6ed0406888f73fc4$export$c7b2cbe3552a0d05(...refs) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return $3vqmr$useCallback($6ed0406888f73fc4$export$43e446d32b3d21af(...refs), refs);\n}\n\n\n\n\nexport {$6ed0406888f73fc4$export$43e446d32b3d21af as composeRefs, $6ed0406888f73fc4$export$c7b2cbe3552a0d05 as useComposedRefs};\n//# sourceMappingURL=index.mjs.map\n","import {createContext as $3bkAK$createContext, useMemo as $3bkAK$useMemo, createElement as $3bkAK$createElement, useContext as $3bkAK$useContext} from \"react\";\n\n\nfunction $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n const Context = /*#__PURE__*/ $3bkAK$createContext(defaultContext);\n function Provider(props) {\n const { children: children , ...context } = props; // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = $3bkAK$useMemo(()=>context\n , Object.values(context));\n return /*#__PURE__*/ $3bkAK$createElement(Context.Provider, {\n value: value\n }, children);\n }\n function useContext(consumerName) {\n const context = $3bkAK$useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + 'Provider';\n return [\n Provider,\n useContext\n ];\n}\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$50c7b4e9d9f19c1(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n const BaseContext = /*#__PURE__*/ $3bkAK$createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [\n ...defaultContexts,\n defaultContext\n ];\n function Provider(props) {\n const { scope: scope , children: children , ...context } = props;\n const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = $3bkAK$useMemo(()=>context\n , Object.values(context));\n return /*#__PURE__*/ $3bkAK$createElement(Context.Provider, {\n value: value\n }, children);\n }\n function useContext(consumerName, scope) {\n const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext;\n const context = $3bkAK$useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + 'Provider';\n return [\n Provider,\n useContext\n ];\n }\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/ const createScope = ()=>{\n const scopeContexts = defaultContexts.map((defaultContext)=>{\n return /*#__PURE__*/ $3bkAK$createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = (scope === null || scope === void 0 ? void 0 : scope[scopeName]) || scopeContexts;\n return $3bkAK$useMemo(()=>({\n [`__scope${scopeName}`]: {\n ...scope,\n [scopeName]: contexts\n }\n })\n , [\n scope,\n contexts\n ]);\n };\n };\n createScope.scopeName = scopeName;\n return [\n $c512c27ab02ef895$export$fd42f52fd3ae1109,\n $c512c27ab02ef895$var$composeContextScopes(createScope, ...createContextScopeDeps)\n ];\n}\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$var$composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope1 = ()=>{\n const scopeHooks = scopes.map((createScope)=>({\n useScope: createScope(),\n scopeName: createScope.scopeName\n })\n );\n return function useComposedScopes(overrideScopes) {\n const nextScopes1 = scopeHooks.reduce((nextScopes, { useScope: useScope , scopeName: scopeName })=>{\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return {\n ...nextScopes,\n ...currentScope\n };\n }, {});\n return $3bkAK$useMemo(()=>({\n [`__scope${baseScope.scopeName}`]: nextScopes1\n })\n , [\n nextScopes1\n ]);\n };\n };\n createScope1.scopeName = baseScope.scopeName;\n return createScope1;\n}\n\n\n\n\nexport {$c512c27ab02ef895$export$fd42f52fd3ae1109 as createContext, $c512c27ab02ef895$export$50c7b4e9d9f19c1 as createContextScope};\n//# sourceMappingURL=index.mjs.map\n","import {createContext as $7Gjcd$createContext, createElement as $7Gjcd$createElement, useContext as $7Gjcd$useContext} from \"react\";\n\n\nconst $f631663db3294ace$var$DirectionContext = /*#__PURE__*/ $7Gjcd$createContext(undefined);\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/ const $f631663db3294ace$export$c760c09fdd558351 = (props)=>{\n const { dir: dir , children: children } = props;\n return /*#__PURE__*/ $7Gjcd$createElement($f631663db3294ace$var$DirectionContext.Provider, {\n value: dir\n }, children);\n};\n/* -----------------------------------------------------------------------------------------------*/ function $f631663db3294ace$export$b39126d51d94e6f3(localDir) {\n const globalDir = $7Gjcd$useContext($f631663db3294ace$var$DirectionContext);\n return localDir || globalDir || 'ltr';\n}\nconst $f631663db3294ace$export$2881499e37b75b9a = $f631663db3294ace$export$c760c09fdd558351;\n\n\n\n\nexport {$f631663db3294ace$export$b39126d51d94e6f3 as useDirection, $f631663db3294ace$export$2881499e37b75b9a as Provider, $f631663db3294ace$export$c760c09fdd558351 as DirectionProvider};\n//# sourceMappingURL=index.mjs.map\n","import * as $2AODx$react from \"react\";\nimport {useLayoutEffect as $2AODx$useLayoutEffect} from \"@radix-ui/react-use-layout-effect\";\n\n\n\nconst $1746a345f3d73bb7$var$useReactId = $2AODx$react['useId'.toString()] || (()=>undefined\n);\nlet $1746a345f3d73bb7$var$count = 0;\nfunction $1746a345f3d73bb7$export$f680877a34711e37(deterministicId) {\n const [id, setId] = $2AODx$react.useState($1746a345f3d73bb7$var$useReactId()); // React versions older than 18 will have client-side ids only.\n $2AODx$useLayoutEffect(()=>{\n if (!deterministicId) setId((reactId)=>reactId !== null && reactId !== void 0 ? reactId : String($1746a345f3d73bb7$var$count++)\n );\n }, [\n deterministicId\n ]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\n\n\n\nexport {$1746a345f3d73bb7$export$f680877a34711e37 as useId};\n//# sourceMappingURL=index.mjs.map\n","import {Children as $iqq3r$Children, cloneElement as $iqq3r$cloneElement, useState as $iqq3r$useState, useRef as $iqq3r$useRef, useEffect as $iqq3r$useEffect, useCallback as $iqq3r$useCallback, useReducer as $iqq3r$useReducer} from \"react\";\nimport {flushSync as $iqq3r$flushSync} from \"react-dom\";\nimport {useComposedRefs as $iqq3r$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {useLayoutEffect as $iqq3r$useLayoutEffect} from \"@radix-ui/react-use-layout-effect\";\n\n\n\n\n\n\nfunction $fe963b355347cc68$export$3e6543de14f8614f(initialState, machine) {\n return $iqq3r$useReducer((state, event)=>{\n const nextState = machine[state][event];\n return nextState !== null && nextState !== void 0 ? nextState : state;\n }, initialState);\n}\n\n\nconst $921a889cee6df7e8$export$99c2b779aa4e8b8b = (props)=>{\n const { present: present , children: children } = props;\n const presence = $921a889cee6df7e8$var$usePresence(present);\n const child = typeof children === 'function' ? children({\n present: presence.isPresent\n }) : $iqq3r$Children.only(children);\n const ref = $iqq3r$useComposedRefs(presence.ref, child.ref);\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? /*#__PURE__*/ $iqq3r$cloneElement(child, {\n ref: ref\n }) : null;\n};\n$921a889cee6df7e8$export$99c2b779aa4e8b8b.displayName = 'Presence';\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$usePresence(present) {\n const [node1, setNode] = $iqq3r$useState();\n const stylesRef = $iqq3r$useRef({});\n const prevPresentRef = $iqq3r$useRef(present);\n const prevAnimationNameRef = $iqq3r$useRef('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = $fe963b355347cc68$export$3e6543de14f8614f(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended'\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted'\n },\n unmounted: {\n MOUNT: 'mounted'\n }\n });\n $iqq3r$useEffect(()=>{\n const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [\n state\n ]);\n $iqq3r$useLayoutEffect(()=>{\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(styles);\n if (present) send('MOUNT');\n else if (currentAnimationName === 'none' || (styles === null || styles === void 0 ? void 0 : styles.display) === 'none') // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */ const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) send('ANIMATION_OUT');\n else send('UNMOUNT');\n }\n prevPresentRef.current = present;\n }\n }, [\n present,\n send\n ]);\n $iqq3r$useLayoutEffect(()=>{\n if (node1) {\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */ const handleAnimationEnd = (event)=>{\n const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node1 && isCurrentAnimation) // With React 18 concurrency this update is applied\n // a frame after the animation ends, creating a flash of visible content.\n // By manually flushing we ensure they sync within a frame, removing the flash.\n $iqq3r$flushSync(()=>send('ANIMATION_END')\n );\n };\n const handleAnimationStart = (event)=>{\n if (event.target === node1) // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n };\n node1.addEventListener('animationstart', handleAnimationStart);\n node1.addEventListener('animationcancel', handleAnimationEnd);\n node1.addEventListener('animationend', handleAnimationEnd);\n return ()=>{\n node1.removeEventListener('animationstart', handleAnimationStart);\n node1.removeEventListener('animationcancel', handleAnimationEnd);\n node1.removeEventListener('animationend', handleAnimationEnd);\n };\n } else // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }, [\n node1,\n send\n ]);\n return {\n isPresent: [\n 'mounted',\n 'unmountSuspended'\n ].includes(state),\n ref: $iqq3r$useCallback((node)=>{\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, [])\n };\n}\n/* -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$getAnimationName(styles) {\n return (styles === null || styles === void 0 ? void 0 : styles.animationName) || 'none';\n}\n\n\n\n\nexport {$921a889cee6df7e8$export$99c2b779aa4e8b8b as Presence};\n//# sourceMappingURL=index.mjs.map\n","import $4q5Fq$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $4q5Fq$forwardRef, useEffect as $4q5Fq$useEffect, createElement as $4q5Fq$createElement} from \"react\";\nimport {flushSync as $4q5Fq$flushSync} from \"react-dom\";\nimport {Slot as $4q5Fq$Slot} from \"@radix-ui/react-slot\";\n\n\n\n\n\nconst $8927f6f2acc4f386$var$NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul'\n]; // Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$250ffa63cdc0d034 = $8927f6f2acc4f386$var$NODES.reduce((primitive, node)=>{\n const Node = /*#__PURE__*/ $4q5Fq$forwardRef((props, forwardedRef)=>{\n const { asChild: asChild , ...primitiveProps } = props;\n const Comp = asChild ? $4q5Fq$Slot : node;\n $4q5Fq$useEffect(()=>{\n window[Symbol.for('radix-ui')] = true;\n }, []);\n return /*#__PURE__*/ $4q5Fq$createElement(Comp, $4q5Fq$babelruntimehelpersesmextends({}, primitiveProps, {\n ref: forwardedRef\n }));\n });\n Node.displayName = `Primitive.${node}`;\n return {\n ...primitive,\n [node]: Node\n };\n}, {});\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/ /**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event ðŸ‘\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */ function $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event) {\n if (target) $4q5Fq$flushSync(()=>target.dispatchEvent(event)\n );\n}\n/* -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$be92b6f5f03c0fe9 = $8927f6f2acc4f386$export$250ffa63cdc0d034;\n\n\n\n\nexport {$8927f6f2acc4f386$export$250ffa63cdc0d034 as Primitive, $8927f6f2acc4f386$export$be92b6f5f03c0fe9 as Root, $8927f6f2acc4f386$export$6d1a0317bde7de7f as dispatchDiscreteCustomEvent};\n//# sourceMappingURL=index.mjs.map\n","import $98Iye$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $98Iye$forwardRef, createElement as $98Iye$createElement, useRef as $98Iye$useRef, useState as $98Iye$useState, useEffect as $98Iye$useEffect, useCallback as $98Iye$useCallback} from \"react\";\nimport {composeEventHandlers as $98Iye$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {createCollection as $98Iye$createCollection} from \"@radix-ui/react-collection\";\nimport {useComposedRefs as $98Iye$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {createContextScope as $98Iye$createContextScope} from \"@radix-ui/react-context\";\nimport {useId as $98Iye$useId} from \"@radix-ui/react-id\";\nimport {Primitive as $98Iye$Primitive} from \"@radix-ui/react-primitive\";\nimport {useCallbackRef as $98Iye$useCallbackRef} from \"@radix-ui/react-use-callback-ref\";\nimport {useControllableState as $98Iye$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {useDirection as $98Iye$useDirection} from \"@radix-ui/react-direction\";\n\n\n\n\n\n\n\n\n\n\n\n\nconst $d7bdfb9eb0fdf311$var$ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst $d7bdfb9eb0fdf311$var$EVENT_OPTIONS = {\n bubbles: false,\n cancelable: true\n};\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$GROUP_NAME = 'RovingFocusGroup';\nconst [$d7bdfb9eb0fdf311$var$Collection, $d7bdfb9eb0fdf311$var$useCollection, $d7bdfb9eb0fdf311$var$createCollectionScope] = $98Iye$createCollection($d7bdfb9eb0fdf311$var$GROUP_NAME);\nconst [$d7bdfb9eb0fdf311$var$createRovingFocusGroupContext, $d7bdfb9eb0fdf311$export$c7109489551a4f4] = $98Iye$createContextScope($d7bdfb9eb0fdf311$var$GROUP_NAME, [\n $d7bdfb9eb0fdf311$var$createCollectionScope\n]);\nconst [$d7bdfb9eb0fdf311$var$RovingFocusProvider, $d7bdfb9eb0fdf311$var$useRovingFocusContext] = $d7bdfb9eb0fdf311$var$createRovingFocusGroupContext($d7bdfb9eb0fdf311$var$GROUP_NAME);\nconst $d7bdfb9eb0fdf311$export$8699f7c8af148338 = /*#__PURE__*/ $98Iye$forwardRef((props, forwardedRef)=>{\n return /*#__PURE__*/ $98Iye$createElement($d7bdfb9eb0fdf311$var$Collection.Provider, {\n scope: props.__scopeRovingFocusGroup\n }, /*#__PURE__*/ $98Iye$createElement($d7bdfb9eb0fdf311$var$Collection.Slot, {\n scope: props.__scopeRovingFocusGroup\n }, /*#__PURE__*/ $98Iye$createElement($d7bdfb9eb0fdf311$var$RovingFocusGroupImpl, $98Iye$babelruntimehelpersesmextends({}, props, {\n ref: forwardedRef\n }))));\n});\n/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$8699f7c8af148338, {\n displayName: $d7bdfb9eb0fdf311$var$GROUP_NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$RovingFocusGroupImpl = /*#__PURE__*/ $98Iye$forwardRef((props, forwardedRef)=>{\n const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , orientation: orientation , loop: loop = false , dir: dir , currentTabStopId: currentTabStopIdProp , defaultCurrentTabStopId: defaultCurrentTabStopId , onCurrentTabStopIdChange: onCurrentTabStopIdChange , onEntryFocus: onEntryFocus , ...groupProps } = props;\n const ref = $98Iye$useRef(null);\n const composedRefs = $98Iye$useComposedRefs(forwardedRef, ref);\n const direction = $98Iye$useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = $98Iye$useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = $98Iye$useState(false);\n const handleEntryFocus = $98Iye$useCallbackRef(onEntryFocus);\n const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = $98Iye$useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = $98Iye$useState(0);\n $98Iye$useEffect(()=>{\n const node = ref.current;\n if (node) {\n node.addEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus);\n return ()=>node.removeEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus)\n ;\n }\n }, [\n handleEntryFocus\n ]);\n return /*#__PURE__*/ $98Iye$createElement($d7bdfb9eb0fdf311$var$RovingFocusProvider, {\n scope: __scopeRovingFocusGroup,\n orientation: orientation,\n dir: direction,\n loop: loop,\n currentTabStopId: currentTabStopId,\n onItemFocus: $98Iye$useCallback((tabStopId)=>setCurrentTabStopId(tabStopId)\n , [\n setCurrentTabStopId\n ]),\n onItemShiftTab: $98Iye$useCallback(()=>setIsTabbingBackOut(true)\n , []),\n onFocusableItemAdd: $98Iye$useCallback(()=>setFocusableItemsCount((prevCount)=>prevCount + 1\n )\n , []),\n onFocusableItemRemove: $98Iye$useCallback(()=>setFocusableItemsCount((prevCount)=>prevCount - 1\n )\n , [])\n }, /*#__PURE__*/ $98Iye$createElement($98Iye$Primitive.div, $98Iye$babelruntimehelpersesmextends({\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation\n }, groupProps, {\n ref: composedRefs,\n style: {\n outline: 'none',\n ...props.style\n },\n onMouseDown: $98Iye$composeEventHandlers(props.onMouseDown, ()=>{\n isClickFocusRef.current = true;\n }),\n onFocus: $98Iye$composeEventHandlers(props.onFocus, (event)=>{\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, $d7bdfb9eb0fdf311$var$EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item)=>item.focusable\n );\n const activeItem = items.find((item)=>item.active\n );\n const currentItem = items.find((item)=>item.id === currentTabStopId\n );\n const candidateItems = [\n activeItem,\n currentItem,\n ...items\n ].filter(Boolean);\n const candidateNodes = candidateItems.map((item)=>item.ref.current\n );\n $d7bdfb9eb0fdf311$var$focusFirst(candidateNodes);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: $98Iye$composeEventHandlers(props.onBlur, ()=>setIsTabbingBackOut(false)\n )\n })));\n});\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$ITEM_NAME = 'RovingFocusGroupItem';\nconst $d7bdfb9eb0fdf311$export$ab9df7c53fe8454 = /*#__PURE__*/ $98Iye$forwardRef((props, forwardedRef)=>{\n const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , focusable: focusable = true , active: active = false , tabStopId: tabStopId , ...itemProps } = props;\n const autoId = $98Iye$useId();\n const id = tabStopId || autoId;\n const context = $d7bdfb9eb0fdf311$var$useRovingFocusContext($d7bdfb9eb0fdf311$var$ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd: onFocusableItemAdd , onFocusableItemRemove: onFocusableItemRemove } = context;\n $98Iye$useEffect(()=>{\n if (focusable) {\n onFocusableItemAdd();\n return ()=>onFocusableItemRemove()\n ;\n }\n }, [\n focusable,\n onFocusableItemAdd,\n onFocusableItemRemove\n ]);\n return /*#__PURE__*/ $98Iye$createElement($d7bdfb9eb0fdf311$var$Collection.ItemSlot, {\n scope: __scopeRovingFocusGroup,\n id: id,\n focusable: focusable,\n active: active\n }, /*#__PURE__*/ $98Iye$createElement($98Iye$Primitive.span, $98Iye$babelruntimehelpersesmextends({\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation\n }, itemProps, {\n ref: forwardedRef,\n onMouseDown: $98Iye$composeEventHandlers(props.onMouseDown, (event)=>{\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault(); // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n }),\n onFocus: $98Iye$composeEventHandlers(props.onFocus, ()=>context.onItemFocus(id)\n ),\n onKeyDown: $98Iye$composeEventHandlers(props.onKeyDown, (event)=>{\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = $d7bdfb9eb0fdf311$var$getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== undefined) {\n event.preventDefault();\n const items = getItems().filter((item)=>item.focusable\n );\n let candidateNodes = items.map((item)=>item.ref.current\n );\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? $d7bdfb9eb0fdf311$var$wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */ setTimeout(()=>$d7bdfb9eb0fdf311$var$focusFirst(candidateNodes)\n );\n }\n })\n })));\n});\n/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$ab9df7c53fe8454, {\n displayName: $d7bdfb9eb0fdf311$var$ITEM_NAME\n});\n/* -----------------------------------------------------------------------------------------------*/ // prettier-ignore\nconst $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last'\n};\nfunction $d7bdfb9eb0fdf311$var$getDirectionAwareKey(key, dir) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\nfunction $d7bdfb9eb0fdf311$var$getFocusIntent(event, orientation, dir) {\n const key = $d7bdfb9eb0fdf311$var$getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && [\n 'ArrowLeft',\n 'ArrowRight'\n ].includes(key)) return undefined;\n if (orientation === 'horizontal' && [\n 'ArrowUp',\n 'ArrowDown'\n ].includes(key)) return undefined;\n return $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction $d7bdfb9eb0fdf311$var$focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates){\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */ function $d7bdfb9eb0fdf311$var$wrapArray(array, startIndex) {\n return array.map((_, index)=>array[(startIndex + index) % array.length]\n );\n}\nconst $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9 = $d7bdfb9eb0fdf311$export$8699f7c8af148338;\nconst $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2 = $d7bdfb9eb0fdf311$export$ab9df7c53fe8454;\n\n\n\n\nexport {$d7bdfb9eb0fdf311$export$c7109489551a4f4 as createRovingFocusGroupScope, $d7bdfb9eb0fdf311$export$8699f7c8af148338 as RovingFocusGroup, $d7bdfb9eb0fdf311$export$ab9df7c53fe8454 as RovingFocusGroupItem, $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9 as Root, $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2 as Item};\n//# sourceMappingURL=index.mjs.map\n","import $8Wolv$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $8Wolv$forwardRef, createElement as $8Wolv$createElement, useRef as $8Wolv$useRef, useEffect as $8Wolv$useEffect, useState as $8Wolv$useState} from \"react\";\nimport {composeEventHandlers as $8Wolv$composeEventHandlers} from \"@radix-ui/primitive\";\nimport {useComposedRefs as $8Wolv$useComposedRefs} from \"@radix-ui/react-compose-refs\";\nimport {createContextScope as $8Wolv$createContextScope} from \"@radix-ui/react-context\";\nimport {Primitive as $8Wolv$Primitive} from \"@radix-ui/react-primitive\";\nimport {createRovingFocusGroupScope as $8Wolv$createRovingFocusGroupScope, Root as $8Wolv$Root, Item as $8Wolv$Item} from \"@radix-ui/react-roving-focus\";\nimport {useControllableState as $8Wolv$useControllableState} from \"@radix-ui/react-use-controllable-state\";\nimport {useDirection as $8Wolv$useDirection} from \"@radix-ui/react-direction\";\nimport {useSize as $8Wolv$useSize} from \"@radix-ui/react-use-size\";\nimport {usePrevious as $8Wolv$usePrevious} from \"@radix-ui/react-use-previous\";\nimport {Presence as $8Wolv$Presence} from \"@radix-ui/react-presence\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$RADIO_NAME = 'Radio';\nconst [$ce77a8961b41be9e$var$createRadioContext, $ce77a8961b41be9e$export$67d2296460f1b002] = $8Wolv$createContextScope($ce77a8961b41be9e$var$RADIO_NAME);\nconst [$ce77a8961b41be9e$var$RadioProvider, $ce77a8961b41be9e$var$useRadioContext] = $ce77a8961b41be9e$var$createRadioContext($ce77a8961b41be9e$var$RADIO_NAME);\nconst $ce77a8961b41be9e$export$d7b12c4107be0d61 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadio: __scopeRadio , name: name , checked: checked = false , required: required , disabled: disabled , value: value = 'on' , onCheck: onCheck , ...radioProps } = props;\n const [button, setButton] = $8Wolv$useState(null);\n const composedRefs = $8Wolv$useComposedRefs(forwardedRef, (node)=>setButton(node)\n );\n const hasConsumerStoppedPropagationRef = $8Wolv$useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? Boolean(button.closest('form')) : true;\n return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$RadioProvider, {\n scope: __scopeRadio,\n checked: checked,\n disabled: disabled\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.button, $8Wolv$babelruntimehelpersesmextends({\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": $ce77a8961b41be9e$var$getState(checked),\n \"data-disabled\": disabled ? '' : undefined,\n disabled: disabled,\n value: value\n }, radioProps, {\n ref: composedRefs,\n onClick: $8Wolv$composeEventHandlers(props.onClick, (event)=>{\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck === null || onCheck === void 0 || onCheck();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n })), isFormControl && /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$var$BubbleInput, {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name: name,\n value: value,\n checked: checked,\n required: required,\n disabled: disabled // We transform because the input is absolutely positioned but we have\n ,\n style: {\n transform: 'translateX(-100%)'\n }\n }));\n});\n/*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d7b12c4107be0d61, {\n displayName: $ce77a8961b41be9e$var$RADIO_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/ const $ce77a8961b41be9e$var$INDICATOR_NAME = 'RadioIndicator';\nconst $ce77a8961b41be9e$export$d35a9ffa9a04f9e7 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadio: __scopeRadio , forceMount: forceMount , ...indicatorProps } = props;\n const context = $ce77a8961b41be9e$var$useRadioContext($ce77a8961b41be9e$var$INDICATOR_NAME, __scopeRadio);\n return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Presence, {\n present: forceMount || context.checked\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.span, $8Wolv$babelruntimehelpersesmextends({\n \"data-state\": $ce77a8961b41be9e$var$getState(context.checked),\n \"data-disabled\": context.disabled ? '' : undefined\n }, indicatorProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, {\n displayName: $ce77a8961b41be9e$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ const $ce77a8961b41be9e$var$BubbleInput = (props)=>{\n const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;\n const ref = $8Wolv$useRef(null);\n const prevChecked = $8Wolv$usePrevious(checked);\n const controlSize = $8Wolv$useSize(control); // Bubble checked change to parents (e.g form change event)\n $8Wolv$useEffect(()=>{\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', {\n bubbles: bubbles\n });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [\n prevChecked,\n checked,\n bubbles\n ]);\n return /*#__PURE__*/ $8Wolv$createElement(\"input\", $8Wolv$babelruntimehelpersesmextends({\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked\n }, inputProps, {\n tabIndex: -1,\n ref: ref,\n style: {\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0\n }\n }));\n};\nfunction $ce77a8961b41be9e$var$getState(checked) {\n return checked ? 'checked' : 'unchecked';\n}\n\n\nconst $f99a8c78507165f7$var$ARROW_KEYS = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight'\n];\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$RADIO_GROUP_NAME = 'RadioGroup';\nconst [$f99a8c78507165f7$var$createRadioGroupContext, $f99a8c78507165f7$export$c547093f11b76da2] = $8Wolv$createContextScope($f99a8c78507165f7$var$RADIO_GROUP_NAME, [\n $8Wolv$createRovingFocusGroupScope,\n $ce77a8961b41be9e$export$67d2296460f1b002\n]);\nconst $f99a8c78507165f7$var$useRovingFocusGroupScope = $8Wolv$createRovingFocusGroupScope();\nconst $f99a8c78507165f7$var$useRadioScope = $ce77a8961b41be9e$export$67d2296460f1b002();\nconst [$f99a8c78507165f7$var$RadioGroupProvider, $f99a8c78507165f7$var$useRadioGroupContext] = $f99a8c78507165f7$var$createRadioGroupContext($f99a8c78507165f7$var$RADIO_GROUP_NAME);\nconst $f99a8c78507165f7$export$a98f0dcb43a68a25 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , name: name , defaultValue: defaultValue , value: valueProp , required: required = false , disabled: disabled = false , orientation: orientation , dir: dir , loop: loop = true , onValueChange: onValueChange , ...groupProps } = props;\n const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = $8Wolv$useDirection(dir);\n const [value, setValue] = $8Wolv$useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /*#__PURE__*/ $8Wolv$createElement($f99a8c78507165f7$var$RadioGroupProvider, {\n scope: __scopeRadioGroup,\n name: name,\n required: required,\n disabled: disabled,\n value: value,\n onValueChange: setValue\n }, /*#__PURE__*/ $8Wolv$createElement($8Wolv$Root, $8Wolv$babelruntimehelpersesmextends({\n asChild: true\n }, rovingFocusGroupScope, {\n orientation: orientation,\n dir: direction,\n loop: loop\n }), /*#__PURE__*/ $8Wolv$createElement($8Wolv$Primitive.div, $8Wolv$babelruntimehelpersesmextends({\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? '' : undefined,\n dir: direction\n }, groupProps, {\n ref: forwardedRef\n }))));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$a98f0dcb43a68a25, {\n displayName: $f99a8c78507165f7$var$RADIO_GROUP_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$ITEM_NAME = 'RadioGroupItem';\nconst $f99a8c78507165f7$export$9f866c100ef519e4 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , disabled: disabled , ...itemProps } = props;\n const context = $f99a8c78507165f7$var$useRadioGroupContext($f99a8c78507165f7$var$ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = $f99a8c78507165f7$var$useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);\n const ref = $8Wolv$useRef(null);\n const composedRefs = $8Wolv$useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = $8Wolv$useRef(false);\n $8Wolv$useEffect(()=>{\n const handleKeyDown = (event)=>{\n if ($f99a8c78507165f7$var$ARROW_KEYS.includes(event.key)) isArrowKeyPressedRef.current = true;\n };\n const handleKeyUp = ()=>isArrowKeyPressedRef.current = false\n ;\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return ()=>{\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return /*#__PURE__*/ $8Wolv$createElement($8Wolv$Item, $8Wolv$babelruntimehelpersesmextends({\n asChild: true\n }, rovingFocusGroupScope, {\n focusable: !isDisabled,\n active: checked\n }), /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d7b12c4107be0d61, $8Wolv$babelruntimehelpersesmextends({\n disabled: isDisabled,\n required: context.required,\n checked: checked\n }, radioScope, itemProps, {\n name: context.name,\n ref: composedRefs,\n onCheck: ()=>context.onValueChange(itemProps.value)\n ,\n onKeyDown: $8Wolv$composeEventHandlers((event)=>{\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n }),\n onFocus: $8Wolv$composeEventHandlers(itemProps.onFocus, ()=>{\n var _ref$current;\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */ if (isArrowKeyPressedRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.click();\n })\n })));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$9f866c100ef519e4, {\n displayName: $f99a8c78507165f7$var$ITEM_NAME\n});\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/ const $f99a8c78507165f7$var$INDICATOR_NAME = 'RadioGroupIndicator';\nconst $f99a8c78507165f7$export$5fb54c671a65c88 = /*#__PURE__*/ $8Wolv$forwardRef((props, forwardedRef)=>{\n const { __scopeRadioGroup: __scopeRadioGroup , ...indicatorProps } = props;\n const radioScope = $f99a8c78507165f7$var$useRadioScope(__scopeRadioGroup);\n return /*#__PURE__*/ $8Wolv$createElement($ce77a8961b41be9e$export$d35a9ffa9a04f9e7, $8Wolv$babelruntimehelpersesmextends({}, radioScope, indicatorProps, {\n ref: forwardedRef\n }));\n});\n/*#__PURE__*/ Object.assign($f99a8c78507165f7$export$5fb54c671a65c88, {\n displayName: $f99a8c78507165f7$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ const $f99a8c78507165f7$export$be92b6f5f03c0fe9 = $f99a8c78507165f7$export$a98f0dcb43a68a25;\nconst $f99a8c78507165f7$export$6d08773d2e66f8f2 = $f99a8c78507165f7$export$9f866c100ef519e4;\nconst $f99a8c78507165f7$export$adb584737d712b70 = $f99a8c78507165f7$export$5fb54c671a65c88;\n\n\n\n\nexport {$f99a8c78507165f7$export$c547093f11b76da2 as createRadioGroupScope, $f99a8c78507165f7$export$a98f0dcb43a68a25 as RadioGroup, $f99a8c78507165f7$export$9f866c100ef519e4 as RadioGroupItem, $f99a8c78507165f7$export$5fb54c671a65c88 as RadioGroupIndicator, $f99a8c78507165f7$export$be92b6f5f03c0fe9 as Root, $f99a8c78507165f7$export$6d08773d2e66f8f2 as Item, $f99a8c78507165f7$export$adb584737d712b70 as Indicator};\n//# sourceMappingURL=index.mjs.map\n","import $9IrjX$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $9IrjX$forwardRef, Children as $9IrjX$Children, isValidElement as $9IrjX$isValidElement, createElement as $9IrjX$createElement, cloneElement as $9IrjX$cloneElement, Fragment as $9IrjX$Fragment} from \"react\";\nimport {composeRefs as $9IrjX$composeRefs} from \"@radix-ui/react-compose-refs\";\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$8c6ed5c666ac1360 = /*#__PURE__*/ $9IrjX$forwardRef((props, forwardedRef)=>{\n const { children: children , ...slotProps } = props;\n const childrenArray = $9IrjX$Children.toArray(children);\n const slottable = childrenArray.find($5e63c961fc1ce211$var$isSlottable);\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child)=>{\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if ($9IrjX$Children.count(newElement) > 1) return $9IrjX$Children.only(null);\n return /*#__PURE__*/ $9IrjX$isValidElement(newElement) ? newElement.props.children : null;\n } else return child;\n });\n return /*#__PURE__*/ $9IrjX$createElement($5e63c961fc1ce211$var$SlotClone, $9IrjX$babelruntimehelpersesmextends({}, slotProps, {\n ref: forwardedRef\n }), /*#__PURE__*/ $9IrjX$isValidElement(newElement) ? /*#__PURE__*/ $9IrjX$cloneElement(newElement, undefined, newChildren) : null);\n }\n return /*#__PURE__*/ $9IrjX$createElement($5e63c961fc1ce211$var$SlotClone, $9IrjX$babelruntimehelpersesmextends({}, slotProps, {\n ref: forwardedRef\n }), children);\n});\n$5e63c961fc1ce211$export$8c6ed5c666ac1360.displayName = 'Slot';\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$var$SlotClone = /*#__PURE__*/ $9IrjX$forwardRef((props, forwardedRef)=>{\n const { children: children , ...slotProps } = props;\n if (/*#__PURE__*/ $9IrjX$isValidElement(children)) return /*#__PURE__*/ $9IrjX$cloneElement(children, {\n ...$5e63c961fc1ce211$var$mergeProps(slotProps, children.props),\n ref: forwardedRef ? $9IrjX$composeRefs(forwardedRef, children.ref) : children.ref\n });\n return $9IrjX$Children.count(children) > 1 ? $9IrjX$Children.only(null) : null;\n});\n$5e63c961fc1ce211$var$SlotClone.displayName = 'SlotClone';\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$d9f1ccf0bdb05d45 = ({ children: children })=>{\n return /*#__PURE__*/ $9IrjX$createElement($9IrjX$Fragment, null, children);\n};\n/* ---------------------------------------------------------------------------------------------- */ function $5e63c961fc1ce211$var$isSlottable(child) {\n return /*#__PURE__*/ $9IrjX$isValidElement(child) && child.type === $5e63c961fc1ce211$export$d9f1ccf0bdb05d45;\n}\nfunction $5e63c961fc1ce211$var$mergeProps(slotProps, childProps) {\n // all child props should override\n const overrideProps = {\n ...childProps\n };\n for(const propName in childProps){\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) overrideProps[propName] = (...args)=>{\n childPropValue(...args);\n slotPropValue(...args);\n };\n else if (slotPropValue) overrideProps[propName] = slotPropValue;\n } else if (propName === 'style') overrideProps[propName] = {\n ...slotPropValue,\n ...childPropValue\n };\n else if (propName === 'className') overrideProps[propName] = [\n slotPropValue,\n childPropValue\n ].filter(Boolean).join(' ');\n }\n return {\n ...slotProps,\n ...overrideProps\n };\n}\nconst $5e63c961fc1ce211$export$be92b6f5f03c0fe9 = $5e63c961fc1ce211$export$8c6ed5c666ac1360;\n\n\n\n\nexport {$5e63c961fc1ce211$export$8c6ed5c666ac1360 as Slot, $5e63c961fc1ce211$export$d9f1ccf0bdb05d45 as Slottable, $5e63c961fc1ce211$export$be92b6f5f03c0fe9 as Root};\n//# sourceMappingURL=index.mjs.map\n","import {useRef as $lwiWj$useRef, useEffect as $lwiWj$useEffect, useMemo as $lwiWj$useMemo} from \"react\";\n\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */ function $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(callback) {\n const callbackRef = $lwiWj$useRef(callback);\n $lwiWj$useEffect(()=>{\n callbackRef.current = callback;\n }); // https://github.com/facebook/react/issues/19240\n return $lwiWj$useMemo(()=>(...args)=>{\n var _callbackRef$current;\n return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args);\n }\n , []);\n}\n\n\n\n\nexport {$b1b2314f5f9a1d84$export$25bec8c6f54ee79a as useCallbackRef};\n//# sourceMappingURL=index.mjs.map\n","import {useCallback as $bnPw9$useCallback, useState as $bnPw9$useState, useRef as $bnPw9$useRef, useEffect as $bnPw9$useEffect} from \"react\";\nimport {useCallbackRef as $bnPw9$useCallbackRef} from \"@radix-ui/react-use-callback-ref\";\n\n\n\nfunction $71cd76cc60e0454e$export$6f32135080cb4c3({ prop: prop , defaultProp: defaultProp , onChange: onChange = ()=>{} }) {\n const [uncontrolledProp, setUncontrolledProp] = $71cd76cc60e0454e$var$useUncontrolledState({\n defaultProp: defaultProp,\n onChange: onChange\n });\n const isControlled = prop !== undefined;\n const value1 = isControlled ? prop : uncontrolledProp;\n const handleChange = $bnPw9$useCallbackRef(onChange);\n const setValue = $bnPw9$useCallback((nextValue)=>{\n if (isControlled) {\n const setter = nextValue;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value);\n } else setUncontrolledProp(nextValue);\n }, [\n isControlled,\n prop,\n setUncontrolledProp,\n handleChange\n ]);\n return [\n value1,\n setValue\n ];\n}\nfunction $71cd76cc60e0454e$var$useUncontrolledState({ defaultProp: defaultProp , onChange: onChange }) {\n const uncontrolledState = $bnPw9$useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = $bnPw9$useRef(value);\n const handleChange = $bnPw9$useCallbackRef(onChange);\n $bnPw9$useEffect(()=>{\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [\n value,\n prevValueRef,\n handleChange\n ]);\n return uncontrolledState;\n}\n\n\n\n\nexport {$71cd76cc60e0454e$export$6f32135080cb4c3 as useControllableState};\n//# sourceMappingURL=index.mjs.map\n","import {useLayoutEffect as $dxlwH$useLayoutEffect} from \"react\";\n\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */ const $9f79659886946c16$export$e5c5a5f917a5871c = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? $dxlwH$useLayoutEffect : ()=>{};\n\n\n\n\nexport {$9f79659886946c16$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=index.mjs.map\n","import {useRef as $8LvvK$useRef, useMemo as $8LvvK$useMemo} from \"react\";\n\n\nfunction $010c2913dbd2fe3d$export$5cae361ad82dce8b(value) {\n const ref = $8LvvK$useRef({\n value: value,\n previous: value\n }); // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return $8LvvK$useMemo(()=>{\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [\n value\n ]);\n}\n\n\n\n\nexport {$010c2913dbd2fe3d$export$5cae361ad82dce8b as usePrevious};\n//# sourceMappingURL=index.mjs.map\n","import {useState as $9gyGR$useState} from \"react\";\nimport {useLayoutEffect as $9gyGR$useLayoutEffect} from \"@radix-ui/react-use-layout-effect\";\n\n\n\nfunction $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {\n const [size, setSize] = $9gyGR$useState(undefined);\n $9gyGR$useLayoutEffect(()=>{\n if (element) {\n // provide size as early as possible\n setSize({\n width: element.offsetWidth,\n height: element.offsetHeight\n });\n const resizeObserver = new ResizeObserver((entries)=>{\n if (!Array.isArray(entries)) return;\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) return;\n const entry = entries[0];\n let width;\n let height;\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({\n width: width,\n height: height\n });\n });\n resizeObserver.observe(element, {\n box: 'border-box'\n });\n return ()=>resizeObserver.unobserve(element)\n ;\n } else // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n setSize(undefined);\n }, [\n element\n ]);\n return size;\n}\n\n\n\n\nexport {$db6c3485150b8e66$export$1ab7ae714698c4b8 as useSize};\n//# sourceMappingURL=index.mjs.map\n","import {mergeProps as $bwqiF$mergeProps, filterDOMProps as $bwqiF$filterDOMProps} from \"@react-aria/utils\";\nimport {useFocusable as $bwqiF$useFocusable} from \"@react-aria/focus\";\nimport {usePress as $bwqiF$usePress} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $701a24aa0da5b062$export$ea18c227d4417cc3(props, ref) {\n let { elementType: elementType = 'button', isDisabled: isDisabled, onPress: onPress, onPressStart: onPressStart, onPressEnd: onPressEnd, onPressUp: onPressUp, onPressChange: onPressChange, preventFocusOnPress: preventFocusOnPress, allowFocusWhenDisabled: // @ts-ignore - undocumented\n allowFocusWhenDisabled, // @ts-ignore\n onClick: deprecatedOnClick, href: href, target: target, rel: rel, type: type = 'button' } = props;\n let additionalProps;\n if (elementType === 'button') additionalProps = {\n type: type,\n disabled: isDisabled\n };\n else additionalProps = {\n role: 'button',\n tabIndex: isDisabled ? undefined : 0,\n href: elementType === 'a' && !isDisabled ? href : undefined,\n target: elementType === 'a' ? target : undefined,\n type: elementType === 'input' ? type : undefined,\n disabled: elementType === 'input' ? isDisabled : undefined,\n 'aria-disabled': !isDisabled || elementType === 'input' ? undefined : isDisabled,\n rel: elementType === 'a' ? rel : undefined\n };\n let { pressProps: pressProps, isPressed: isPressed } = (0, $bwqiF$usePress)({\n onPressStart: onPressStart,\n onPressEnd: onPressEnd,\n onPressChange: onPressChange,\n onPress: onPress,\n onPressUp: onPressUp,\n isDisabled: isDisabled,\n preventFocusOnPress: preventFocusOnPress,\n ref: ref\n });\n let { focusableProps: focusableProps } = (0, $bwqiF$useFocusable)(props, ref);\n if (allowFocusWhenDisabled) focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;\n let buttonProps = (0, $bwqiF$mergeProps)(focusableProps, pressProps, (0, $bwqiF$filterDOMProps)(props, {\n labelable: true\n }));\n return {\n isPressed: isPressed,\n buttonProps: (0, $bwqiF$mergeProps)(additionalProps, buttonProps, {\n 'aria-haspopup': props['aria-haspopup'],\n 'aria-expanded': props['aria-expanded'],\n 'aria-controls': props['aria-controls'],\n 'aria-pressed': props['aria-pressed'],\n onClick: (e)=>{\n if (deprecatedOnClick) {\n deprecatedOnClick(e);\n console.warn('onClick is deprecated, please use onPress');\n }\n }\n })\n };\n}\n\n\nexport {$701a24aa0da5b062$export$ea18c227d4417cc3 as useButton};\n//# sourceMappingURL=useButton.module.js.map\n","/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $23b9f4fcf0fe224b$export$d68d59712b04d9d1 {\n get childNodes() {\n throw new Error('childNodes is not supported');\n }\n clone() {\n let node = new $23b9f4fcf0fe224b$export$d68d59712b04d9d1(this.type, this.key);\n node.value = this.value;\n node.level = this.level;\n node.hasChildNodes = this.hasChildNodes;\n node.rendered = this.rendered;\n node.textValue = this.textValue;\n node['aria-label'] = this['aria-label'];\n node.index = this.index;\n node.parentKey = this.parentKey;\n node.prevKey = this.prevKey;\n node.nextKey = this.nextKey;\n node.firstChildKey = this.firstChildKey;\n node.lastChildKey = this.lastChildKey;\n node.props = this.props;\n node.render = this.render;\n return node;\n }\n constructor(type, key){\n this.value = null;\n this.level = 0;\n this.hasChildNodes = false;\n this.rendered = null;\n this.textValue = '';\n this['aria-label'] = undefined;\n this.index = 0;\n this.parentKey = null;\n this.prevKey = null;\n this.nextKey = null;\n this.firstChildKey = null;\n this.lastChildKey = null;\n this.props = {};\n this.type = type;\n this.key = key;\n }\n}\nclass $23b9f4fcf0fe224b$export$408d25a4e12db025 {\n get size() {\n return this.keyMap.size;\n }\n getKeys() {\n return this.keyMap.keys();\n }\n *[Symbol.iterator]() {\n let node = this.firstKey != null ? this.keyMap.get(this.firstKey) : undefined;\n while(node){\n yield node;\n node = node.nextKey != null ? this.keyMap.get(node.nextKey) : undefined;\n }\n }\n getChildren(key) {\n let keyMap = this.keyMap;\n return {\n *[Symbol.iterator] () {\n let parent = keyMap.get(key);\n let node = (parent === null || parent === void 0 ? void 0 : parent.firstChildKey) != null ? keyMap.get(parent.firstChildKey) : null;\n while(node){\n yield node;\n node = node.nextKey != null ? keyMap.get(node.nextKey) : undefined;\n }\n }\n };\n }\n getKeyBefore(key) {\n let node = this.keyMap.get(key);\n if (!node) return null;\n if (node.prevKey != null) {\n node = this.keyMap.get(node.prevKey);\n while(node && node.type !== 'item' && node.lastChildKey != null)node = this.keyMap.get(node.lastChildKey);\n var _node_key;\n return (_node_key = node === null || node === void 0 ? void 0 : node.key) !== null && _node_key !== void 0 ? _node_key : null;\n }\n return node.parentKey;\n }\n getKeyAfter(key) {\n let node = this.keyMap.get(key);\n if (!node) return null;\n if (node.type !== 'item' && node.firstChildKey != null) return node.firstChildKey;\n while(node){\n if (node.nextKey != null) return node.nextKey;\n if (node.parentKey != null) node = this.keyMap.get(node.parentKey);\n else return null;\n }\n return null;\n }\n getFirstKey() {\n return this.firstKey;\n }\n getLastKey() {\n let node = this.lastKey != null ? this.keyMap.get(this.lastKey) : null;\n while((node === null || node === void 0 ? void 0 : node.lastChildKey) != null)node = this.keyMap.get(node.lastChildKey);\n var _node_key;\n return (_node_key = node === null || node === void 0 ? void 0 : node.key) !== null && _node_key !== void 0 ? _node_key : null;\n }\n getItem(key) {\n var _this_keyMap_get;\n return (_this_keyMap_get = this.keyMap.get(key)) !== null && _this_keyMap_get !== void 0 ? _this_keyMap_get : null;\n }\n at() {\n throw new Error('Not implemented');\n }\n clone() {\n // We need to clone using this.constructor so that subclasses have the right prototype.\n // TypeScript isn't happy about this yet.\n // https://github.com/microsoft/TypeScript/issues/3841\n let Constructor = this.constructor;\n let collection = new Constructor();\n collection.keyMap = new Map(this.keyMap);\n collection.firstKey = this.firstKey;\n collection.lastKey = this.lastKey;\n return collection;\n }\n addNode(node) {\n if (this.frozen) throw new Error('Cannot add a node to a frozen collection');\n this.keyMap.set(node.key, node);\n }\n removeNode(key) {\n if (this.frozen) throw new Error('Cannot remove a node to a frozen collection');\n this.keyMap.delete(key);\n }\n commit(firstKey, lastKey, isSSR = false) {\n if (this.frozen) throw new Error('Cannot commit a frozen collection');\n this.firstKey = firstKey;\n this.lastKey = lastKey;\n this.frozen = !isSSR;\n }\n constructor(){\n this.keyMap = new Map();\n this.firstKey = null;\n this.lastKey = null;\n this.frozen = false;\n }\n}\n\n\nexport {$23b9f4fcf0fe224b$export$d68d59712b04d9d1 as CollectionNode, $23b9f4fcf0fe224b$export$408d25a4e12db025 as BaseCollection};\n//# sourceMappingURL=BaseCollection.module.js.map\n","import {CollectionNode as $23b9f4fcf0fe224b$export$d68d59712b04d9d1} from \"./BaseCollection.mjs\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nclass $681cc3c98f569e39$export$410b0c854570d131 {\n *[Symbol.iterator]() {\n let node = this.firstChild;\n while(node){\n yield node;\n node = node.nextSibling;\n }\n }\n get firstChild() {\n return this._firstChild;\n }\n set firstChild(firstChild) {\n this._firstChild = firstChild;\n this.ownerDocument.markDirty(this);\n }\n get lastChild() {\n return this._lastChild;\n }\n set lastChild(lastChild) {\n this._lastChild = lastChild;\n this.ownerDocument.markDirty(this);\n }\n get previousSibling() {\n return this._previousSibling;\n }\n set previousSibling(previousSibling) {\n this._previousSibling = previousSibling;\n this.ownerDocument.markDirty(this);\n }\n get nextSibling() {\n return this._nextSibling;\n }\n set nextSibling(nextSibling) {\n this._nextSibling = nextSibling;\n this.ownerDocument.markDirty(this);\n }\n get parentNode() {\n return this._parentNode;\n }\n set parentNode(parentNode) {\n this._parentNode = parentNode;\n this.ownerDocument.markDirty(this);\n }\n get isConnected() {\n var _this_parentNode;\n return ((_this_parentNode = this.parentNode) === null || _this_parentNode === void 0 ? void 0 : _this_parentNode.isConnected) || false;\n }\n appendChild(child) {\n this.ownerDocument.startTransaction();\n if (child.parentNode) child.parentNode.removeChild(child);\n if (this.firstChild == null) this.firstChild = child;\n if (this.lastChild) {\n this.lastChild.nextSibling = child;\n child.index = this.lastChild.index + 1;\n child.previousSibling = this.lastChild;\n } else {\n child.previousSibling = null;\n child.index = 0;\n }\n child.parentNode = this;\n child.nextSibling = null;\n this.lastChild = child;\n this.ownerDocument.markDirty(this);\n if (child.hasSetProps) // Only add the node to the collection if we already received props for it.\n // Otherwise wait until then so we have the correct id for the node.\n this.ownerDocument.addNode(child);\n this.ownerDocument.endTransaction();\n this.ownerDocument.queueUpdate();\n }\n insertBefore(newNode, referenceNode) {\n if (referenceNode == null) return this.appendChild(newNode);\n this.ownerDocument.startTransaction();\n if (newNode.parentNode) newNode.parentNode.removeChild(newNode);\n newNode.nextSibling = referenceNode;\n newNode.previousSibling = referenceNode.previousSibling;\n newNode.index = referenceNode.index;\n if (this.firstChild === referenceNode) this.firstChild = newNode;\n else if (referenceNode.previousSibling) referenceNode.previousSibling.nextSibling = newNode;\n referenceNode.previousSibling = newNode;\n newNode.parentNode = referenceNode.parentNode;\n let node = referenceNode;\n while(node){\n node.index++;\n node = node.nextSibling;\n }\n if (newNode.hasSetProps) this.ownerDocument.addNode(newNode);\n this.ownerDocument.endTransaction();\n this.ownerDocument.queueUpdate();\n }\n removeChild(child) {\n if (child.parentNode !== this || !this.ownerDocument.isMounted) return;\n this.ownerDocument.startTransaction();\n let node = child.nextSibling;\n while(node){\n node.index--;\n node = node.nextSibling;\n }\n if (child.nextSibling) child.nextSibling.previousSibling = child.previousSibling;\n if (child.previousSibling) child.previousSibling.nextSibling = child.nextSibling;\n if (this.firstChild === child) this.firstChild = child.nextSibling;\n if (this.lastChild === child) this.lastChild = child.previousSibling;\n child.parentNode = null;\n child.nextSibling = null;\n child.previousSibling = null;\n child.index = 0;\n this.ownerDocument.removeNode(child);\n this.ownerDocument.endTransaction();\n this.ownerDocument.queueUpdate();\n }\n addEventListener() {}\n removeEventListener() {}\n constructor(ownerDocument){\n this._firstChild = null;\n this._lastChild = null;\n this._previousSibling = null;\n this._nextSibling = null;\n this._parentNode = null;\n this.ownerDocument = ownerDocument;\n }\n}\nclass $681cc3c98f569e39$export$dc064fe9e59310fd extends $681cc3c98f569e39$export$410b0c854570d131 {\n get index() {\n return this._index;\n }\n set index(index) {\n this._index = index;\n this.ownerDocument.markDirty(this);\n }\n get level() {\n if (this.parentNode instanceof $681cc3c98f569e39$export$dc064fe9e59310fd) return this.parentNode.level + (this.node.type === 'item' ? 1 : 0);\n return 0;\n }\n updateNode() {\n var _this_previousSibling, _this_nextSibling, _this_firstChild, _this_lastChild;\n let node = this.ownerDocument.getMutableNode(this);\n node.index = this.index;\n node.level = this.level;\n node.parentKey = this.parentNode instanceof $681cc3c98f569e39$export$dc064fe9e59310fd ? this.parentNode.node.key : null;\n var _this_previousSibling_node_key;\n node.prevKey = (_this_previousSibling_node_key = (_this_previousSibling = this.previousSibling) === null || _this_previousSibling === void 0 ? void 0 : _this_previousSibling.node.key) !== null && _this_previousSibling_node_key !== void 0 ? _this_previousSibling_node_key : null;\n var _this_nextSibling_node_key;\n node.nextKey = (_this_nextSibling_node_key = (_this_nextSibling = this.nextSibling) === null || _this_nextSibling === void 0 ? void 0 : _this_nextSibling.node.key) !== null && _this_nextSibling_node_key !== void 0 ? _this_nextSibling_node_key : null;\n node.hasChildNodes = !!this.firstChild;\n var _this_firstChild_node_key;\n node.firstChildKey = (_this_firstChild_node_key = (_this_firstChild = this.firstChild) === null || _this_firstChild === void 0 ? void 0 : _this_firstChild.node.key) !== null && _this_firstChild_node_key !== void 0 ? _this_firstChild_node_key : null;\n var _this_lastChild_node_key;\n node.lastChildKey = (_this_lastChild_node_key = (_this_lastChild = this.lastChild) === null || _this_lastChild === void 0 ? void 0 : _this_lastChild.node.key) !== null && _this_lastChild_node_key !== void 0 ? _this_lastChild_node_key : null;\n }\n setProps(obj, ref, rendered, render) {\n let node = this.ownerDocument.getMutableNode(this);\n let { value: value, textValue: textValue, id: id, ...props } = obj;\n props.ref = ref;\n node.props = props;\n node.rendered = rendered;\n node.render = render;\n node.value = value;\n node.textValue = textValue || (typeof props.children === 'string' ? props.children : '') || obj['aria-label'] || '';\n if (id != null && id !== node.key) {\n if (this.hasSetProps) throw new Error('Cannot change the id of an item');\n node.key = id;\n }\n // If this is the first time props have been set, end the transaction started in the constructor\n // so this node can be emitted.\n if (!this.hasSetProps) {\n this.ownerDocument.addNode(this);\n this.ownerDocument.endTransaction();\n this.hasSetProps = true;\n }\n this.ownerDocument.queueUpdate();\n }\n get style() {\n return {};\n }\n hasAttribute() {}\n setAttribute() {}\n setAttributeNS() {}\n removeAttribute() {}\n constructor(type, ownerDocument){\n super(ownerDocument), this.nodeType = 8 // COMMENT_NODE (we'd use ELEMENT_NODE but React DevTools will fail to get its dimensions)\n , this._index = 0, this.hasSetProps = false;\n this.node = new (0, $23b9f4fcf0fe224b$export$d68d59712b04d9d1)(type, `react-aria-${++ownerDocument.nodeId}`);\n // Start a transaction so that no updates are emitted from the collection\n // until the props for this node are set. We don't know the real id for the\n // node until then, so we need to avoid emitting collections in an inconsistent state.\n this.ownerDocument.startTransaction();\n }\n}\nclass $681cc3c98f569e39$export$b34a105447964f9f extends $681cc3c98f569e39$export$410b0c854570d131 {\n get isConnected() {\n return this.isMounted;\n }\n createElement(type) {\n return new $681cc3c98f569e39$export$dc064fe9e59310fd(type, this);\n }\n /**\n * Lazily gets a mutable instance of a Node. If the node has already\n * been cloned during this update cycle, it just returns the existing one.\n */ getMutableNode(element) {\n let node = element.node;\n if (!this.mutatedNodes.has(element)) {\n node = element.node.clone();\n this.mutatedNodes.add(element);\n element.node = node;\n }\n this.markDirty(element);\n return node;\n }\n getMutableCollection() {\n if (!this.isSSR && !this.collectionMutated) {\n this.collection = this.collection.clone();\n this.collectionMutated = true;\n }\n return this.collection;\n }\n markDirty(node) {\n this.dirtyNodes.add(node);\n }\n startTransaction() {\n this.transactionCount++;\n }\n endTransaction() {\n this.transactionCount--;\n }\n addNode(element) {\n let collection = this.getMutableCollection();\n if (!collection.getItem(element.node.key)) {\n collection.addNode(element.node);\n for (let child of element)this.addNode(child);\n }\n this.markDirty(element);\n }\n removeNode(node) {\n for (let child of node)this.removeNode(child);\n let collection = this.getMutableCollection();\n collection.removeNode(node.node.key);\n this.markDirty(node);\n }\n /** Finalizes the collection update, updating all nodes and freezing the collection. */ getCollection() {\n if (this.transactionCount > 0) return this.collection;\n this.updateCollection();\n return this.collection;\n }\n updateCollection() {\n for (let element of this.dirtyNodes)if (element instanceof $681cc3c98f569e39$export$dc064fe9e59310fd && element.isConnected) element.updateNode();\n this.dirtyNodes.clear();\n if (this.mutatedNodes.size || this.collectionMutated) {\n var _this_firstChild, _this_lastChild;\n let collection = this.getMutableCollection();\n for (let element of this.mutatedNodes)if (element.isConnected) collection.addNode(element.node);\n var _this_firstChild_node_key, _this_lastChild_node_key;\n collection.commit((_this_firstChild_node_key = (_this_firstChild = this.firstChild) === null || _this_firstChild === void 0 ? void 0 : _this_firstChild.node.key) !== null && _this_firstChild_node_key !== void 0 ? _this_firstChild_node_key : null, (_this_lastChild_node_key = (_this_lastChild = this.lastChild) === null || _this_lastChild === void 0 ? void 0 : _this_lastChild.node.key) !== null && _this_lastChild_node_key !== void 0 ? _this_lastChild_node_key : null, this.isSSR);\n this.mutatedNodes.clear();\n }\n this.collectionMutated = false;\n }\n queueUpdate() {\n // Don't emit any updates if there is a transaction in progress.\n // queueUpdate should be called again after the transaction.\n if (this.dirtyNodes.size === 0 || this.transactionCount > 0) return;\n for (let fn of this.subscriptions)fn();\n }\n subscribe(fn) {\n this.subscriptions.add(fn);\n return ()=>this.subscriptions.delete(fn);\n }\n resetAfterSSR() {\n if (this.isSSR) {\n this.isSSR = false;\n this.firstChild = null;\n this.lastChild = null;\n this.nodeId = 0;\n }\n }\n constructor(collection){\n // @ts-ignore\n super(null), this.nodeType = 11 // DOCUMENT_FRAGMENT_NODE\n , this.ownerDocument = this, this.dirtyNodes = new Set(), this.isSSR = false, this.nodeId = 0, this.nodesByProps = new WeakMap(), this.isMounted = true, this.mutatedNodes = new Set(), this.subscriptions = new Set(), this.transactionCount = 0;\n this.collection = collection;\n this.collectionMutated = true;\n }\n}\n\n\nexport {$681cc3c98f569e39$export$410b0c854570d131 as BaseNode, $681cc3c98f569e39$export$dc064fe9e59310fd as ElementNode, $681cc3c98f569e39$export$b34a105447964f9f as Document};\n//# sourceMappingURL=Document.module.js.map\n","import {BaseCollection as $23b9f4fcf0fe224b$export$408d25a4e12db025} from \"./BaseCollection.mjs\";\nimport {Document as $681cc3c98f569e39$export$b34a105447964f9f} from \"./Document.mjs\";\nimport {useCachedChildren as $e948873055cbafe4$export$727c8fc270210f13} from \"./useCachedChildren.mjs\";\nimport {Hidden as $f39a9eba43920ace$export$8dc98ba7eadeaa56} from \"./Hidden.mjs\";\nimport {createPortal as $95feo$createPortal} from \"react-dom\";\nimport $95feo$react, {createContext as $95feo$createContext, useContext as $95feo$useContext, useRef as $95feo$useRef, useCallback as $95feo$useCallback, useState as $95feo$useState, forwardRef as $95feo$forwardRef, useMemo as $95feo$useMemo} from \"react\";\nimport {useIsSSR as $95feo$useIsSSR} from \"@react-aria/ssr\";\nimport {useLayoutEffect as $95feo$useLayoutEffect} from \"@react-aria/utils\";\nimport {useSyncExternalStore as $95feo$useSyncExternalStore} from \"use-sync-external-store/shim/index.js\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\nconst $e1995378a142960e$var$ShallowRenderContext = /*#__PURE__*/ (0, $95feo$createContext)(false);\nconst $e1995378a142960e$var$CollectionDocumentContext = /*#__PURE__*/ (0, $95feo$createContext)(null);\nfunction $e1995378a142960e$export$bf788dd355e3a401(props) {\n // If a document was provided above us, we're already in a hidden tree. Just render the content.\n let doc = (0, $95feo$useContext)($e1995378a142960e$var$CollectionDocumentContext);\n if (doc) // The React types prior to 18 did not allow returning ReactNode from components\n // even though the actual implementation since React 16 did.\n // We must return ReactElement so that TS does not complain that <CollectionBuilder>\n // is not a valid JSX element with React 16 and 17 types.\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/20544\n return props.content;\n // Otherwise, render a hidden copy of the children so that we can build the collection before constructing the state.\n // This should always come before the real DOM content so we have built the collection by the time it renders during SSR.\n // This is fine. CollectionDocumentContext never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n let { collection: collection, document: document } = $e1995378a142960e$var$useCollectionDocument(props.createCollection);\n return /*#__PURE__*/ (0, $95feo$react).createElement((0, $95feo$react).Fragment, null, /*#__PURE__*/ (0, $95feo$react).createElement((0, $f39a9eba43920ace$export$8dc98ba7eadeaa56), null, /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$CollectionDocumentContext.Provider, {\n value: document\n }, props.content)), /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$CollectionInner, {\n render: props.children,\n collection: collection\n }));\n}\nfunction $e1995378a142960e$var$CollectionInner({ collection: collection, render: render }) {\n return render(collection);\n}\n// React 16 and 17 don't support useSyncExternalStore natively, and the shim provided by React does not support getServerSnapshot.\n// This wrapper uses the shim, but additionally calls getServerSnapshot during SSR (according to SSRProvider).\nfunction $e1995378a142960e$var$useSyncExternalStoreFallback(subscribe, getSnapshot, getServerSnapshot) {\n let isSSR = (0, $95feo$useIsSSR)();\n let isSSRRef = (0, $95feo$useRef)(isSSR);\n // This is read immediately inside the wrapper, which also runs during render.\n // We just need a ref to avoid invalidating the callback itself, which\n // would cause React to re-run the callback more than necessary.\n // eslint-disable-next-line rulesdir/pure-render\n isSSRRef.current = isSSR;\n let getSnapshotWrapper = (0, $95feo$useCallback)(()=>{\n return isSSRRef.current ? getServerSnapshot() : getSnapshot();\n }, [\n getSnapshot,\n getServerSnapshot\n ]);\n return (0, $95feo$useSyncExternalStore)(subscribe, getSnapshotWrapper);\n}\nconst $e1995378a142960e$var$useSyncExternalStore = typeof (0, $95feo$react)['useSyncExternalStore'] === 'function' ? (0, $95feo$react)['useSyncExternalStore'] : $e1995378a142960e$var$useSyncExternalStoreFallback;\nfunction $e1995378a142960e$var$useCollectionDocument(createCollection) {\n // The document instance is mutable, and should never change between renders.\n // useSyncExternalStore is used to subscribe to updates, which vends immutable Collection objects.\n let [document] = (0, $95feo$useState)(()=>new (0, $681cc3c98f569e39$export$b34a105447964f9f)((createCollection === null || createCollection === void 0 ? void 0 : createCollection()) || new (0, $23b9f4fcf0fe224b$export$408d25a4e12db025)()));\n let subscribe = (0, $95feo$useCallback)((fn)=>document.subscribe(fn), [\n document\n ]);\n let getSnapshot = (0, $95feo$useCallback)(()=>{\n let collection = document.getCollection();\n if (document.isSSR) // After SSR is complete, reset the document to empty so it is ready for React to render the portal into.\n // We do this _after_ getting the collection above so that the collection still has content in it from SSR\n // during the current render, before React has finished the client render.\n document.resetAfterSSR();\n return collection;\n }, [\n document\n ]);\n let getServerSnapshot = (0, $95feo$useCallback)(()=>{\n document.isSSR = true;\n return document.getCollection();\n }, [\n document\n ]);\n let collection = $e1995378a142960e$var$useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n (0, $95feo$useLayoutEffect)(()=>{\n document.isMounted = true;\n return ()=>{\n // Mark unmounted so we can skip all of the collection updates caused by \n // React calling removeChild on every item in the collection.\n document.isMounted = false;\n };\n }, [\n document\n ]);\n return {\n collection: collection,\n document: document\n };\n}\nconst $e1995378a142960e$var$SSRContext = /*#__PURE__*/ (0, $95feo$createContext)(null);\nfunction $e1995378a142960e$var$useSSRCollectionNode(Type, props, ref, rendered, children, render) {\n // During SSR, portals are not supported, so the collection children will be wrapped in an SSRContext.\n // Since SSR occurs only once, we assume that the elements are rendered in order and never re-render.\n // Therefore we can create elements in our collection document during render so that they are in the\n // collection by the time we need to use the collection to render to the real DOM.\n // After hydration, we switch to client rendering using the portal.\n let itemRef = (0, $95feo$useCallback)((element)=>{\n element === null || element === void 0 ? void 0 : element.setProps(props, ref, rendered, render);\n }, [\n props,\n ref,\n rendered,\n render\n ]);\n let parentNode = (0, $95feo$useContext)($e1995378a142960e$var$SSRContext);\n if (parentNode) {\n // Guard against double rendering in strict mode.\n let element = parentNode.ownerDocument.nodesByProps.get(props);\n if (!element) {\n element = parentNode.ownerDocument.createElement(Type);\n element.setProps(props, ref, rendered, render);\n parentNode.appendChild(element);\n parentNode.ownerDocument.updateCollection();\n parentNode.ownerDocument.nodesByProps.set(props, element);\n }\n return children ? /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$SSRContext.Provider, {\n value: element\n }, children) : null;\n }\n // @ts-ignore\n return /*#__PURE__*/ (0, $95feo$react).createElement(Type, {\n ref: itemRef\n }, children);\n}\nfunction $e1995378a142960e$export$18af5c7a9e9b3664(type, render) {\n let Component = ({ node: node })=>render(node.props, node.props.ref, node);\n let Result = (0, $95feo$forwardRef)((props, ref)=>{\n let isShallow = (0, $95feo$useContext)($e1995378a142960e$var$ShallowRenderContext);\n if (!isShallow) {\n if (render.length >= 3) throw new Error(render.name + ' cannot be rendered outside a collection.');\n return render(props, ref);\n }\n return $e1995378a142960e$var$useSSRCollectionNode(type, props, ref, 'children' in props ? props.children : null, null, (node)=>/*#__PURE__*/ (0, $95feo$react).createElement(Component, {\n node: node\n }));\n });\n // @ts-ignore\n Result.displayName = render.name;\n return Result;\n}\nfunction $e1995378a142960e$export$e953bb1cd0f19726(type, render, useChildren = $e1995378a142960e$var$useCollectionChildren) {\n let Component = ({ node: node })=>render(node.props, node.props.ref, node);\n let Result = (0, $95feo$forwardRef)((props, ref)=>{\n let children = useChildren(props);\n var _useSSRCollectionNode;\n return (_useSSRCollectionNode = $e1995378a142960e$var$useSSRCollectionNode(type, props, ref, null, children, (node)=>/*#__PURE__*/ (0, $95feo$react).createElement(Component, {\n node: node\n }))) !== null && _useSSRCollectionNode !== void 0 ? _useSSRCollectionNode : /*#__PURE__*/ (0, $95feo$react).createElement((0, $95feo$react).Fragment, null);\n });\n // @ts-ignore\n Result.displayName = render.name;\n return Result;\n}\nfunction $e1995378a142960e$var$useCollectionChildren(options) {\n return (0, $e948873055cbafe4$export$727c8fc270210f13)({\n ...options,\n addIdAndValue: true\n });\n}\nconst $e1995378a142960e$var$CollectionContext = /*#__PURE__*/ (0, $95feo$createContext)(null);\nfunction $e1995378a142960e$export$fb8073518f34e6ec(props) {\n let ctx = (0, $95feo$useContext)($e1995378a142960e$var$CollectionContext);\n let dependencies = ((ctx === null || ctx === void 0 ? void 0 : ctx.dependencies) || []).concat(props.dependencies);\n let idScope = props.idScope || (ctx === null || ctx === void 0 ? void 0 : ctx.idScope);\n let children = $e1995378a142960e$var$useCollectionChildren({\n ...props,\n idScope: idScope,\n dependencies: dependencies\n });\n let doc = (0, $95feo$useContext)($e1995378a142960e$var$CollectionDocumentContext);\n if (doc) children = /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$CollectionRoot, null, children);\n // Propagate dependencies and idScope to child collections.\n ctx = (0, $95feo$useMemo)(()=>({\n dependencies: dependencies,\n idScope: idScope\n }), [\n idScope,\n ...dependencies\n ]);\n return /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$CollectionContext.Provider, {\n value: ctx\n }, children);\n}\nfunction $e1995378a142960e$var$CollectionRoot({ children: children }) {\n let doc = (0, $95feo$useContext)($e1995378a142960e$var$CollectionDocumentContext);\n let wrappedChildren = (0, $95feo$useMemo)(()=>/*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$CollectionDocumentContext.Provider, {\n value: null\n }, /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$ShallowRenderContext.Provider, {\n value: true\n }, children)), [\n children\n ]);\n // During SSR, we render the content directly, and append nodes to the document during render.\n // The collection children return null so that nothing is actually rendered into the HTML.\n return (0, $95feo$useIsSSR)() ? /*#__PURE__*/ (0, $95feo$react).createElement($e1995378a142960e$var$SSRContext.Provider, {\n value: doc\n }, wrappedChildren) : /*#__PURE__*/ (0, $95feo$createPortal)(wrappedChildren, doc);\n}\n\n\nexport {$e1995378a142960e$export$bf788dd355e3a401 as CollectionBuilder, $e1995378a142960e$export$18af5c7a9e9b3664 as createLeafComponent, $e1995378a142960e$export$e953bb1cd0f19726 as createBranchComponent, $e1995378a142960e$export$fb8073518f34e6ec as Collection};\n//# sourceMappingURL=CollectionBuilder.module.js.map\n","import {createPortal as $8SdCi$createPortal} from \"react-dom\";\nimport $8SdCi$react, {createContext as $8SdCi$createContext, useContext as $8SdCi$useContext, forwardRef as $8SdCi$forwardRef} from \"react\";\nimport {useIsSSR as $8SdCi$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n// React doesn't understand the <template> element, which doesn't have children like a normal element.\n// It will throw an error during hydration when it expects the firstChild to contain content rendered\n// on the server, when in reality, the browser will have placed this inside the `content` document fragment.\n// This monkey patches the firstChild property for our special hidden template elements to work around this error.\n// See https://github.com/facebook/react/issues/19932\nif (typeof HTMLTemplateElement !== 'undefined') {\n const getFirstChild = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild').get;\n Object.defineProperty(HTMLTemplateElement.prototype, 'firstChild', {\n configurable: true,\n enumerable: true,\n get: function() {\n if (this.dataset.reactAriaHidden) return this.content.firstChild;\n else return getFirstChild.call(this);\n }\n });\n}\nconst $f39a9eba43920ace$export$94b6d0abf7d33e8c = /*#__PURE__*/ (0, $8SdCi$createContext)(false);\n// Portal to nowhere\nconst $f39a9eba43920ace$var$hiddenFragment = typeof DocumentFragment !== 'undefined' ? new DocumentFragment() : null;\nfunction $f39a9eba43920ace$export$8dc98ba7eadeaa56(props) {\n let isHidden = (0, $8SdCi$useContext)($f39a9eba43920ace$export$94b6d0abf7d33e8c);\n let isSSR = (0, $8SdCi$useIsSSR)();\n if (isHidden) // Don't hide again if we are already hidden.\n return /*#__PURE__*/ (0, $8SdCi$react).createElement((0, $8SdCi$react).Fragment, null, props.children);\n let children = /*#__PURE__*/ (0, $8SdCi$react).createElement($f39a9eba43920ace$export$94b6d0abf7d33e8c.Provider, {\n value: true\n }, props.children);\n // In SSR, portals are not supported by React. Instead, render into a <template>\n // element, which the browser will never display to the user. In addition, the\n // content is not part of the DOM tree, so it won't affect ids or other accessibility attributes.\n return isSSR ? /*#__PURE__*/ (0, $8SdCi$react).createElement(\"template\", {\n \"data-react-aria-hidden\": true\n }, children) : /*#__PURE__*/ (0, $8SdCi$createPortal)(children, $f39a9eba43920ace$var$hiddenFragment);\n}\nfunction $f39a9eba43920ace$export$86427a43e3e48ebb(fn) {\n let Wrapper = (props, ref)=>{\n let isHidden = (0, $8SdCi$useContext)($f39a9eba43920ace$export$94b6d0abf7d33e8c);\n if (isHidden) return null;\n return fn(props, ref);\n };\n // @ts-ignore - for react dev tools\n Wrapper.displayName = fn.displayName || fn.name;\n return (0, $8SdCi$forwardRef)(Wrapper);\n}\nfunction $f39a9eba43920ace$export$b5d7cc18bb8d2b59() {\n return (0, $8SdCi$useContext)($f39a9eba43920ace$export$94b6d0abf7d33e8c);\n}\n\n\nexport {$f39a9eba43920ace$export$94b6d0abf7d33e8c as HiddenContext, $f39a9eba43920ace$export$8dc98ba7eadeaa56 as Hidden, $f39a9eba43920ace$export$86427a43e3e48ebb as createHideableComponent, $f39a9eba43920ace$export$b5d7cc18bb8d2b59 as useIsHidden};\n//# sourceMappingURL=Hidden.module.js.map\n","import {useMemo as $luMFQ$useMemo, cloneElement as $luMFQ$cloneElement} from \"react\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $e948873055cbafe4$export$727c8fc270210f13(props) {\n let { children: children, items: items, idScope: idScope, addIdAndValue: addIdAndValue, dependencies: dependencies = [] } = props;\n // Invalidate the cache whenever the parent value changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n let cache = (0, $luMFQ$useMemo)(()=>new WeakMap(), dependencies);\n return (0, $luMFQ$useMemo)(()=>{\n if (items && typeof children === 'function') {\n let res = [];\n for (let item of items){\n let rendered = cache.get(item);\n if (!rendered) {\n rendered = children(item);\n var _rendered_props_id, _ref;\n // @ts-ignore\n let key = (_ref = (_rendered_props_id = rendered.props.id) !== null && _rendered_props_id !== void 0 ? _rendered_props_id : item.key) !== null && _ref !== void 0 ? _ref : item.id;\n if (key == null) throw new Error('Could not determine key for item');\n if (idScope) key = idScope + ':' + key;\n // Note: only works if wrapped Item passes through id...\n rendered = (0, $luMFQ$cloneElement)(rendered, addIdAndValue ? {\n key: key,\n id: key,\n value: item\n } : {\n key: key\n });\n cache.set(item, rendered);\n }\n res.push(rendered);\n }\n return res;\n } else if (typeof children !== 'function') return children;\n }, [\n children,\n items,\n cache,\n idScope,\n addIdAndValue\n ]);\n}\n\n\nexport {$e948873055cbafe4$export$727c8fc270210f13 as useCachedChildren};\n//# sourceMappingURL=useCachedChildren.module.js.map\n","var $02cb4c75c506befe$exports = {};\n$02cb4c75c506befe$exports = {\n \"buttonLabel\": `\\u{639}\\u{631}\\u{636} \\u{627}\\u{644}\\u{645}\\u{642}\\u{62A}\\u{631}\\u{62D}\\u{627}\\u{62A}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{62E}\\u{64A}\\u{627}\\u{631}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{62E}\\u{64A}\\u{627}\\u{631}\\u{627}\\u{62A}`\n })} \\u{645}\\u{62A}\\u{627}\\u{62D}\\u{629}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{627}\\u{644}\\u{645}\\u{62C}\\u{645}\\u{648}\\u{639}\\u{629} \\u{627}\\u{644}\\u{645}\\u{62F}\\u{62E}\\u{644}\\u{629} ${args.groupTitle}, \\u{645}\\u{639} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{62E}\\u{64A}\\u{627}\\u{631}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{62E}\\u{64A}\\u{627}\\u{631}\\u{627}\\u{62A}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{645}\\u{62D}\\u{62F}\\u{62F}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{645}\\u{642}\\u{62A}\\u{631}\\u{62D}\\u{627}\\u{62A}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}\\u{60C} \\u{645}\\u{62D}\\u{62F}\\u{62F}`\n};\n\n\nexport {$02cb4c75c506befe$exports as default};\n//# sourceMappingURL=ar-AE.module.js.map\n","import $hlgbr$arAEmodulejs from \"./ar-AE.mjs\";\nimport $hlgbr$bgBGmodulejs from \"./bg-BG.mjs\";\nimport $hlgbr$csCZmodulejs from \"./cs-CZ.mjs\";\nimport $hlgbr$daDKmodulejs from \"./da-DK.mjs\";\nimport $hlgbr$deDEmodulejs from \"./de-DE.mjs\";\nimport $hlgbr$elGRmodulejs from \"./el-GR.mjs\";\nimport $hlgbr$enUSmodulejs from \"./en-US.mjs\";\nimport $hlgbr$esESmodulejs from \"./es-ES.mjs\";\nimport $hlgbr$etEEmodulejs from \"./et-EE.mjs\";\nimport $hlgbr$fiFImodulejs from \"./fi-FI.mjs\";\nimport $hlgbr$frFRmodulejs from \"./fr-FR.mjs\";\nimport $hlgbr$heILmodulejs from \"./he-IL.mjs\";\nimport $hlgbr$hrHRmodulejs from \"./hr-HR.mjs\";\nimport $hlgbr$huHUmodulejs from \"./hu-HU.mjs\";\nimport $hlgbr$itITmodulejs from \"./it-IT.mjs\";\nimport $hlgbr$jaJPmodulejs from \"./ja-JP.mjs\";\nimport $hlgbr$koKRmodulejs from \"./ko-KR.mjs\";\nimport $hlgbr$ltLTmodulejs from \"./lt-LT.mjs\";\nimport $hlgbr$lvLVmodulejs from \"./lv-LV.mjs\";\nimport $hlgbr$nbNOmodulejs from \"./nb-NO.mjs\";\nimport $hlgbr$nlNLmodulejs from \"./nl-NL.mjs\";\nimport $hlgbr$plPLmodulejs from \"./pl-PL.mjs\";\nimport $hlgbr$ptBRmodulejs from \"./pt-BR.mjs\";\nimport $hlgbr$ptPTmodulejs from \"./pt-PT.mjs\";\nimport $hlgbr$roROmodulejs from \"./ro-RO.mjs\";\nimport $hlgbr$ruRUmodulejs from \"./ru-RU.mjs\";\nimport $hlgbr$skSKmodulejs from \"./sk-SK.mjs\";\nimport $hlgbr$slSImodulejs from \"./sl-SI.mjs\";\nimport $hlgbr$srSPmodulejs from \"./sr-SP.mjs\";\nimport $hlgbr$svSEmodulejs from \"./sv-SE.mjs\";\nimport $hlgbr$trTRmodulejs from \"./tr-TR.mjs\";\nimport $hlgbr$ukUAmodulejs from \"./uk-UA.mjs\";\nimport $hlgbr$zhCNmodulejs from \"./zh-CN.mjs\";\nimport $hlgbr$zhTWmodulejs from \"./zh-TW.mjs\";\n\nvar $de5926a92e8ebc5b$exports = {};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$de5926a92e8ebc5b$exports = {\n \"ar-AE\": $hlgbr$arAEmodulejs,\n \"bg-BG\": $hlgbr$bgBGmodulejs,\n \"cs-CZ\": $hlgbr$csCZmodulejs,\n \"da-DK\": $hlgbr$daDKmodulejs,\n \"de-DE\": $hlgbr$deDEmodulejs,\n \"el-GR\": $hlgbr$elGRmodulejs,\n \"en-US\": $hlgbr$enUSmodulejs,\n \"es-ES\": $hlgbr$esESmodulejs,\n \"et-EE\": $hlgbr$etEEmodulejs,\n \"fi-FI\": $hlgbr$fiFImodulejs,\n \"fr-FR\": $hlgbr$frFRmodulejs,\n \"he-IL\": $hlgbr$heILmodulejs,\n \"hr-HR\": $hlgbr$hrHRmodulejs,\n \"hu-HU\": $hlgbr$huHUmodulejs,\n \"it-IT\": $hlgbr$itITmodulejs,\n \"ja-JP\": $hlgbr$jaJPmodulejs,\n \"ko-KR\": $hlgbr$koKRmodulejs,\n \"lt-LT\": $hlgbr$ltLTmodulejs,\n \"lv-LV\": $hlgbr$lvLVmodulejs,\n \"nb-NO\": $hlgbr$nbNOmodulejs,\n \"nl-NL\": $hlgbr$nlNLmodulejs,\n \"pl-PL\": $hlgbr$plPLmodulejs,\n \"pt-BR\": $hlgbr$ptBRmodulejs,\n \"pt-PT\": $hlgbr$ptPTmodulejs,\n \"ro-RO\": $hlgbr$roROmodulejs,\n \"ru-RU\": $hlgbr$ruRUmodulejs,\n \"sk-SK\": $hlgbr$skSKmodulejs,\n \"sl-SI\": $hlgbr$slSImodulejs,\n \"sr-SP\": $hlgbr$srSPmodulejs,\n \"sv-SE\": $hlgbr$svSEmodulejs,\n \"tr-TR\": $hlgbr$trTRmodulejs,\n \"uk-UA\": $hlgbr$ukUAmodulejs,\n \"zh-CN\": $hlgbr$zhCNmodulejs,\n \"zh-TW\": $hlgbr$zhTWmodulejs\n};\n\n\nexport {$de5926a92e8ebc5b$exports as default};\n//# sourceMappingURL=intlStrings.module.js.map\n","var $568b8163f1e56faf$exports = {};\n$568b8163f1e56faf$exports = {\n \"buttonLabel\": `\\u{41F}\\u{43E}\\u{43A}\\u{430}\\u{436}\\u{438} \\u{43F}\\u{440}\\u{435}\\u{434}\\u{43B}\\u{43E}\\u{436}\\u{435}\\u{43D}\\u{438}\\u{44F}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{43E}\\u{43F}\\u{446}\\u{438}\\u{44F}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{43E}\\u{43F}\\u{446}\\u{438}\\u{438}`\n })} \\u{43D}\\u{430} \\u{440}\\u{430}\\u{437}\\u{43F}\\u{43E}\\u{43B}\\u{43E}\\u{436}\\u{435}\\u{43D}\\u{438}\\u{435}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{412}\\u{44A}\\u{432}\\u{435}\\u{434}\\u{435}\\u{43D}\\u{430} \\u{433}\\u{440}\\u{443}\\u{43F}\\u{430} ${args.groupTitle}, \\u{441} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{43E}\\u{43F}\\u{446}\\u{438}\\u{44F}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{43E}\\u{43F}\\u{446}\\u{438}\\u{438}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{438}\\u{437}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{438}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{41F}\\u{440}\\u{435}\\u{434}\\u{43B}\\u{43E}\\u{436}\\u{435}\\u{43D}\\u{438}\\u{44F}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{438}\\u{437}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{438}`\n};\n\n\nexport {$568b8163f1e56faf$exports as default};\n//# sourceMappingURL=bg-BG.module.js.map\n","var $87581c0202d106b8$exports = {};\n$87581c0202d106b8$exports = {\n \"buttonLabel\": `Zobrazit doporu\\u{10D}en\\xed`,\n \"countAnnouncement\": (args, formatter)=>`K dispozici ${formatter.plural(args.optionCount, {\n one: ()=>`je ${formatter.number(args.optionCount)} mo\\u{17E}nost`,\n other: ()=>`jsou/je ${formatter.number(args.optionCount)} mo\\u{17E}nosti/-\\xed`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Zadan\\xe1 skupina \\u{201E}${args.groupTitle}\\u{201C} ${formatter.plural(args.groupCount, {\n one: ()=>`s ${formatter.number(args.groupCount)} mo\\u{17E}nost\\xed`,\n other: ()=>`se ${formatter.number(args.groupCount)} mo\\u{17E}nostmi`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: ` (vybr\\xe1no)`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `N\\xe1vrhy`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, vybr\\xe1no`\n};\n\n\nexport {$87581c0202d106b8$exports as default};\n//# sourceMappingURL=cs-CZ.module.js.map\n","var $a10a0369f5433ed1$exports = {};\n$a10a0369f5433ed1$exports = {\n \"buttonLabel\": `Vis forslag`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} mulighed tilg\\xe6ngelig`,\n other: ()=>`${formatter.number(args.optionCount)} muligheder tilg\\xe6ngelige`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Angivet gruppe ${args.groupTitle}, med ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} mulighed`,\n other: ()=>`${formatter.number(args.groupCount)} muligheder`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, valgt`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Forslag`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, valgt`\n};\n\n\nexport {$a10a0369f5433ed1$exports as default};\n//# sourceMappingURL=da-DK.module.js.map\n","var $bfd288727d5cb166$exports = {};\n$bfd288727d5cb166$exports = {\n \"buttonLabel\": `Empfehlungen anzeigen`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} Option`,\n other: ()=>`${formatter.number(args.optionCount)} Optionen`\n })} verf\\xfcgbar.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Eingetretene Gruppe ${args.groupTitle}, mit ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} Option`,\n other: ()=>`${formatter.number(args.groupCount)} Optionen`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, ausgew\\xe4hlt`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Empfehlungen`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, ausgew\\xe4hlt`\n};\n\n\nexport {$bfd288727d5cb166$exports as default};\n//# sourceMappingURL=de-DE.module.js.map\n","var $ca177778f9a74e3c$exports = {};\n$ca177778f9a74e3c$exports = {\n \"buttonLabel\": `\\u{3A0}\\u{3C1}\\u{3BF}\\u{3B2}\\u{3BF}\\u{3BB}\\u{3AE} \\u{3C0}\\u{3C1}\\u{3BF}\\u{3C4}\\u{3AC}\\u{3C3}\\u{3B5}\\u{3C9}\\u{3BD}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3BF}\\u{3B3}\\u{3AE}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3BF}\\u{3B3}\\u{3AD}\\u{3C2} `\n })} \\u{3B4}\\u{3B9}\\u{3B1}\\u{3B8}\\u{3AD}\\u{3C3}\\u{3B9}\\u{3BC}\\u{3B5}\\u{3C2}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{395}\\u{3B9}\\u{3C3}\\u{3B1}\\u{3B3}\\u{3BC}\\u{3AD}\\u{3BD}\\u{3B7} \\u{3BF}\\u{3BC}\\u{3AC}\\u{3B4}\\u{3B1} ${args.groupTitle}, \\u{3BC}\\u{3B5} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3BF}\\u{3B3}\\u{3AE}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3BF}\\u{3B3}\\u{3AD}\\u{3C2}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3B5}\\u{3B3}\\u{3BC}\\u{3AD}\\u{3BD}\\u{3BF}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{3A0}\\u{3C1}\\u{3BF}\\u{3C4}\\u{3AC}\\u{3C3}\\u{3B5}\\u{3B9}\\u{3C2}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{3B5}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3AD}\\u{3C7}\\u{3B8}\\u{3B7}\\u{3BA}\\u{3B5}`\n};\n\n\nexport {$ca177778f9a74e3c$exports as default};\n//# sourceMappingURL=el-GR.module.js.map\n","var $9b5aa79ef84beb6c$exports = {};\n$9b5aa79ef84beb6c$exports = {\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Entered group ${args.groupTitle}, with ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} option`,\n other: ()=>`${formatter.number(args.groupCount)} options`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, selected`,\n other: ``\n }, args.isSelected)}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} option`,\n other: ()=>`${formatter.number(args.optionCount)} options`\n })} available.`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, selected`,\n \"buttonLabel\": `Show suggestions`,\n \"listboxLabel\": `Suggestions`\n};\n\n\nexport {$9b5aa79ef84beb6c$exports as default};\n//# sourceMappingURL=en-US.module.js.map\n","var $57968e8209de2557$exports = {};\n$57968e8209de2557$exports = {\n \"buttonLabel\": `Mostrar sugerencias`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opci\\xf3n`,\n other: ()=>`${formatter.number(args.optionCount)} opciones`\n })} disponible(s).`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Se ha unido al grupo ${args.groupTitle}, con ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opci\\xf3n`,\n other: ()=>`${formatter.number(args.groupCount)} opciones`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, seleccionado`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Sugerencias`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, seleccionado`\n};\n\n\nexport {$57968e8209de2557$exports as default};\n//# sourceMappingURL=es-ES.module.js.map\n","var $60690790bf4c1c6a$exports = {};\n$60690790bf4c1c6a$exports = {\n \"buttonLabel\": `Kuva soovitused`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} valik`,\n other: ()=>`${formatter.number(args.optionCount)} valikud`\n })} saadaval.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Sisestatud r\\xfchm ${args.groupTitle}, valikuga ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} valik`,\n other: ()=>`${formatter.number(args.groupCount)} valikud`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, valitud`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Soovitused`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, valitud`\n};\n\n\nexport {$60690790bf4c1c6a$exports as default};\n//# sourceMappingURL=et-EE.module.js.map\n","var $1101246e8c7d9357$exports = {};\n$1101246e8c7d9357$exports = {\n \"buttonLabel\": `N\\xe4yt\\xe4 ehdotukset`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} vaihtoehto`,\n other: ()=>`${formatter.number(args.optionCount)} vaihtoehdot`\n })} saatavilla.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Mentiin ryhm\\xe4\\xe4n ${args.groupTitle}, ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} vaihtoehdon`,\n other: ()=>`${formatter.number(args.groupCount)} vaihtoehdon`\n })} kanssa.`,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, valittu`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Ehdotukset`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, valittu`\n};\n\n\nexport {$1101246e8c7d9357$exports as default};\n//# sourceMappingURL=fi-FI.module.js.map\n","var $6404b5cb5b241730$exports = {};\n$6404b5cb5b241730$exports = {\n \"buttonLabel\": `Afficher les suggestions`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} option`,\n other: ()=>`${formatter.number(args.optionCount)} options`\n })} disponible(s).`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Groupe ${args.groupTitle} rejoint, avec ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} option`,\n other: ()=>`${formatter.number(args.groupCount)} options`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, s\\xe9lectionn\\xe9(s)`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Suggestions`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, s\\xe9lectionn\\xe9`\n};\n\n\nexport {$6404b5cb5b241730$exports as default};\n//# sourceMappingURL=fr-FR.module.js.map\n","var $dfeafa702e92e31f$exports = {};\n$dfeafa702e92e31f$exports = {\n \"buttonLabel\": `\\u{5D4}\\u{5E6}\\u{5D2} \\u{5D4}\\u{5E6}\\u{5E2}\\u{5D5}\\u{5EA}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`\\u{5D0}\\u{5E4}\\u{5E9}\\u{5E8}\\u{5D5}\\u{5EA} ${formatter.number(args.optionCount)}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{5D0}\\u{5E4}\\u{5E9}\\u{5E8}\\u{5D5}\\u{5D9}\\u{5D5}\\u{5EA}`\n })} \\u{5D1}\\u{5DE}\\u{5E6}\\u{5D1} \\u{5D6}\\u{5DE}\\u{5D9}\\u{5DF}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{5E0}\\u{5DB}\\u{5E0}\\u{5E1} \\u{5DC}\\u{5E7}\\u{5D1}\\u{5D5}\\u{5E6}\\u{5D4} ${args.groupTitle}, \\u{5E2}\\u{5DD} ${formatter.plural(args.groupCount, {\n one: ()=>`\\u{5D0}\\u{5E4}\\u{5E9}\\u{5E8}\\u{5D5}\\u{5EA} ${formatter.number(args.groupCount)}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{5D0}\\u{5E4}\\u{5E9}\\u{5E8}\\u{5D5}\\u{5D9}\\u{5D5}\\u{5EA}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{5E0}\\u{5D1}\\u{5D7}\\u{5E8}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{5D4}\\u{5E6}\\u{5E2}\\u{5D5}\\u{5EA}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{5E0}\\u{5D1}\\u{5D7}\\u{5E8}`\n};\n\n\nexport {$dfeafa702e92e31f$exports as default};\n//# sourceMappingURL=he-IL.module.js.map\n","var $2d125e0b34676352$exports = {};\n$2d125e0b34676352$exports = {\n \"buttonLabel\": `Prika\\u{17E}i prijedloge`,\n \"countAnnouncement\": (args, formatter)=>`Dostupno jo\\u{161}: ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opcija`,\n other: ()=>`${formatter.number(args.optionCount)} opcije/a`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Unesena skupina ${args.groupTitle}, s ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opcijom`,\n other: ()=>`${formatter.number(args.groupCount)} opcije/a`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, odabranih`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Prijedlozi`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, odabrano`\n};\n\n\nexport {$2d125e0b34676352$exports as default};\n//# sourceMappingURL=hr-HR.module.js.map\n","var $ea029611d7634059$exports = {};\n$ea029611d7634059$exports = {\n \"buttonLabel\": `Javaslatok megjelen\\xedt\\xe9se`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} lehet\\u{151}s\\xe9g`,\n other: ()=>`${formatter.number(args.optionCount)} lehet\\u{151}s\\xe9g`\n })} \\xe1ll rendelkez\\xe9sre.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Bel\\xe9pett a(z) ${args.groupTitle} csoportba, amely ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} lehet\\u{151}s\\xe9get`,\n other: ()=>`${formatter.number(args.groupCount)} lehet\\u{151}s\\xe9get`\n })} tartalmaz. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, kijel\\xf6lve`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Javaslatok`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, kijel\\xf6lve`\n};\n\n\nexport {$ea029611d7634059$exports as default};\n//# sourceMappingURL=hu-HU.module.js.map\n","var $77f075bb86ad7091$exports = {};\n$77f075bb86ad7091$exports = {\n \"buttonLabel\": `Mostra suggerimenti`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opzione disponibile`,\n other: ()=>`${formatter.number(args.optionCount)} opzioni disponibili`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Ingresso nel gruppo ${args.groupTitle}, con ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opzione`,\n other: ()=>`${formatter.number(args.groupCount)} opzioni`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, selezionato`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Suggerimenti`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, selezionato`\n};\n\n\nexport {$77f075bb86ad7091$exports as default};\n//# sourceMappingURL=it-IT.module.js.map\n","var $6e87462e84907983$exports = {};\n$6e87462e84907983$exports = {\n \"buttonLabel\": `\\u{5019}\\u{88DC}\\u{3092}\\u{8868}\\u{793A}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{500B}\\u{306E}\\u{30AA}\\u{30D7}\\u{30B7}\\u{30E7}\\u{30F3}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{500B}\\u{306E}\\u{30AA}\\u{30D7}\\u{30B7}\\u{30E7}\\u{30F3}`\n })}\\u{3092}\\u{5229}\\u{7528}\\u{3067}\\u{304D}\\u{307E}\\u{3059}\\u{3002}`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{5165}\\u{529B}\\u{3055}\\u{308C}\\u{305F}\\u{30B0}\\u{30EB}\\u{30FC}\\u{30D7} ${args.groupTitle}\\u{3001}${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{500B}\\u{306E}\\u{30AA}\\u{30D7}\\u{30B7}\\u{30E7}\\u{30F3}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{500B}\\u{306E}\\u{30AA}\\u{30D7}\\u{30B7}\\u{30E7}\\u{30F3}`\n })}\\u{3092}\\u{542B}\\u{3080}\\u{3002}`,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `\\u{3001}\\u{9078}\\u{629E}\\u{6E08}\\u{307F}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{5019}\\u{88DC}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}\\u{3001}\\u{9078}\\u{629E}\\u{6E08}\\u{307F}`\n};\n\n\nexport {$6e87462e84907983$exports as default};\n//# sourceMappingURL=ja-JP.module.js.map\n","var $9246f2c6edc6b232$exports = {};\n$9246f2c6edc6b232$exports = {\n \"buttonLabel\": `\\u{C81C}\\u{C548} \\u{C0AC}\\u{D56D} \\u{D45C}\\u{C2DC}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)}\\u{AC1C} \\u{C635}\\u{C158}`,\n other: ()=>`${formatter.number(args.optionCount)}\\u{AC1C} \\u{C635}\\u{C158}`\n })}\\u{C744} \\u{C0AC}\\u{C6A9}\\u{D560} \\u{C218} \\u{C788}\\u{C2B5}\\u{B2C8}\\u{B2E4}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{C785}\\u{B825}\\u{D55C} \\u{ADF8}\\u{B8F9} ${args.groupTitle}, ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)}\\u{AC1C} \\u{C635}\\u{C158}`,\n other: ()=>`${formatter.number(args.groupCount)}\\u{AC1C} \\u{C635}\\u{C158}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{C120}\\u{D0DD}\\u{B428}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{C81C}\\u{C548}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{C120}\\u{D0DD}\\u{B428}`\n};\n\n\nexport {$9246f2c6edc6b232$exports as default};\n//# sourceMappingURL=ko-KR.module.js.map\n","var $e587accc6c0a434c$exports = {};\n$e587accc6c0a434c$exports = {\n \"buttonLabel\": `Rodyti pasi\\u{16B}lymus`,\n \"countAnnouncement\": (args, formatter)=>`Yra ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} parinktis`,\n other: ()=>`${formatter.number(args.optionCount)} parinktys (-i\\u{173})`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{12E}vesta grup\\u{117} ${args.groupTitle}, su ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} parinktimi`,\n other: ()=>`${formatter.number(args.groupCount)} parinktimis (-i\\u{173})`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, pasirinkta`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Pasi\\u{16B}lymai`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, pasirinkta`\n};\n\n\nexport {$e587accc6c0a434c$exports as default};\n//# sourceMappingURL=lt-LT.module.js.map\n","var $03a1900e7400b5ab$exports = {};\n$03a1900e7400b5ab$exports = {\n \"buttonLabel\": `R\\u{101}d\\u{12B}t ieteikumus`,\n \"countAnnouncement\": (args, formatter)=>`Pieejamo opciju skaits: ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opcija`,\n other: ()=>`${formatter.number(args.optionCount)} opcijas`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Ievad\\u{12B}ta grupa ${args.groupTitle}, ar ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opciju`,\n other: ()=>`${formatter.number(args.groupCount)} opcij\\u{101}m`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, atlas\\u{12B}ta`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Ieteikumi`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, atlas\\u{12B}ta`\n};\n\n\nexport {$03a1900e7400b5ab$exports as default};\n//# sourceMappingURL=lv-LV.module.js.map\n","var $1387676441be6cf6$exports = {};\n$1387676441be6cf6$exports = {\n \"buttonLabel\": `Vis forslag`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} alternativ`,\n other: ()=>`${formatter.number(args.optionCount)} alternativer`\n })} finnes.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Angitt gruppe ${args.groupTitle}, med ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} alternativ`,\n other: ()=>`${formatter.number(args.groupCount)} alternativer`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, valgt`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Forslag`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, valgt`\n};\n\n\nexport {$1387676441be6cf6$exports as default};\n//# sourceMappingURL=nb-NO.module.js.map\n","var $17e82ebf0f8ab91f$exports = {};\n$17e82ebf0f8ab91f$exports = {\n \"buttonLabel\": `Suggesties weergeven`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} optie`,\n other: ()=>`${formatter.number(args.optionCount)} opties`\n })} beschikbaar.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Groep ${args.groupTitle} ingevoerd met ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} optie`,\n other: ()=>`${formatter.number(args.groupCount)} opties`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, geselecteerd`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Suggesties`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, geselecteerd`\n};\n\n\nexport {$17e82ebf0f8ab91f$exports as default};\n//# sourceMappingURL=nl-NL.module.js.map\n","var $2f5377d3471630e5$exports = {};\n$2f5377d3471630e5$exports = {\n \"buttonLabel\": `Wy\\u{15B}wietlaj sugestie`,\n \"countAnnouncement\": (args, formatter)=>`dost\\u{119}pna/dost\\u{119}pne(-nych) ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opcja`,\n other: ()=>`${formatter.number(args.optionCount)} opcje(-i)`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Do\\u{142}\\u{105}czono do grupy ${args.groupTitle}, z ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opcj\\u{105}`,\n other: ()=>`${formatter.number(args.groupCount)} opcjami`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, wybrano`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Sugestie`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, wybrano`\n};\n\n\nexport {$2f5377d3471630e5$exports as default};\n//# sourceMappingURL=pl-PL.module.js.map\n","var $dee9868b6fa95ffe$exports = {};\n$dee9868b6fa95ffe$exports = {\n \"buttonLabel\": `Mostrar sugest\\xf5es`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} op\\xe7\\xe3o`,\n other: ()=>`${formatter.number(args.optionCount)} op\\xe7\\xf5es`\n })} dispon\\xedvel.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Grupo inserido ${args.groupTitle}, com ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} op\\xe7\\xe3o`,\n other: ()=>`${formatter.number(args.groupCount)} op\\xe7\\xf5es`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, selecionado`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Sugest\\xf5es`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, selecionado`\n};\n\n\nexport {$dee9868b6fa95ffe$exports as default};\n//# sourceMappingURL=pt-BR.module.js.map\n","var $f8b2e63637cbb5a6$exports = {};\n$f8b2e63637cbb5a6$exports = {\n \"buttonLabel\": `Apresentar sugest\\xf5es`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} op\\xe7\\xe3o`,\n other: ()=>`${formatter.number(args.optionCount)} op\\xe7\\xf5es`\n })} dispon\\xedvel.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Grupo introduzido ${args.groupTitle}, com ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} op\\xe7\\xe3o`,\n other: ()=>`${formatter.number(args.groupCount)} op\\xe7\\xf5es`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, selecionado`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Sugest\\xf5es`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, selecionado`\n};\n\n\nexport {$f8b2e63637cbb5a6$exports as default};\n//# sourceMappingURL=pt-PT.module.js.map\n","var $46a885db3b44ea95$exports = {};\n$46a885db3b44ea95$exports = {\n \"buttonLabel\": `Afi\\u{219}are sugestii`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} op\\u{21B}iune`,\n other: ()=>`${formatter.number(args.optionCount)} op\\u{21B}iuni`\n })} disponibile.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Grup ${args.groupTitle} introdus, cu ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} op\\u{21B}iune`,\n other: ()=>`${formatter.number(args.groupCount)} op\\u{21B}iuni`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, selectat`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Sugestii`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, selectat`\n};\n\n\nexport {$46a885db3b44ea95$exports as default};\n//# sourceMappingURL=ro-RO.module.js.map\n","var $50d8a8f0afa9dee5$exports = {};\n$50d8a8f0afa9dee5$exports = {\n \"buttonLabel\": `\\u{41F}\\u{43E}\\u{43A}\\u{430}\\u{437}\\u{430}\\u{442}\\u{44C} \\u{43F}\\u{440}\\u{435}\\u{434}\\u{43B}\\u{43E}\\u{436}\\u{435}\\u{43D}\\u{438}\\u{44F}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}\\u{43E}\\u{432}`\n })} \\u{434}\\u{43E}\\u{441}\\u{442}\\u{443}\\u{43F}\\u{43D}\\u{43E}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{412}\\u{432}\\u{435}\\u{434}\\u{435}\\u{43D}\\u{43D}\\u{430}\\u{44F} \\u{433}\\u{440}\\u{443}\\u{43F}\\u{43F}\\u{430} ${args.groupTitle}, \\u{441} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}\\u{43E}\\u{43C}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}\\u{430}\\u{43C}\\u{438}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{432}\\u{44B}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{43D}\\u{44B}\\u{43C}\\u{438}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{41F}\\u{440}\\u{435}\\u{434}\\u{43B}\\u{43E}\\u{436}\\u{435}\\u{43D}\\u{438}\\u{44F}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{432}\\u{44B}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{43E}`\n};\n\n\nexport {$50d8a8f0afa9dee5$exports as default};\n//# sourceMappingURL=ru-RU.module.js.map\n","var $2867ee6173245507$exports = {};\n$2867ee6173245507$exports = {\n \"buttonLabel\": `Zobrazi\\u{165} n\\xe1vrhy`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} mo\\u{17E}nos\\u{165}`,\n other: ()=>`${formatter.number(args.optionCount)} mo\\u{17E}nosti/-\\xed`\n })} k dispoz\\xedcii.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Zadan\\xe1 skupina ${args.groupTitle}, s ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} mo\\u{17E}nos\\u{165}ou`,\n other: ()=>`${formatter.number(args.groupCount)} mo\\u{17E}nos\\u{165}ami`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, vybrat\\xe9`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `N\\xe1vrhy`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, vybrat\\xe9`\n};\n\n\nexport {$2867ee6173245507$exports as default};\n//# sourceMappingURL=sk-SK.module.js.map\n","var $0631b65beeb09b50$exports = {};\n$0631b65beeb09b50$exports = {\n \"buttonLabel\": `Prika\\u{17E}i predloge`,\n \"countAnnouncement\": (args, formatter)=>`Na voljo je ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opcija`,\n other: ()=>`${formatter.number(args.optionCount)} opcije`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Vnesena skupina ${args.groupTitle}, z ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opcija`,\n other: ()=>`${formatter.number(args.groupCount)} opcije`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, izbrano`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Predlogi`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, izbrano`\n};\n\n\nexport {$0631b65beeb09b50$exports as default};\n//# sourceMappingURL=sl-SI.module.js.map\n","var $65fc749265dcd686$exports = {};\n$65fc749265dcd686$exports = {\n \"buttonLabel\": `Prika\\u{17E}i predloge`,\n \"countAnnouncement\": (args, formatter)=>`Dostupno jo\\u{161}: ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} opcija`,\n other: ()=>`${formatter.number(args.optionCount)} opcije/a`\n })}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Unesena grupa ${args.groupTitle}, s ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} opcijom`,\n other: ()=>`${formatter.number(args.groupCount)} optione/a`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, izabranih`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `Predlozi`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, izabrano`\n};\n\n\nexport {$65fc749265dcd686$exports as default};\n//# sourceMappingURL=sr-SP.module.js.map\n","var $69ba655c7853c08e$exports = {};\n$69ba655c7853c08e$exports = {\n \"buttonLabel\": `Visa f\\xf6rslag`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} alternativ`,\n other: ()=>`${formatter.number(args.optionCount)} alternativ`\n })} tillg\\xe4ngliga.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Ingick i gruppen ${args.groupTitle} med ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} alternativ`,\n other: ()=>`${formatter.number(args.groupCount)} alternativ`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, valda`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `F\\xf6rslag`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, valda`\n};\n\n\nexport {$69ba655c7853c08e$exports as default};\n//# sourceMappingURL=sv-SE.module.js.map\n","var $a79794784d61577c$exports = {};\n$a79794784d61577c$exports = {\n \"buttonLabel\": `\\xd6nerileri g\\xf6ster`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} se\\xe7enek`,\n other: ()=>`${formatter.number(args.optionCount)} se\\xe7enekler`\n })} kullan\\u{131}labilir.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`Girilen grup ${args.groupTitle}, ile ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} se\\xe7enek`,\n other: ()=>`${formatter.number(args.groupCount)} se\\xe7enekler`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, se\\xe7ildi`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\xd6neriler`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, se\\xe7ildi`\n};\n\n\nexport {$a79794784d61577c$exports as default};\n//# sourceMappingURL=tr-TR.module.js.map\n","var $c2845791417ebaf4$exports = {};\n$c2845791417ebaf4$exports = {\n \"buttonLabel\": `\\u{41F}\\u{43E}\\u{43A}\\u{430}\\u{437}\\u{430}\\u{442}\\u{438} \\u{43F}\\u{440}\\u{43E}\\u{43F}\\u{43E}\\u{437}\\u{438}\\u{446}\\u{456}\\u{457}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}\\u{438}(-\\u{456}\\u{432})`\n })} \\u{434}\\u{43E}\\u{441}\\u{442}\\u{443}\\u{43F}\\u{43D}\\u{43E}.`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{412}\\u{432}\\u{435}\\u{434}\\u{435}\\u{43D}\\u{430} \\u{433}\\u{440}\\u{443}\\u{43F}\\u{430} ${args.groupTitle}, \\u{437} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{43F}\\u{430}\\u{440}\\u{430}\\u{43C}\\u{435}\\u{442}\\u{440}\\u{438}(-\\u{456}\\u{432})`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{432}\\u{438}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{43E}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{41F}\\u{440}\\u{43E}\\u{43F}\\u{43E}\\u{437}\\u{438}\\u{446}\\u{456}\\u{457}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{432}\\u{438}\\u{431}\\u{440}\\u{430}\\u{43D}\\u{43E}`\n};\n\n\nexport {$c2845791417ebaf4$exports as default};\n//# sourceMappingURL=uk-UA.module.js.map\n","var $29b642d0025cc7a4$exports = {};\n$29b642d0025cc7a4$exports = {\n \"buttonLabel\": `\\u{663E}\\u{793A}\\u{5EFA}\\u{8BAE}`,\n \"countAnnouncement\": (args, formatter)=>`\\u{6709} ${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{4E2A}\\u{9009}\\u{9879}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{4E2A}\\u{9009}\\u{9879}`\n })}\\u{53EF}\\u{7528}\\u{3002}`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{8FDB}\\u{5165}\\u{4E86} ${args.groupTitle} \\u{7EC4}\\u{FF0C}\\u{5176}\\u{4E2D}\\u{6709} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{4E2A}\\u{9009}\\u{9879}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{4E2A}\\u{9009}\\u{9879}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{5DF2}\\u{9009}\\u{62E9}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{5EFA}\\u{8BAE}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{5DF2}\\u{9009}\\u{62E9}`\n};\n\n\nexport {$29b642d0025cc7a4$exports as default};\n//# sourceMappingURL=zh-CN.module.js.map\n","var $cd36dd33f9d46936$exports = {};\n$cd36dd33f9d46936$exports = {\n \"buttonLabel\": `\\u{986F}\\u{793A}\\u{5EFA}\\u{8B70}`,\n \"countAnnouncement\": (args, formatter)=>`${formatter.plural(args.optionCount, {\n one: ()=>`${formatter.number(args.optionCount)} \\u{9078}\\u{9805}`,\n other: ()=>`${formatter.number(args.optionCount)} \\u{9078}\\u{9805}`\n })} \\u{53EF}\\u{7528}\\u{3002}`,\n \"focusAnnouncement\": (args, formatter)=>`${formatter.select({\n true: ()=>`\\u{8F38}\\u{5165}\\u{7684}\\u{7FA4}\\u{7D44} ${args.groupTitle}, \\u{6709} ${formatter.plural(args.groupCount, {\n one: ()=>`${formatter.number(args.groupCount)} \\u{9078}\\u{9805}`,\n other: ()=>`${formatter.number(args.groupCount)} \\u{9078}\\u{9805}`\n })}. `,\n other: ``\n }, args.isGroupChange)}${args.optionText}${formatter.select({\n true: `, \\u{5DF2}\\u{9078}\\u{53D6}`,\n other: ``\n }, args.isSelected)}`,\n \"listboxLabel\": `\\u{5EFA}\\u{8B70}`,\n \"selectedAnnouncement\": (args)=>`${args.optionText}, \\u{5DF2}\\u{9078}\\u{53D6}`\n};\n\n\nexport {$cd36dd33f9d46936$exports as default};\n//# sourceMappingURL=zh-TW.module.js.map\n","import $dShfP$intlStringsmodulejs from \"./intlStrings.mjs\";\nimport {announce as $dShfP$announce} from \"@react-aria/live-announcer\";\nimport {ariaHideOutside as $dShfP$ariaHideOutside} from \"@react-aria/overlays\";\nimport {listData as $dShfP$listData, getItemId as $dShfP$getItemId} from \"@react-aria/listbox\";\nimport {useRouter as $dShfP$useRouter, chain as $dShfP$chain, useLabels as $dShfP$useLabels, isAppleDevice as $dShfP$isAppleDevice, mergeProps as $dShfP$mergeProps} from \"@react-aria/utils\";\nimport {useRef as $dShfP$useRef, useMemo as $dShfP$useMemo, useEffect as $dShfP$useEffect} from \"react\";\nimport {getChildNodes as $dShfP$getChildNodes, getItemCount as $dShfP$getItemCount} from \"@react-stately/collections\";\nimport {ListKeyboardDelegate as $dShfP$ListKeyboardDelegate, useSelectableCollection as $dShfP$useSelectableCollection} from \"@react-aria/selection\";\nimport {privateValidationStateProp as $dShfP$privateValidationStateProp} from \"@react-stately/form\";\nimport {useLocalizedStringFormatter as $dShfP$useLocalizedStringFormatter} from \"@react-aria/i18n\";\nimport {useMenuTrigger as $dShfP$useMenuTrigger} from \"@react-aria/menu\";\nimport {useTextField as $dShfP$useTextField} from \"@react-aria/textfield\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\n\n\nfunction $c350ade66beef0af$export$8c18d1b4f7232bbf(props, state) {\n let { buttonRef: buttonRef, popoverRef: popoverRef, inputRef: inputRef, listBoxRef: listBoxRef, keyboardDelegate: keyboardDelegate, layoutDelegate: layoutDelegate, shouldFocusWrap: // completionMode = 'suggest',\n shouldFocusWrap, isReadOnly: isReadOnly, isDisabled: isDisabled } = props;\n let backupBtnRef = (0, $dShfP$useRef)(null);\n buttonRef = buttonRef !== null && buttonRef !== void 0 ? buttonRef : backupBtnRef;\n let stringFormatter = (0, $dShfP$useLocalizedStringFormatter)((0, ($parcel$interopDefault($dShfP$intlStringsmodulejs))), '@react-aria/combobox');\n let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $dShfP$useMenuTrigger)({\n type: 'listbox',\n isDisabled: isDisabled || isReadOnly\n }, state, buttonRef);\n // Set listbox id so it can be used when calling getItemId later\n (0, $dShfP$listData).set(state, {\n id: menuProps.id\n });\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let { collection: collection } = state;\n let { disabledKeys: disabledKeys } = state.selectionManager;\n let delegate = (0, $dShfP$useMemo)(()=>keyboardDelegate || new (0, $dShfP$ListKeyboardDelegate)({\n collection: collection,\n disabledKeys: disabledKeys,\n ref: listBoxRef,\n layoutDelegate: layoutDelegate\n }), [\n keyboardDelegate,\n layoutDelegate,\n collection,\n disabledKeys,\n listBoxRef\n ]);\n // Use useSelectableCollection to get the keyboard handlers to apply to the textfield\n let { collectionProps: collectionProps } = (0, $dShfP$useSelectableCollection)({\n selectionManager: state.selectionManager,\n keyboardDelegate: delegate,\n disallowTypeAhead: true,\n disallowEmptySelection: true,\n shouldFocusWrap: shouldFocusWrap,\n ref: inputRef,\n // Prevent item scroll behavior from being applied here, should be handled in the user's Popover + ListBox component\n isVirtualized: true\n });\n let router = (0, $dShfP$useRouter)();\n // For textfield specific keydown operations\n let onKeyDown = (e)=>{\n if (e.nativeEvent.isComposing) return;\n switch(e.key){\n case 'Enter':\n case 'Tab':\n // Prevent form submission if menu is open since we may be selecting a option\n if (state.isOpen && e.key === 'Enter') e.preventDefault();\n // If the focused item is a link, trigger opening it. Items that are links are not selectable.\n if (state.isOpen && listBoxRef.current && state.selectionManager.focusedKey != null && state.selectionManager.isLink(state.selectionManager.focusedKey)) {\n let item = listBoxRef.current.querySelector(`[data-key=\"${CSS.escape(state.selectionManager.focusedKey.toString())}\"]`);\n if (e.key === 'Enter' && item instanceof HTMLAnchorElement) {\n let collectionItem = state.collection.getItem(state.selectionManager.focusedKey);\n if (collectionItem) router.open(item, e, collectionItem.props.href, collectionItem.props.routerOptions);\n }\n state.close();\n } else state.commit();\n break;\n case 'Escape':\n if (state.selectedKey !== null || state.inputValue === '' || props.allowsCustomValue) e.continuePropagation();\n state.revert();\n break;\n case 'ArrowDown':\n state.open('first', 'manual');\n break;\n case 'ArrowUp':\n state.open('last', 'manual');\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n state.selectionManager.setFocusedKey(null);\n break;\n }\n };\n let onBlur = (e)=>{\n var _popoverRef_current;\n let blurFromButton = (buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.current) && buttonRef.current === e.relatedTarget;\n let blurIntoPopover = (_popoverRef_current = popoverRef.current) === null || _popoverRef_current === void 0 ? void 0 : _popoverRef_current.contains(e.relatedTarget);\n // Ignore blur if focused moved to the button(if exists) or into the popover.\n if (blurFromButton || blurIntoPopover) return;\n if (props.onBlur) props.onBlur(e);\n state.setFocused(false);\n };\n let onFocus = (e)=>{\n if (state.isFocused) return;\n if (props.onFocus) props.onFocus(e);\n state.setFocused(true);\n };\n let { isInvalid: isInvalid, validationErrors: validationErrors, validationDetails: validationDetails } = state.displayValidation;\n let { labelProps: labelProps, inputProps: inputProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps } = (0, $dShfP$useTextField)({\n ...props,\n onChange: state.setInputValue,\n onKeyDown: !isReadOnly ? (0, $dShfP$chain)(state.isOpen && collectionProps.onKeyDown, onKeyDown, props.onKeyDown) : props.onKeyDown,\n onBlur: onBlur,\n value: state.inputValue,\n onFocus: onFocus,\n autoComplete: 'off',\n validate: undefined,\n [(0, $dShfP$privateValidationStateProp)]: state\n }, inputRef);\n // Press handlers for the ComboBox button\n let onPress = (e)=>{\n if (e.pointerType === 'touch') {\n var // Focus the input field in case it isn't focused yet\n _inputRef_current;\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.focus();\n state.toggle(null, 'manual');\n }\n };\n let onPressStart = (e)=>{\n if (e.pointerType !== 'touch') {\n var _inputRef_current;\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.focus();\n state.toggle(e.pointerType === 'keyboard' || e.pointerType === 'virtual' ? 'first' : null, 'manual');\n }\n };\n let triggerLabelProps = (0, $dShfP$useLabels)({\n id: menuTriggerProps.id,\n 'aria-label': stringFormatter.format('buttonLabel'),\n 'aria-labelledby': props['aria-labelledby'] || labelProps.id\n });\n let listBoxProps = (0, $dShfP$useLabels)({\n id: menuProps.id,\n 'aria-label': stringFormatter.format('listboxLabel'),\n 'aria-labelledby': props['aria-labelledby'] || labelProps.id\n });\n // If a touch happens on direct center of ComboBox input, might be virtual click from iPad so open ComboBox menu\n let lastEventTime = (0, $dShfP$useRef)(0);\n let onTouchEnd = (e)=>{\n if (isDisabled || isReadOnly) return;\n // Sometimes VoiceOver on iOS fires two touchend events in quick succession. Ignore the second one.\n if (e.timeStamp - lastEventTime.current < 500) {\n var _inputRef_current;\n e.preventDefault();\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.focus();\n return;\n }\n let rect = e.target.getBoundingClientRect();\n let touch = e.changedTouches[0];\n let centerX = Math.ceil(rect.left + .5 * rect.width);\n let centerY = Math.ceil(rect.top + .5 * rect.height);\n if (touch.clientX === centerX && touch.clientY === centerY) {\n var _inputRef_current1;\n e.preventDefault();\n (_inputRef_current1 = inputRef.current) === null || _inputRef_current1 === void 0 ? void 0 : _inputRef_current1.focus();\n state.toggle(null, 'manual');\n lastEventTime.current = e.timeStamp;\n }\n };\n // VoiceOver has issues with announcing aria-activedescendant properly on change\n // (especially on iOS). We use a live region announcer to announce focus changes\n // manually. In addition, section titles are announced when navigating into a new section.\n let focusedItem = state.selectionManager.focusedKey != null && state.isOpen ? state.collection.getItem(state.selectionManager.focusedKey) : undefined;\n var _focusedItem_parentKey;\n let sectionKey = (_focusedItem_parentKey = focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.parentKey) !== null && _focusedItem_parentKey !== void 0 ? _focusedItem_parentKey : null;\n var _state_selectionManager_focusedKey;\n let itemKey = (_state_selectionManager_focusedKey = state.selectionManager.focusedKey) !== null && _state_selectionManager_focusedKey !== void 0 ? _state_selectionManager_focusedKey : null;\n let lastSection = (0, $dShfP$useRef)(sectionKey);\n let lastItem = (0, $dShfP$useRef)(itemKey);\n (0, $dShfP$useEffect)(()=>{\n if ((0, $dShfP$isAppleDevice)() && focusedItem != null && itemKey != null && itemKey !== lastItem.current) {\n let isSelected = state.selectionManager.isSelected(itemKey);\n let section = sectionKey != null ? state.collection.getItem(sectionKey) : null;\n let sectionTitle = (section === null || section === void 0 ? void 0 : section['aria-label']) || (typeof (section === null || section === void 0 ? void 0 : section.rendered) === 'string' ? section.rendered : '') || '';\n var _ref;\n let announcement = stringFormatter.format('focusAnnouncement', {\n isGroupChange: (_ref = section && sectionKey !== lastSection.current) !== null && _ref !== void 0 ? _ref : false,\n groupTitle: sectionTitle,\n groupCount: section ? [\n ...(0, $dShfP$getChildNodes)(section, state.collection)\n ].length : 0,\n optionText: focusedItem['aria-label'] || focusedItem.textValue || '',\n isSelected: isSelected\n });\n (0, $dShfP$announce)(announcement);\n }\n lastSection.current = sectionKey;\n lastItem.current = itemKey;\n });\n // Announce the number of available suggestions when it changes\n let optionCount = (0, $dShfP$getItemCount)(state.collection);\n let lastSize = (0, $dShfP$useRef)(optionCount);\n let lastOpen = (0, $dShfP$useRef)(state.isOpen);\n (0, $dShfP$useEffect)(()=>{\n // Only announce the number of options available when the menu opens if there is no\n // focused item, otherwise screen readers will typically read e.g. \"1 of 6\".\n // The exception is VoiceOver since this isn't included in the message above.\n let didOpenWithoutFocusedItem = state.isOpen !== lastOpen.current && (state.selectionManager.focusedKey == null || (0, $dShfP$isAppleDevice)());\n if (state.isOpen && (didOpenWithoutFocusedItem || optionCount !== lastSize.current)) {\n let announcement = stringFormatter.format('countAnnouncement', {\n optionCount: optionCount\n });\n (0, $dShfP$announce)(announcement);\n }\n lastSize.current = optionCount;\n lastOpen.current = state.isOpen;\n });\n // Announce when a selection occurs for VoiceOver. Other screen readers typically do this automatically.\n let lastSelectedKey = (0, $dShfP$useRef)(state.selectedKey);\n (0, $dShfP$useEffect)(()=>{\n if ((0, $dShfP$isAppleDevice)() && state.isFocused && state.selectedItem && state.selectedKey !== lastSelectedKey.current) {\n let optionText = state.selectedItem['aria-label'] || state.selectedItem.textValue || '';\n let announcement = stringFormatter.format('selectedAnnouncement', {\n optionText: optionText\n });\n (0, $dShfP$announce)(announcement);\n }\n lastSelectedKey.current = state.selectedKey;\n });\n (0, $dShfP$useEffect)(()=>{\n if (state.isOpen) return (0, $dShfP$ariaHideOutside)([\n inputRef.current,\n popoverRef.current\n ].filter((element)=>element != null));\n }, [\n state.isOpen,\n inputRef,\n popoverRef\n ]);\n return {\n labelProps: labelProps,\n buttonProps: {\n ...menuTriggerProps,\n ...triggerLabelProps,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n onPress: onPress,\n onPressStart: onPressStart,\n isDisabled: isDisabled || isReadOnly\n },\n inputProps: (0, $dShfP$mergeProps)(inputProps, {\n role: 'combobox',\n 'aria-expanded': menuTriggerProps['aria-expanded'],\n 'aria-controls': state.isOpen ? menuProps.id : undefined,\n // TODO: readd proper logic for completionMode = complete (aria-autocomplete: both)\n 'aria-autocomplete': 'list',\n 'aria-activedescendant': focusedItem ? (0, $dShfP$getItemId)(state, focusedItem.key) : undefined,\n onTouchEnd: onTouchEnd,\n // This disable's iOS's autocorrect suggestions, since the combo box provides its own suggestions.\n autoCorrect: 'off',\n // This disable's the macOS Safari spell check auto corrections.\n spellCheck: 'false'\n }),\n listBoxProps: (0, $dShfP$mergeProps)(menuProps, listBoxProps, {\n autoFocus: state.focusStrategy,\n shouldUseVirtualFocus: true,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n linkBehavior: 'selection'\n }),\n descriptionProps: descriptionProps,\n errorMessageProps: errorMessageProps,\n isInvalid: isInvalid,\n validationErrors: validationErrors,\n validationDetails: validationDetails\n };\n}\n\n\nexport {$c350ade66beef0af$export$8c18d1b4f7232bbf as useComboBox};\n//# sourceMappingURL=useComboBox.module.js.map\n","import {getOwnerWindow as $djhjW$getOwnerWindow} from \"@react-aria/utils\";\n\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $645f2e67b85a24c9$var$isStyleVisible(element) {\n const windowObject = (0, $djhjW$getOwnerWindow)(element);\n if (!(element instanceof windowObject.HTMLElement) && !(element instanceof windowObject.SVGElement)) return false;\n let { display: display, visibility: visibility } = element.style;\n let isVisible = display !== 'none' && visibility !== 'hidden' && visibility !== 'collapse';\n if (isVisible) {\n const { getComputedStyle: getComputedStyle } = element.ownerDocument.defaultView;\n let { display: computedDisplay, visibility: computedVisibility } = getComputedStyle(element);\n isVisible = computedDisplay !== 'none' && computedVisibility !== 'hidden' && computedVisibility !== 'collapse';\n }\n return isVisible;\n}\nfunction $645f2e67b85a24c9$var$isAttributeVisible(element, childElement) {\n return !element.hasAttribute('hidden') && // Ignore HiddenSelect when tree walking.\n !element.hasAttribute('data-react-aria-prevent-focus') && (element.nodeName === 'DETAILS' && childElement && childElement.nodeName !== 'SUMMARY' ? element.hasAttribute('open') : true);\n}\nfunction $645f2e67b85a24c9$export$e989c0fffaa6b27a(element, childElement) {\n return element.nodeName !== '#comment' && $645f2e67b85a24c9$var$isStyleVisible(element) && $645f2e67b85a24c9$var$isAttributeVisible(element, childElement) && (!element.parentElement || $645f2e67b85a24c9$export$e989c0fffaa6b27a(element.parentElement, element));\n}\n\n\nexport {$645f2e67b85a24c9$export$e989c0fffaa6b27a as isElementVisible};\n//# sourceMappingURL=isElementVisible.module.js.map\n","import {focusSafely as $6a99195332edec8b$export$80f3e147d781571c} from \"./focusSafely.mjs\";\nimport {isElementVisible as $645f2e67b85a24c9$export$e989c0fffaa6b27a} from \"./isElementVisible.mjs\";\nimport {useLayoutEffect as $cgawC$useLayoutEffect, getOwnerDocument as $cgawC$getOwnerDocument} from \"@react-aria/utils\";\nimport $cgawC$react, {useRef as $cgawC$useRef, useContext as $cgawC$useContext, useMemo as $cgawC$useMemo, useEffect as $cgawC$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nconst $9bf71ea28793e738$var$FocusContext = /*#__PURE__*/ (0, $cgawC$react).createContext(null);\nconst $9bf71ea28793e738$var$RESTORE_FOCUS_EVENT = 'react-aria-focus-scope-restore';\nlet $9bf71ea28793e738$var$activeScope = null;\nfunction $9bf71ea28793e738$export$20e40289641fbbb6(props) {\n let { children: children, contain: contain, restoreFocus: restoreFocus, autoFocus: autoFocus } = props;\n let startRef = (0, $cgawC$useRef)(null);\n let endRef = (0, $cgawC$useRef)(null);\n let scopeRef = (0, $cgawC$useRef)([]);\n let { parentNode: parentNode } = (0, $cgawC$useContext)($9bf71ea28793e738$var$FocusContext) || {};\n // Create a tree node here so we can add children to it even before it is added to the tree.\n let node = (0, $cgawC$useMemo)(()=>new $9bf71ea28793e738$var$TreeNode({\n scopeRef: scopeRef\n }), [\n scopeRef\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n // If a new scope mounts outside the active scope, (e.g. DialogContainer launched from a menu),\n // use the active scope as the parent instead of the parent from context. Layout effects run bottom\n // up, so if the parent is not yet added to the tree, don't do this. Only the outer-most FocusScope\n // that is being added should get the activeScope as its parent.\n let parent = parentNode || $9bf71ea28793e738$export$d06fae2ee68b101e.root;\n if ($9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(parent.scopeRef) && $9bf71ea28793e738$var$activeScope && !$9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, parent.scopeRef)) {\n let activeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n if (activeNode) parent = activeNode;\n }\n // Add the node to the parent, and to the tree.\n parent.addChild(node);\n $9bf71ea28793e738$export$d06fae2ee68b101e.addNode(node);\n }, [\n node,\n parentNode\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n let node = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (node) node.contain = !!contain;\n }, [\n contain\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n var _startRef_current;\n // Find all rendered nodes between the sentinels and add them to the scope.\n let node = (_startRef_current = startRef.current) === null || _startRef_current === void 0 ? void 0 : _startRef_current.nextSibling;\n let nodes = [];\n let stopPropagation = (e)=>e.stopPropagation();\n while(node && node !== endRef.current){\n nodes.push(node);\n // Stop custom restore focus event from propagating to parent focus scopes.\n node.addEventListener($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, stopPropagation);\n node = node.nextSibling;\n }\n scopeRef.current = nodes;\n return ()=>{\n for (let node of nodes)node.removeEventListener($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, stopPropagation);\n };\n }, [\n children\n ]);\n $9bf71ea28793e738$var$useActiveScopeTracker(scopeRef, restoreFocus, contain);\n $9bf71ea28793e738$var$useFocusContainment(scopeRef, contain);\n $9bf71ea28793e738$var$useRestoreFocus(scopeRef, restoreFocus, contain);\n $9bf71ea28793e738$var$useAutoFocus(scopeRef, autoFocus);\n // This needs to be an effect so that activeScope is updated after the FocusScope tree is complete.\n // It cannot be a useLayoutEffect because the parent of this node hasn't been attached in the tree yet.\n (0, $cgawC$useEffect)(()=>{\n const activeElement = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined).activeElement;\n let scope = null;\n if ($9bf71ea28793e738$var$isElementInScope(activeElement, scopeRef.current)) {\n // We need to traverse the focusScope tree and find the bottom most scope that\n // contains the active element and set that as the activeScope.\n for (let node of $9bf71ea28793e738$export$d06fae2ee68b101e.traverse())if (node.scopeRef && $9bf71ea28793e738$var$isElementInScope(activeElement, node.scopeRef.current)) scope = node;\n if (scope === $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef)) $9bf71ea28793e738$var$activeScope = scope.scopeRef;\n }\n }, [\n scopeRef\n ]);\n // This layout effect cleanup is so that the tree node is removed synchronously with react before the RAF\n // in useRestoreFocus cleanup runs.\n (0, $cgawC$useLayoutEffect)(()=>{\n return ()=>{\n var _focusScopeTree_getTreeNode_parent, _focusScopeTree_getTreeNode;\n var _focusScopeTree_getTreeNode_parent_scopeRef;\n // Scope may have been re-parented.\n let parentScope = (_focusScopeTree_getTreeNode_parent_scopeRef = (_focusScopeTree_getTreeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef)) === null || _focusScopeTree_getTreeNode === void 0 ? void 0 : (_focusScopeTree_getTreeNode_parent = _focusScopeTree_getTreeNode.parent) === null || _focusScopeTree_getTreeNode_parent === void 0 ? void 0 : _focusScopeTree_getTreeNode_parent.scopeRef) !== null && _focusScopeTree_getTreeNode_parent_scopeRef !== void 0 ? _focusScopeTree_getTreeNode_parent_scopeRef : null;\n if ((scopeRef === $9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope(scopeRef, $9bf71ea28793e738$var$activeScope)) && (!parentScope || $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(parentScope))) $9bf71ea28793e738$var$activeScope = parentScope;\n $9bf71ea28793e738$export$d06fae2ee68b101e.removeTreeNode(scopeRef);\n };\n }, [\n scopeRef\n ]);\n let focusManager = (0, $cgawC$useMemo)(()=>$9bf71ea28793e738$var$createFocusManagerForScope(scopeRef), []);\n let value = (0, $cgawC$useMemo)(()=>({\n focusManager: focusManager,\n parentNode: node\n }), [\n node,\n focusManager\n ]);\n return /*#__PURE__*/ (0, $cgawC$react).createElement($9bf71ea28793e738$var$FocusContext.Provider, {\n value: value\n }, /*#__PURE__*/ (0, $cgawC$react).createElement(\"span\", {\n \"data-focus-scope-start\": true,\n hidden: true,\n ref: startRef\n }), children, /*#__PURE__*/ (0, $cgawC$react).createElement(\"span\", {\n \"data-focus-scope-end\": true,\n hidden: true,\n ref: endRef\n }));\n}\nfunction $9bf71ea28793e738$export$10c5169755ce7bd7() {\n var _useContext;\n return (_useContext = (0, $cgawC$useContext)($9bf71ea28793e738$var$FocusContext)) === null || _useContext === void 0 ? void 0 : _useContext.focusManager;\n}\nfunction $9bf71ea28793e738$var$createFocusManagerForScope(scopeRef) {\n return {\n focusNext (opts = {}) {\n let scope = scopeRef.current;\n let { from: from, tabbable: tabbable, wrap: wrap, accept: accept } = opts;\n let node = from || (0, $cgawC$getOwnerDocument)(scope[0]).activeElement;\n let sentinel = scope[0].previousElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = $9bf71ea28793e738$var$isElementInScope(node, scope) ? node : sentinel;\n let nextNode = walker.nextNode();\n if (!nextNode && wrap) {\n walker.currentNode = sentinel;\n nextNode = walker.nextNode();\n }\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusPrevious (opts = {}) {\n let scope = scopeRef.current;\n let { from: from, tabbable: tabbable, wrap: wrap, accept: accept } = opts;\n let node = from || (0, $cgawC$getOwnerDocument)(scope[0]).activeElement;\n let sentinel = scope[scope.length - 1].nextElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = $9bf71ea28793e738$var$isElementInScope(node, scope) ? node : sentinel;\n let previousNode = walker.previousNode();\n if (!previousNode && wrap) {\n walker.currentNode = sentinel;\n previousNode = walker.previousNode();\n }\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode;\n },\n focusFirst (opts = {}) {\n let scope = scopeRef.current;\n let { tabbable: tabbable, accept: accept } = opts;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = scope[0].previousElementSibling;\n let nextNode = walker.nextNode();\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusLast (opts = {}) {\n let scope = scopeRef.current;\n let { tabbable: tabbable, accept: accept } = opts;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = scope[scope.length - 1].nextElementSibling;\n let previousNode = walker.previousNode();\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode;\n }\n };\n}\nconst $9bf71ea28793e738$var$focusableElements = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]'\n];\nconst $9bf71ea28793e738$var$FOCUSABLE_ELEMENT_SELECTOR = $9bf71ea28793e738$var$focusableElements.join(':not([hidden]),') + ',[tabindex]:not([disabled]):not([hidden])';\n$9bf71ea28793e738$var$focusableElements.push('[tabindex]:not([tabindex=\"-1\"]):not([disabled])');\nconst $9bf71ea28793e738$var$TABBABLE_ELEMENT_SELECTOR = $9bf71ea28793e738$var$focusableElements.join(':not([hidden]):not([tabindex=\"-1\"]),');\nfunction $9bf71ea28793e738$export$4c063cf1350e6fed(element) {\n return element.matches($9bf71ea28793e738$var$FOCUSABLE_ELEMENT_SELECTOR);\n}\nfunction $9bf71ea28793e738$var$getScopeRoot(scope) {\n return scope[0].parentElement;\n}\nfunction $9bf71ea28793e738$var$shouldContainFocus(scopeRef) {\n let scope = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n while(scope && scope.scopeRef !== scopeRef){\n if (scope.contain) return false;\n scope = scope.parent;\n }\n return true;\n}\nfunction $9bf71ea28793e738$var$useFocusContainment(scopeRef, contain) {\n let focusedNode = (0, $cgawC$useRef)(undefined);\n let raf = (0, $cgawC$useRef)(undefined);\n (0, $cgawC$useLayoutEffect)(()=>{\n let scope = scopeRef.current;\n if (!contain) {\n // if contain was changed, then we should cancel any ongoing waits to pull focus back into containment\n if (raf.current) {\n cancelAnimationFrame(raf.current);\n raf.current = undefined;\n }\n return;\n }\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n // Handle the Tab key to contain focus within the scope\n let onKeyDown = (e)=>{\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !$9bf71ea28793e738$var$shouldContainFocus(scopeRef) || e.isComposing) return;\n let focusedElement = ownerDocument.activeElement;\n let scope = scopeRef.current;\n if (!scope || !$9bf71ea28793e738$var$isElementInScope(focusedElement, scope)) return;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: true\n }, scope);\n if (!focusedElement) return;\n walker.currentNode = focusedElement;\n let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n if (!nextElement) {\n walker.currentNode = e.shiftKey ? scope[scope.length - 1].nextElementSibling : scope[0].previousElementSibling;\n nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n }\n e.preventDefault();\n if (nextElement) $9bf71ea28793e738$var$focusElement(nextElement, true);\n };\n let onFocus = (e)=>{\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!$9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, scopeRef)) && $9bf71ea28793e738$var$isElementInScope(e.target, scopeRef.current)) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n focusedNode.current = e.target;\n } else if ($9bf71ea28793e738$var$shouldContainFocus(scopeRef) && !$9bf71ea28793e738$var$isElementInChildScope(e.target, scopeRef)) {\n // If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),\n // restore focus to the previously focused node or the first tabbable element in the active scope.\n if (focusedNode.current) focusedNode.current.focus();\n else if ($9bf71ea28793e738$var$activeScope && $9bf71ea28793e738$var$activeScope.current) $9bf71ea28793e738$var$focusFirstInScope($9bf71ea28793e738$var$activeScope.current);\n } else if ($9bf71ea28793e738$var$shouldContainFocus(scopeRef)) focusedNode.current = e.target;\n };\n let onBlur = (e)=>{\n // Firefox doesn't shift focus back to the Dialog properly without this\n if (raf.current) cancelAnimationFrame(raf.current);\n raf.current = requestAnimationFrame(()=>{\n // Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe\n if (ownerDocument.activeElement && $9bf71ea28793e738$var$shouldContainFocus(scopeRef) && !$9bf71ea28793e738$var$isElementInChildScope(ownerDocument.activeElement, scopeRef)) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n if (ownerDocument.body.contains(e.target)) {\n var _focusedNode_current;\n focusedNode.current = e.target;\n (_focusedNode_current = focusedNode.current) === null || _focusedNode_current === void 0 ? void 0 : _focusedNode_current.focus();\n } else if ($9bf71ea28793e738$var$activeScope.current) $9bf71ea28793e738$var$focusFirstInScope($9bf71ea28793e738$var$activeScope.current);\n }\n });\n };\n ownerDocument.addEventListener('keydown', onKeyDown, false);\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusout', onBlur, false));\n return ()=>{\n ownerDocument.removeEventListener('keydown', onKeyDown, false);\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusout', onBlur, false));\n };\n }, [\n scopeRef,\n contain\n ]);\n // This is a useLayoutEffect so it is guaranteed to run before our async synthetic blur\n (0, $cgawC$useLayoutEffect)(()=>{\n return ()=>{\n if (raf.current) cancelAnimationFrame(raf.current);\n };\n }, [\n raf\n ]);\n}\nfunction $9bf71ea28793e738$var$isElementInAnyScope(element) {\n return $9bf71ea28793e738$var$isElementInChildScope(element);\n}\nfunction $9bf71ea28793e738$var$isElementInScope(element, scope) {\n if (!element) return false;\n if (!scope) return false;\n return scope.some((node)=>node.contains(element));\n}\nfunction $9bf71ea28793e738$var$isElementInChildScope(element, scope = null) {\n // If the element is within a top layer element (e.g. toasts), always allow moving focus there.\n if (element instanceof Element && element.closest('[data-react-aria-top-layer]')) return true;\n // node.contains in isElementInScope covers child scopes that are also DOM children,\n // but does not cover child scopes in portals.\n for (let { scopeRef: s } of $9bf71ea28793e738$export$d06fae2ee68b101e.traverse($9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scope))){\n if (s && $9bf71ea28793e738$var$isElementInScope(element, s.current)) return true;\n }\n return false;\n}\nfunction $9bf71ea28793e738$export$1258395f99bf9cbf(element) {\n return $9bf71ea28793e738$var$isElementInChildScope(element, $9bf71ea28793e738$var$activeScope);\n}\nfunction $9bf71ea28793e738$var$isAncestorScope(ancestor, scope) {\n var _focusScopeTree_getTreeNode;\n let parent = (_focusScopeTree_getTreeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scope)) === null || _focusScopeTree_getTreeNode === void 0 ? void 0 : _focusScopeTree_getTreeNode.parent;\n while(parent){\n if (parent.scopeRef === ancestor) return true;\n parent = parent.parent;\n }\n return false;\n}\nfunction $9bf71ea28793e738$var$focusElement(element, scroll = false) {\n if (element != null && !scroll) try {\n (0, $6a99195332edec8b$export$80f3e147d781571c)(element);\n } catch {\n // ignore\n }\n else if (element != null) try {\n element.focus();\n } catch {\n // ignore\n }\n}\nfunction $9bf71ea28793e738$var$getFirstInScope(scope, tabbable = true) {\n let sentinel = scope[0].previousElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable\n }, scope);\n walker.currentNode = sentinel;\n let nextNode = walker.nextNode();\n // If the scope does not contain a tabbable element, use the first focusable element.\n if (tabbable && !nextNode) {\n scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: false\n }, scope);\n walker.currentNode = sentinel;\n nextNode = walker.nextNode();\n }\n return nextNode;\n}\nfunction $9bf71ea28793e738$var$focusFirstInScope(scope, tabbable = true) {\n $9bf71ea28793e738$var$focusElement($9bf71ea28793e738$var$getFirstInScope(scope, tabbable));\n}\nfunction $9bf71ea28793e738$var$useAutoFocus(scopeRef, autoFocus) {\n const autoFocusRef = (0, $cgawC$react).useRef(autoFocus);\n (0, $cgawC$useEffect)(()=>{\n if (autoFocusRef.current) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!$9bf71ea28793e738$var$isElementInScope(ownerDocument.activeElement, $9bf71ea28793e738$var$activeScope.current) && scopeRef.current) $9bf71ea28793e738$var$focusFirstInScope(scopeRef.current);\n }\n autoFocusRef.current = false;\n }, [\n scopeRef\n ]);\n}\nfunction $9bf71ea28793e738$var$useActiveScopeTracker(scopeRef, restore, contain) {\n // tracks the active scope, in case restore and contain are both false.\n // if either are true, this is tracked in useRestoreFocus or useFocusContainment.\n (0, $cgawC$useLayoutEffect)(()=>{\n if (restore || contain) return;\n let scope = scopeRef.current;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n let onFocus = (e)=>{\n let target = e.target;\n if ($9bf71ea28793e738$var$isElementInScope(target, scopeRef.current)) $9bf71ea28793e738$var$activeScope = scopeRef;\n else if (!$9bf71ea28793e738$var$isElementInAnyScope(target)) $9bf71ea28793e738$var$activeScope = null;\n };\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n return ()=>{\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n };\n }, [\n scopeRef,\n restore,\n contain\n ]);\n}\nfunction $9bf71ea28793e738$var$shouldRestoreFocus(scopeRef) {\n let scope = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n while(scope && scope.scopeRef !== scopeRef){\n if (scope.nodeToRestore) return false;\n scope = scope.parent;\n }\n return (scope === null || scope === void 0 ? void 0 : scope.scopeRef) === scopeRef;\n}\nfunction $9bf71ea28793e738$var$useRestoreFocus(scopeRef, restoreFocus, contain) {\n // create a ref during render instead of useLayoutEffect so the active element is saved before a child with autoFocus=true mounts.\n // eslint-disable-next-line no-restricted-globals\n const nodeToRestoreRef = (0, $cgawC$useRef)(typeof document !== 'undefined' ? (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined).activeElement : null);\n // restoring scopes should all track if they are active regardless of contain, but contain already tracks it plus logic to contain the focus\n // restoring-non-containing scopes should only care if they become active so they can perform the restore\n (0, $cgawC$useLayoutEffect)(()=>{\n let scope = scopeRef.current;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n if (!restoreFocus || contain) return;\n let onFocus = ()=>{\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!$9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, scopeRef)) && $9bf71ea28793e738$var$isElementInScope(ownerDocument.activeElement, scopeRef.current)) $9bf71ea28793e738$var$activeScope = scopeRef;\n };\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n return ()=>{\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n scopeRef,\n contain\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!restoreFocus) return;\n // Handle the Tab key so that tabbing out of the scope goes to the next element\n // after the node that had focus when the scope mounted. This is important when\n // using portals for overlays, so that focus goes to the expected element when\n // tabbing out of the overlay.\n let onKeyDown = (e)=>{\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !$9bf71ea28793e738$var$shouldContainFocus(scopeRef) || e.isComposing) return;\n let focusedElement = ownerDocument.activeElement;\n if (!$9bf71ea28793e738$var$isElementInChildScope(focusedElement, scopeRef) || !$9bf71ea28793e738$var$shouldRestoreFocus(scopeRef)) return;\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n let nodeToRestore = treeNode.nodeToRestore;\n // Create a DOM tree walker that matches all tabbable elements\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(ownerDocument.body, {\n tabbable: true\n });\n // Find the next tabbable element after the currently focused element\n walker.currentNode = focusedElement;\n let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n if (!nodeToRestore || !ownerDocument.body.contains(nodeToRestore) || nodeToRestore === ownerDocument.body) {\n nodeToRestore = undefined;\n treeNode.nodeToRestore = undefined;\n }\n // If there is no next element, or it is outside the current scope, move focus to the\n // next element after the node to restore to instead.\n if ((!nextElement || !$9bf71ea28793e738$var$isElementInChildScope(nextElement, scopeRef)) && nodeToRestore) {\n walker.currentNode = nodeToRestore;\n // Skip over elements within the scope, in case the scope immediately follows the node to restore.\n do nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n while ($9bf71ea28793e738$var$isElementInChildScope(nextElement, scopeRef));\n e.preventDefault();\n e.stopPropagation();\n if (nextElement) $9bf71ea28793e738$var$focusElement(nextElement, true);\n else // If there is no next element and the nodeToRestore isn't within a FocusScope (i.e. we are leaving the top level focus scope)\n // then move focus to the body.\n // Otherwise restore focus to the nodeToRestore (e.g menu within a popover -> tabbing to close the menu should move focus to menu trigger)\n if (!$9bf71ea28793e738$var$isElementInAnyScope(nodeToRestore)) focusedElement.blur();\n else $9bf71ea28793e738$var$focusElement(nodeToRestore, true);\n }\n };\n if (!contain) ownerDocument.addEventListener('keydown', onKeyDown, true);\n return ()=>{\n if (!contain) ownerDocument.removeEventListener('keydown', onKeyDown, true);\n };\n }, [\n scopeRef,\n restoreFocus,\n contain\n ]);\n // useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.\n (0, $cgawC$useLayoutEffect)(()=>{\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!restoreFocus) return;\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n var _nodeToRestoreRef_current;\n treeNode.nodeToRestore = (_nodeToRestoreRef_current = nodeToRestoreRef.current) !== null && _nodeToRestoreRef_current !== void 0 ? _nodeToRestoreRef_current : undefined;\n return ()=>{\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n let nodeToRestore = treeNode.nodeToRestore;\n // if we already lost focus to the body and this was the active scope, then we should attempt to restore\n if (restoreFocus && nodeToRestore && (ownerDocument.activeElement && $9bf71ea28793e738$var$isElementInChildScope(ownerDocument.activeElement, scopeRef) || ownerDocument.activeElement === ownerDocument.body && $9bf71ea28793e738$var$shouldRestoreFocus(scopeRef))) {\n // freeze the focusScopeTree so it persists after the raf, otherwise during unmount nodes are removed from it\n let clonedTree = $9bf71ea28793e738$export$d06fae2ee68b101e.clone();\n requestAnimationFrame(()=>{\n // Only restore focus if we've lost focus to the body, the alternative is that focus has been purposefully moved elsewhere\n if (ownerDocument.activeElement === ownerDocument.body) {\n // look up the tree starting with our scope to find a nodeToRestore still in the DOM\n let treeNode = clonedTree.getTreeNode(scopeRef);\n while(treeNode){\n if (treeNode.nodeToRestore && treeNode.nodeToRestore.isConnected) {\n $9bf71ea28793e738$var$restoreFocusToElement(treeNode.nodeToRestore);\n return;\n }\n treeNode = treeNode.parent;\n }\n // If no nodeToRestore was found, focus the first element in the nearest\n // ancestor scope that is still in the tree.\n treeNode = clonedTree.getTreeNode(scopeRef);\n while(treeNode){\n if (treeNode.scopeRef && treeNode.scopeRef.current && $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(treeNode.scopeRef)) {\n let node = $9bf71ea28793e738$var$getFirstInScope(treeNode.scopeRef.current, true);\n $9bf71ea28793e738$var$restoreFocusToElement(node);\n return;\n }\n treeNode = treeNode.parent;\n }\n }\n });\n }\n };\n }, [\n scopeRef,\n restoreFocus\n ]);\n}\nfunction $9bf71ea28793e738$var$restoreFocusToElement(node) {\n // Dispatch a custom event that parent elements can intercept to customize focus restoration.\n // For example, virtualized collection components reuse DOM elements, so the original element\n // might still exist in the DOM but representing a different item.\n if (node.dispatchEvent(new CustomEvent($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, {\n bubbles: true,\n cancelable: true\n }))) $9bf71ea28793e738$var$focusElement(node);\n}\nfunction $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, opts, scope) {\n let selector = (opts === null || opts === void 0 ? void 0 : opts.tabbable) ? $9bf71ea28793e738$var$TABBABLE_ELEMENT_SELECTOR : $9bf71ea28793e738$var$FOCUSABLE_ELEMENT_SELECTOR;\n let walker = (0, $cgawC$getOwnerDocument)(root).createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode (node) {\n var _opts_from;\n // Skip nodes inside the starting node.\n if (opts === null || opts === void 0 ? void 0 : (_opts_from = opts.from) === null || _opts_from === void 0 ? void 0 : _opts_from.contains(node)) return NodeFilter.FILTER_REJECT;\n if (node.matches(selector) && (0, $645f2e67b85a24c9$export$e989c0fffaa6b27a)(node) && (!scope || $9bf71ea28793e738$var$isElementInScope(node, scope)) && (!(opts === null || opts === void 0 ? void 0 : opts.accept) || opts.accept(node))) return NodeFilter.FILTER_ACCEPT;\n return NodeFilter.FILTER_SKIP;\n }\n });\n if (opts === null || opts === void 0 ? void 0 : opts.from) walker.currentNode = opts.from;\n return walker;\n}\nfunction $9bf71ea28793e738$export$c5251b9e124bf29(ref, defaultOptions = {}) {\n return {\n focusNext (opts = {}) {\n let root = ref.current;\n if (!root) return null;\n let { from: from, tabbable: tabbable = defaultOptions.tabbable, wrap: wrap = defaultOptions.wrap, accept: accept = defaultOptions.accept } = opts;\n let node = from || (0, $cgawC$getOwnerDocument)(root).activeElement;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n if (root.contains(node)) walker.currentNode = node;\n let nextNode = walker.nextNode();\n if (!nextNode && wrap) {\n walker.currentNode = root;\n nextNode = walker.nextNode();\n }\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusPrevious (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { from: from, tabbable: tabbable = defaultOptions.tabbable, wrap: wrap = defaultOptions.wrap, accept: accept = defaultOptions.accept } = opts;\n let node = from || (0, $cgawC$getOwnerDocument)(root).activeElement;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n if (root.contains(node)) walker.currentNode = node;\n else {\n let next = $9bf71ea28793e738$var$last(walker);\n if (next) $9bf71ea28793e738$var$focusElement(next, true);\n return next !== null && next !== void 0 ? next : null;\n }\n let previousNode = walker.previousNode();\n if (!previousNode && wrap) {\n walker.currentNode = root;\n let lastNode = $9bf71ea28793e738$var$last(walker);\n if (!lastNode) // couldn't wrap\n return null;\n previousNode = lastNode;\n }\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode !== null && previousNode !== void 0 ? previousNode : null;\n },\n focusFirst (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { tabbable: tabbable = defaultOptions.tabbable, accept: accept = defaultOptions.accept } = opts;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n let nextNode = walker.nextNode();\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusLast (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { tabbable: tabbable = defaultOptions.tabbable, accept: accept = defaultOptions.accept } = opts;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n let next = $9bf71ea28793e738$var$last(walker);\n if (next) $9bf71ea28793e738$var$focusElement(next, true);\n return next !== null && next !== void 0 ? next : null;\n }\n };\n}\nfunction $9bf71ea28793e738$var$last(walker) {\n let next = undefined;\n let last;\n do {\n last = walker.lastChild();\n if (last) next = last;\n }while (last);\n return next;\n}\nclass $9bf71ea28793e738$var$Tree {\n get size() {\n return this.fastMap.size;\n }\n getTreeNode(data) {\n return this.fastMap.get(data);\n }\n addTreeNode(scopeRef, parent, nodeToRestore) {\n let parentNode = this.fastMap.get(parent !== null && parent !== void 0 ? parent : null);\n if (!parentNode) return;\n let node = new $9bf71ea28793e738$var$TreeNode({\n scopeRef: scopeRef\n });\n parentNode.addChild(node);\n node.parent = parentNode;\n this.fastMap.set(scopeRef, node);\n if (nodeToRestore) node.nodeToRestore = nodeToRestore;\n }\n addNode(node) {\n this.fastMap.set(node.scopeRef, node);\n }\n removeTreeNode(scopeRef) {\n // never remove the root\n if (scopeRef === null) return;\n let node = this.fastMap.get(scopeRef);\n if (!node) return;\n let parentNode = node.parent;\n // when we remove a scope, check if any sibling scopes are trying to restore focus to something inside the scope we're removing\n // if we are, then replace the siblings restore with the restore from the scope we're removing\n for (let current of this.traverse())if (current !== node && node.nodeToRestore && current.nodeToRestore && node.scopeRef && node.scopeRef.current && $9bf71ea28793e738$var$isElementInScope(current.nodeToRestore, node.scopeRef.current)) current.nodeToRestore = node.nodeToRestore;\n let children = node.children;\n if (parentNode) {\n parentNode.removeChild(node);\n if (children.size > 0) children.forEach((child)=>parentNode && parentNode.addChild(child));\n }\n this.fastMap.delete(node.scopeRef);\n }\n // Pre Order Depth First\n *traverse(node = this.root) {\n if (node.scopeRef != null) yield node;\n if (node.children.size > 0) for (let child of node.children)yield* this.traverse(child);\n }\n clone() {\n var _node_parent;\n let newTree = new $9bf71ea28793e738$var$Tree();\n var _node_parent_scopeRef;\n for (let node of this.traverse())newTree.addTreeNode(node.scopeRef, (_node_parent_scopeRef = (_node_parent = node.parent) === null || _node_parent === void 0 ? void 0 : _node_parent.scopeRef) !== null && _node_parent_scopeRef !== void 0 ? _node_parent_scopeRef : null, node.nodeToRestore);\n return newTree;\n }\n constructor(){\n this.fastMap = new Map();\n this.root = new $9bf71ea28793e738$var$TreeNode({\n scopeRef: null\n });\n this.fastMap.set(null, this.root);\n }\n}\nclass $9bf71ea28793e738$var$TreeNode {\n addChild(node) {\n this.children.add(node);\n node.parent = this;\n }\n removeChild(node) {\n this.children.delete(node);\n node.parent = undefined;\n }\n constructor(props){\n this.children = new Set();\n this.contain = false;\n this.scopeRef = props.scopeRef;\n }\n}\nlet $9bf71ea28793e738$export$d06fae2ee68b101e = new $9bf71ea28793e738$var$Tree();\n\n\nexport {$9bf71ea28793e738$export$20e40289641fbbb6 as FocusScope, $9bf71ea28793e738$export$d06fae2ee68b101e as focusScopeTree, $9bf71ea28793e738$export$10c5169755ce7bd7 as useFocusManager, $9bf71ea28793e738$export$2d6ec8fc375ceafa as getFocusableTreeWalker, $9bf71ea28793e738$export$4c063cf1350e6fed as isFocusable, $9bf71ea28793e738$export$1258395f99bf9cbf as isElementInChildOfActiveScope, $9bf71ea28793e738$export$c5251b9e124bf29 as createFocusManager};\n//# sourceMappingURL=FocusScope.module.js.map\n","import {getOwnerDocument as $jlOai$getOwnerDocument, runAfterTransition as $jlOai$runAfterTransition, focusWithoutScrolling as $jlOai$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {getInteractionModality as $jlOai$getInteractionModality} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $6a99195332edec8b$export$80f3e147d781571c(element) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = (0, $jlOai$getOwnerDocument)(element);\n if ((0, $jlOai$getInteractionModality)() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n (0, $jlOai$runAfterTransition)(()=>{\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) (0, $jlOai$focusWithoutScrolling)(element);\n });\n } else (0, $jlOai$focusWithoutScrolling)(element);\n}\n\n\nexport {$6a99195332edec8b$export$80f3e147d781571c as focusSafely};\n//# sourceMappingURL=focusSafely.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n let state = (0, $isWE5$useRef)({\n isFocused: false,\n isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n });\n let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [\n updateState\n ]);\n (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {\n isTextInput: isTextInput\n });\n let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n isDisabled: within,\n onFocusChange: onFocusChange\n });\n let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n return {\n isFocused: isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","import {focusSafely as $6a99195332edec8b$export$80f3e147d781571c} from \"./focusSafely.mjs\";\nimport {useSyncRef as $h8xso$useSyncRef, useObjectRef as $h8xso$useObjectRef, mergeProps as $h8xso$mergeProps} from \"@react-aria/utils\";\nimport $h8xso$react, {useContext as $h8xso$useContext, useRef as $h8xso$useRef, useEffect as $h8xso$useEffect} from \"react\";\nimport {useFocus as $h8xso$useFocus, useKeyboard as $h8xso$useKeyboard} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nlet $e6afbd83fe6ebbd2$var$FocusableContext = /*#__PURE__*/ (0, $h8xso$react).createContext(null);\nfunction $e6afbd83fe6ebbd2$var$useFocusableContext(ref) {\n let context = (0, $h8xso$useContext)($e6afbd83fe6ebbd2$var$FocusableContext) || {};\n (0, $h8xso$useSyncRef)(context, ref);\n // eslint-disable-next-line\n let { ref: _, ...otherProps } = context;\n return otherProps;\n}\n/**\n * Provides DOM props to the nearest focusable child.\n */ function $e6afbd83fe6ebbd2$var$FocusableProvider(props, ref) {\n let { children: children, ...otherProps } = props;\n let objRef = (0, $h8xso$useObjectRef)(ref);\n let context = {\n ...otherProps,\n ref: objRef\n };\n return /*#__PURE__*/ (0, $h8xso$react).createElement($e6afbd83fe6ebbd2$var$FocusableContext.Provider, {\n value: context\n }, children);\n}\nlet $e6afbd83fe6ebbd2$export$13f3202a3e5ddd5 = /*#__PURE__*/ (0, $h8xso$react).forwardRef($e6afbd83fe6ebbd2$var$FocusableProvider);\nfunction $e6afbd83fe6ebbd2$export$4c014de7c8940b4c(props, domRef) {\n let { focusProps: focusProps } = (0, $h8xso$useFocus)(props);\n let { keyboardProps: keyboardProps } = (0, $h8xso$useKeyboard)(props);\n let interactions = (0, $h8xso$mergeProps)(focusProps, keyboardProps);\n let domProps = $e6afbd83fe6ebbd2$var$useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = (0, $h8xso$useRef)(props.autoFocus);\n (0, $h8xso$useEffect)(()=>{\n if (autoFocusRef.current && domRef.current) (0, $6a99195332edec8b$export$80f3e147d781571c)(domRef.current);\n autoFocusRef.current = false;\n }, [\n domRef\n ]);\n return {\n focusableProps: (0, $h8xso$mergeProps)({\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined\n }, interactionProps)\n };\n}\n\n\nexport {$e6afbd83fe6ebbd2$export$13f3202a3e5ddd5 as FocusableProvider, $e6afbd83fe6ebbd2$export$4c014de7c8940b4c as useFocusable};\n//# sourceMappingURL=useFocusable.module.js.map\n","import {setInteractionModality as $9Gacy$setInteractionModality} from \"@react-aria/interactions\";\nimport {useEffect as $9Gacy$useEffect} from \"react\";\nimport {useLayoutEffect as $9Gacy$useLayoutEffect, useEffectEvent as $9Gacy$useEffectEvent} from \"@react-aria/utils\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $e93e671b31057976$export$b8473d3665f3a75a(props, state, ref) {\n let { validationBehavior: validationBehavior, focus: focus } = props;\n // This is a useLayoutEffect so that it runs before the useEffect in useFormValidationState, which commits the validation change.\n (0, $9Gacy$useLayoutEffect)(()=>{\n if (validationBehavior === 'native' && (ref === null || ref === void 0 ? void 0 : ref.current)) {\n let errorMessage = state.realtimeValidation.isInvalid ? state.realtimeValidation.validationErrors.join(' ') || 'Invalid value.' : '';\n ref.current.setCustomValidity(errorMessage);\n // Prevent default tooltip for validation message.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=605277\n if (!ref.current.hasAttribute('title')) ref.current.title = '';\n if (!state.realtimeValidation.isInvalid) state.updateValidation($e93e671b31057976$var$getNativeValidity(ref.current));\n }\n });\n let onReset = (0, $9Gacy$useEffectEvent)(()=>{\n state.resetValidation();\n });\n let onInvalid = (0, $9Gacy$useEffectEvent)((e)=>{\n var _ref_current;\n // Only commit validation if we are not already displaying one.\n // This avoids clearing server errors that the user didn't actually fix.\n if (!state.displayValidation.isInvalid) state.commitValidation();\n // Auto focus the first invalid input in a form, unless the error already had its default prevented.\n let form = ref === null || ref === void 0 ? void 0 : (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.form;\n if (!e.defaultPrevented && ref && form && $e93e671b31057976$var$getFirstInvalidInput(form) === ref.current) {\n var _ref_current1;\n if (focus) focus();\n else (_ref_current1 = ref.current) === null || _ref_current1 === void 0 ? void 0 : _ref_current1.focus();\n // Always show focus ring.\n (0, $9Gacy$setInteractionModality)('keyboard');\n }\n // Prevent default browser error UI from appearing.\n e.preventDefault();\n });\n let onChange = (0, $9Gacy$useEffectEvent)(()=>{\n state.commitValidation();\n });\n (0, $9Gacy$useEffect)(()=>{\n let input = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!input) return;\n let form = input.form;\n input.addEventListener('invalid', onInvalid);\n input.addEventListener('change', onChange);\n form === null || form === void 0 ? void 0 : form.addEventListener('reset', onReset);\n return ()=>{\n input.removeEventListener('invalid', onInvalid);\n input.removeEventListener('change', onChange);\n form === null || form === void 0 ? void 0 : form.removeEventListener('reset', onReset);\n };\n }, [\n ref,\n onInvalid,\n onChange,\n onReset,\n validationBehavior\n ]);\n}\nfunction $e93e671b31057976$var$getValidity(input) {\n // The native ValidityState object is live, meaning each property is a getter that returns the current state.\n // We need to create a snapshot of the validity state at the time this function is called to avoid unpredictable React renders.\n let validity = input.validity;\n return {\n badInput: validity.badInput,\n customError: validity.customError,\n patternMismatch: validity.patternMismatch,\n rangeOverflow: validity.rangeOverflow,\n rangeUnderflow: validity.rangeUnderflow,\n stepMismatch: validity.stepMismatch,\n tooLong: validity.tooLong,\n tooShort: validity.tooShort,\n typeMismatch: validity.typeMismatch,\n valueMissing: validity.valueMissing,\n valid: validity.valid\n };\n}\nfunction $e93e671b31057976$var$getNativeValidity(input) {\n return {\n isInvalid: !input.validity.valid,\n validationDetails: $e93e671b31057976$var$getValidity(input),\n validationErrors: input.validationMessage ? [\n input.validationMessage\n ] : []\n };\n}\nfunction $e93e671b31057976$var$getFirstInvalidInput(form) {\n for(let i = 0; i < form.elements.length; i++){\n let element = form.elements[i];\n if (!element.validity.valid) return element;\n }\n return null;\n}\n\n\nexport {$e93e671b31057976$export$b8473d3665f3a75a as useFormValidation};\n//# sourceMappingURL=useFormValidation.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // https://en.wikipedia.org/wiki/Right-to-left\nconst $148a7a147e38ea7f$var$RTL_SCRIPTS = new Set([\n 'Arab',\n 'Syrc',\n 'Samr',\n 'Mand',\n 'Thaa',\n 'Mend',\n 'Nkoo',\n 'Adlm',\n 'Rohg',\n 'Hebr'\n]);\nconst $148a7a147e38ea7f$var$RTL_LANGS = new Set([\n 'ae',\n 'ar',\n 'arc',\n 'bcc',\n 'bqi',\n 'ckb',\n 'dv',\n 'fa',\n 'glk',\n 'he',\n 'ku',\n 'mzn',\n 'nqo',\n 'pnb',\n 'ps',\n 'sd',\n 'ug',\n 'ur',\n 'yi'\n]);\nfunction $148a7a147e38ea7f$export$702d680b21cbd764(localeString) {\n // If the Intl.Locale API is available, use it to get the locale's text direction.\n if (Intl.Locale) {\n let locale = new Intl.Locale(localeString).maximize();\n // Use the text info object to get the direction if possible.\n // @ts-ignore - this was implemented as a property by some browsers before it was standardized as a function.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getTextInfo\n let textInfo = typeof locale.getTextInfo === 'function' ? locale.getTextInfo() : locale.textInfo;\n if (textInfo) return textInfo.direction === 'rtl';\n // Fallback: guess using the script.\n // This is more accurate than guessing by language, since languages can be written in multiple scripts.\n if (locale.script) return $148a7a147e38ea7f$var$RTL_SCRIPTS.has(locale.script);\n }\n // If not, just guess by the language (first part of the locale)\n let lang = localeString.split('-')[0];\n return $148a7a147e38ea7f$var$RTL_LANGS.has(lang);\n}\n\n\nexport {$148a7a147e38ea7f$export$702d680b21cbd764 as isRTL};\n//# sourceMappingURL=utils.module.js.map\n","import {isRTL as $148a7a147e38ea7f$export$702d680b21cbd764} from \"./utils.mjs\";\nimport {useState as $ffhGL$useState, useEffect as $ffhGL$useEffect} from \"react\";\nimport {useIsSSR as $ffhGL$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n// Locale passed from server by PackageLocalizationProvider.\nconst $1e5a04cdaf7d1af8$var$localeSymbol = Symbol.for('react-aria.i18n.locale');\nfunction $1e5a04cdaf7d1af8$export$f09106e7c6677ec5() {\n let locale = typeof window !== 'undefined' && window[$1e5a04cdaf7d1af8$var$localeSymbol] || typeof navigator !== 'undefined' && (navigator.language || navigator.userLanguage) || 'en-US';\n try {\n Intl.DateTimeFormat.supportedLocalesOf([\n locale\n ]);\n } catch {\n locale = 'en-US';\n }\n return {\n locale: locale,\n direction: (0, $148a7a147e38ea7f$export$702d680b21cbd764)(locale) ? 'rtl' : 'ltr'\n };\n}\nlet $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\nlet $1e5a04cdaf7d1af8$var$listeners = new Set();\nfunction $1e5a04cdaf7d1af8$var$updateLocale() {\n $1e5a04cdaf7d1af8$var$currentLocale = $1e5a04cdaf7d1af8$export$f09106e7c6677ec5();\n for (let listener of $1e5a04cdaf7d1af8$var$listeners)listener($1e5a04cdaf7d1af8$var$currentLocale);\n}\nfunction $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a() {\n let isSSR = (0, $ffhGL$useIsSSR)();\n let [defaultLocale, setDefaultLocale] = (0, $ffhGL$useState)($1e5a04cdaf7d1af8$var$currentLocale);\n (0, $ffhGL$useEffect)(()=>{\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.addEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n $1e5a04cdaf7d1af8$var$listeners.add(setDefaultLocale);\n return ()=>{\n $1e5a04cdaf7d1af8$var$listeners.delete(setDefaultLocale);\n if ($1e5a04cdaf7d1af8$var$listeners.size === 0) window.removeEventListener('languagechange', $1e5a04cdaf7d1af8$var$updateLocale);\n };\n }, []);\n // We cannot determine the browser's language on the server, so default to\n // en-US. This will be updated after hydration on the client to the correct value.\n if (isSSR) return {\n locale: 'en-US',\n direction: 'ltr'\n };\n return defaultLocale;\n}\n\n\nexport {$1e5a04cdaf7d1af8$export$f09106e7c6677ec5 as getDefaultLocale, $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a as useDefaultLocale};\n//# sourceMappingURL=useDefaultLocale.module.js.map\n","import {isRTL as $148a7a147e38ea7f$export$702d680b21cbd764} from \"./utils.mjs\";\nimport {useDefaultLocale as $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a} from \"./useDefaultLocale.mjs\";\nimport $h9FiU$react, {useContext as $h9FiU$useContext} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $18f2051aff69b9bf$var$I18nContext = /*#__PURE__*/ (0, $h9FiU$react).createContext(null);\nfunction $18f2051aff69b9bf$export$a54013f0d02a8f82(props) {\n let { locale: locale, children: children } = props;\n let defaultLocale = (0, $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a)();\n let value = (0, $h9FiU$react).useMemo(()=>{\n if (!locale) return defaultLocale;\n return {\n locale: locale,\n direction: (0, $148a7a147e38ea7f$export$702d680b21cbd764)(locale) ? 'rtl' : 'ltr'\n };\n }, [\n defaultLocale,\n locale\n ]);\n return /*#__PURE__*/ (0, $h9FiU$react).createElement($18f2051aff69b9bf$var$I18nContext.Provider, {\n value: value\n }, children);\n}\nfunction $18f2051aff69b9bf$export$43bb16f9c6d9e3f7() {\n let defaultLocale = (0, $1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a)();\n let context = (0, $h9FiU$useContext)($18f2051aff69b9bf$var$I18nContext);\n return context || defaultLocale;\n}\n\n\nexport {$18f2051aff69b9bf$export$a54013f0d02a8f82 as I18nProvider, $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 as useLocale};\n//# sourceMappingURL=context.module.js.map\n","import {useLocale as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7} from \"./context.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nlet $325a3faab7a68acd$var$cache = new Map();\nfunction $325a3faab7a68acd$export$a16aca283550c30d(options) {\n let { locale: locale } = (0, $18f2051aff69b9bf$export$43bb16f9c6d9e3f7)();\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b)=>a[0] < b[0] ? -1 : 1).join() : '');\n if ($325a3faab7a68acd$var$cache.has(cacheKey)) return $325a3faab7a68acd$var$cache.get(cacheKey);\n let formatter = new Intl.Collator(locale, options);\n $325a3faab7a68acd$var$cache.set(cacheKey, formatter);\n return formatter;\n}\n\n\nexport {$325a3faab7a68acd$export$a16aca283550c30d as useCollator};\n//# sourceMappingURL=useCollator.module.js.map\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ const $5b160d28a433310d$var$localeSymbol = Symbol.for('react-aria.i18n.locale');\nconst $5b160d28a433310d$var$stringsSymbol = Symbol.for('react-aria.i18n.strings');\nlet $5b160d28a433310d$var$cachedGlobalStrings = undefined;\nclass $5b160d28a433310d$export$c17fa47878dc55b6 {\n /** Returns a localized string for the given key and locale. */ getStringForLocale(key, locale) {\n let strings = this.getStringsForLocale(locale);\n let string = strings[key];\n if (!string) throw new Error(`Could not find intl message ${key} in ${locale} locale`);\n return string;\n }\n /** Returns all localized strings for the given locale. */ getStringsForLocale(locale) {\n let strings = this.strings[locale];\n if (!strings) {\n strings = $5b160d28a433310d$var$getStringsForLocale(locale, this.strings, this.defaultLocale);\n this.strings[locale] = strings;\n }\n return strings;\n }\n static getGlobalDictionaryForPackage(packageName) {\n if (typeof window === 'undefined') return null;\n let locale = window[$5b160d28a433310d$var$localeSymbol];\n if ($5b160d28a433310d$var$cachedGlobalStrings === undefined) {\n let globalStrings = window[$5b160d28a433310d$var$stringsSymbol];\n if (!globalStrings) return null;\n $5b160d28a433310d$var$cachedGlobalStrings = {};\n for(let pkg in globalStrings)$5b160d28a433310d$var$cachedGlobalStrings[pkg] = new $5b160d28a433310d$export$c17fa47878dc55b6({\n [locale]: globalStrings[pkg]\n }, locale);\n }\n let dictionary = $5b160d28a433310d$var$cachedGlobalStrings === null || $5b160d28a433310d$var$cachedGlobalStrings === void 0 ? void 0 : $5b160d28a433310d$var$cachedGlobalStrings[packageName];\n if (!dictionary) throw new Error(`Strings for package \"${packageName}\" were not included by LocalizedStringProvider. Please add it to the list passed to createLocalizedStringDictionary.`);\n return dictionary;\n }\n constructor(messages, defaultLocale = 'en-US'){\n // Clone messages so we don't modify the original object.\n // Filter out entries with falsy values which may have been caused by applying optimize-locales-plugin.\n this.strings = Object.fromEntries(Object.entries(messages).filter(([, v])=>v));\n this.defaultLocale = defaultLocale;\n }\n}\nfunction $5b160d28a433310d$var$getStringsForLocale(locale, strings, defaultLocale = 'en-US') {\n // If there is an exact match, use it.\n if (strings[locale]) return strings[locale];\n // Attempt to find the closest match by language.\n // For example, if the locale is fr-CA (French Canadian), but there is only\n // an fr-FR (France) set of strings, use that.\n // This could be replaced with Intl.LocaleMatcher once it is supported.\n // https://github.com/tc39/proposal-intl-localematcher\n let language = $5b160d28a433310d$var$getLanguage(locale);\n if (strings[language]) return strings[language];\n for(let key in strings){\n if (key.startsWith(language + '-')) return strings[key];\n }\n // Nothing close, use english.\n return strings[defaultLocale];\n}\nfunction $5b160d28a433310d$var$getLanguage(locale) {\n // @ts-ignore\n if (Intl.Locale) // @ts-ignore\n return new Intl.Locale(locale).language;\n return locale.split('-')[0];\n}\n\n\nexport {$5b160d28a433310d$export$c17fa47878dc55b6 as LocalizedStringDictionary};\n//# sourceMappingURL=LocalizedStringDictionary.module.js.map\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ const $6db58dc88e78b024$var$pluralRulesCache = new Map();\nconst $6db58dc88e78b024$var$numberFormatCache = new Map();\nclass $6db58dc88e78b024$export$2f817fcdc4b89ae0 {\n /** Formats a localized string for the given key with the provided variables. */ format(key, variables) {\n let message = this.strings.getStringForLocale(key, this.locale);\n return typeof message === 'function' ? message(variables, this) : message;\n }\n plural(count, options, type = 'cardinal') {\n let opt = options['=' + count];\n if (opt) return typeof opt === 'function' ? opt() : opt;\n let key = this.locale + ':' + type;\n let pluralRules = $6db58dc88e78b024$var$pluralRulesCache.get(key);\n if (!pluralRules) {\n pluralRules = new Intl.PluralRules(this.locale, {\n type: type\n });\n $6db58dc88e78b024$var$pluralRulesCache.set(key, pluralRules);\n }\n let selected = pluralRules.select(count);\n opt = options[selected] || options.other;\n return typeof opt === 'function' ? opt() : opt;\n }\n number(value) {\n let numberFormat = $6db58dc88e78b024$var$numberFormatCache.get(this.locale);\n if (!numberFormat) {\n numberFormat = new Intl.NumberFormat(this.locale);\n $6db58dc88e78b024$var$numberFormatCache.set(this.locale, numberFormat);\n }\n return numberFormat.format(value);\n }\n select(options, value) {\n let opt = options[value] || options.other;\n return typeof opt === 'function' ? opt() : opt;\n }\n constructor(locale, strings){\n this.locale = locale;\n this.strings = strings;\n }\n}\n\n\nexport {$6db58dc88e78b024$export$2f817fcdc4b89ae0 as LocalizedStringFormatter};\n//# sourceMappingURL=LocalizedStringFormatter.module.js.map\n","import {useLocale as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7} from \"./context.mjs\";\nimport {LocalizedStringDictionary as $6ksNp$LocalizedStringDictionary, LocalizedStringFormatter as $6ksNp$LocalizedStringFormatter} from \"@internationalized/string\";\nimport {useMemo as $6ksNp$useMemo} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $fca6afa0e843324b$var$cache = new WeakMap();\nfunction $fca6afa0e843324b$var$getCachedDictionary(strings) {\n let dictionary = $fca6afa0e843324b$var$cache.get(strings);\n if (!dictionary) {\n dictionary = new (0, $6ksNp$LocalizedStringDictionary)(strings);\n $fca6afa0e843324b$var$cache.set(strings, dictionary);\n }\n return dictionary;\n}\nfunction $fca6afa0e843324b$export$87b761675e8eaa10(strings, packageName) {\n return packageName && (0, $6ksNp$LocalizedStringDictionary).getGlobalDictionaryForPackage(packageName) || $fca6afa0e843324b$var$getCachedDictionary(strings);\n}\nfunction $fca6afa0e843324b$export$f12b703ca79dfbb1(strings, packageName) {\n let { locale: locale } = (0, $18f2051aff69b9bf$export$43bb16f9c6d9e3f7)();\n let dictionary = $fca6afa0e843324b$export$87b761675e8eaa10(strings, packageName);\n return (0, $6ksNp$useMemo)(()=>new (0, $6ksNp$LocalizedStringFormatter)(locale, dictionary), [\n locale,\n dictionary\n ]);\n}\n\n\nexport {$fca6afa0e843324b$export$87b761675e8eaa10 as useLocalizedStringDictionary, $fca6afa0e843324b$export$f12b703ca79dfbb1 as useLocalizedStringFormatter};\n//# sourceMappingURL=useLocalizedStringFormatter.module.js.map\n","import {PressResponderContext as $ae1eeba8b9eafd08$export$5165eccb35aaadb5} from \"./context.mjs\";\nimport {useObjectRef as $87RPk$useObjectRef, mergeProps as $87RPk$mergeProps, useSyncRef as $87RPk$useSyncRef} from \"@react-aria/utils\";\nimport $87RPk$react, {useRef as $87RPk$useRef, useContext as $87RPk$useContext, useEffect as $87RPk$useEffect, useMemo as $87RPk$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $f1ab8c75478c6f73$export$3351871ee4b288b8 = /*#__PURE__*/ (0, $87RPk$react).forwardRef(({ children: children, ...props }, ref)=>{\n let isRegistered = (0, $87RPk$useRef)(false);\n let prevContext = (0, $87RPk$useContext)((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5));\n ref = (0, $87RPk$useObjectRef)(ref || (prevContext === null || prevContext === void 0 ? void 0 : prevContext.ref));\n let context = (0, $87RPk$mergeProps)(prevContext || {}, {\n ...props,\n ref: ref,\n register () {\n isRegistered.current = true;\n if (prevContext) prevContext.register();\n }\n });\n (0, $87RPk$useSyncRef)(prevContext, ref);\n (0, $87RPk$useEffect)(()=>{\n if (!isRegistered.current) {\n console.warn(\"A PressResponder was rendered without a pressable child. Either call the usePress hook, or wrap your DOM node with <Pressable> component.\");\n isRegistered.current = true; // only warn once in strict mode.\n }\n }, []);\n return /*#__PURE__*/ (0, $87RPk$react).createElement((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5).Provider, {\n value: context\n }, children);\n});\nfunction $f1ab8c75478c6f73$export$cf75428e0b9ed1ea({ children: children }) {\n let context = (0, $87RPk$useMemo)(()=>({\n register: ()=>{}\n }), []);\n return /*#__PURE__*/ (0, $87RPk$react).createElement((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5).Provider, {\n value: context\n }, children);\n}\n\n\nexport {$f1ab8c75478c6f73$export$3351871ee4b288b8 as PressResponder, $f1ab8c75478c6f73$export$cf75428e0b9ed1ea as ClearPressResponder};\n//# sourceMappingURL=PressResponder.module.js.map\n","import $3aeG1$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $ae1eeba8b9eafd08$export$5165eccb35aaadb5 = (0, $3aeG1$react).createContext({\n register: ()=>{}\n});\n$ae1eeba8b9eafd08$export$5165eccb35aaadb5.displayName = 'PressResponderContext';\n\n\nexport {$ae1eeba8b9eafd08$export$5165eccb35aaadb5 as PressResponderContext};\n//# sourceMappingURL=context.module.js.map\n","import {isIOS as $7R18e$isIOS, getOwnerDocument as $7R18e$getOwnerDocument, runAfterTransition as $7R18e$runAfterTransition} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet $14c0b72509d70225$var$state = 'default';\nlet $14c0b72509d70225$var$savedUserSelect = '';\nlet $14c0b72509d70225$var$modifiedElementMap = new WeakMap();\nfunction $14c0b72509d70225$export$16a4697467175487(target) {\n if ((0, $7R18e$isIOS)()) {\n if ($14c0b72509d70225$var$state === 'default') {\n const documentObject = (0, $7R18e$getOwnerDocument)(target);\n $14c0b72509d70225$var$savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n $14c0b72509d70225$var$state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n $14c0b72509d70225$var$modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\nfunction $14c0b72509d70225$export$b0d6fa1ab32e3295(target) {\n if ((0, $7R18e$isIOS)()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if ($14c0b72509d70225$var$state !== 'disabled') return;\n $14c0b72509d70225$var$state = 'restoring';\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(()=>{\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n (0, $7R18e$runAfterTransition)(()=>{\n // Avoid race conditions\n if ($14c0b72509d70225$var$state === 'restoring') {\n const documentObject = (0, $7R18e$getOwnerDocument)(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') documentObject.documentElement.style.webkitUserSelect = $14c0b72509d70225$var$savedUserSelect || '';\n $14c0b72509d70225$var$savedUserSelect = '';\n $14c0b72509d70225$var$state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n {\n if (target && $14c0b72509d70225$var$modifiedElementMap.has(target)) {\n let targetOldUserSelect = $14c0b72509d70225$var$modifiedElementMap.get(target);\n if (target.style.userSelect === 'none') target.style.userSelect = targetOldUserSelect;\n if (target.getAttribute('style') === '') target.removeAttribute('style');\n $14c0b72509d70225$var$modifiedElementMap.delete(target);\n }\n }\n}\n\n\nexport {$14c0b72509d70225$export$16a4697467175487 as disableTextSelection, $14c0b72509d70225$export$b0d6fa1ab32e3295 as restoreTextSelection};\n//# sourceMappingURL=textSelection.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n const onBlur = (0, $hf0lj$useCallback)((e)=>{\n if (e.target === e.currentTarget) {\n if (onBlurProp) onBlurProp(e);\n if (onFocusChange) onFocusChange(false);\n return true;\n }\n }, [\n onBlurProp,\n onFocusChange\n ]);\n const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n const onFocus = (0, $hf0lj$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n if (onFocusProp) onFocusProp(e);\n if (onFocusChange) onFocusChange(true);\n onSyntheticFocus(e);\n }\n }, [\n onFocusChange,\n onFocusProp,\n onSyntheticFocus\n ]);\n return {\n focusProps: {\n onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n }\n };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n if ($507fabe10e71c6fb$var$isValidKey(e)) {\n $507fabe10e71c6fb$var$currentModality = 'keyboard';\n $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n $507fabe10e71c6fb$var$currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n if ((0, $28AnR$isVirtualClick)(e)) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) return;\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n }\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n if (typeof window === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function() {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n };\n documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else {\n documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n // Add unmount handler\n windowObject.addEventListener('beforeunload', ()=>{\n $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n }, {\n once: true\n });\n $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n focus: focus\n });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else {\n documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n else {\n loadListener = ()=>{\n $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n $507fabe10e71c6fb$var$currentModality = modality;\n $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n (0, $28AnR$useEffect)(()=>{\n let handler = ()=>{\n setModality($507fabe10e71c6fb$var$currentModality);\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n }, []);\n return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n var _e_target;\n const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n isTextInput = isTextInput || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(e === null || e === void 0 ? void 0 : (_e_target = e.target) === null || _e_target === void 0 ? void 0 : _e_target.type) || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLTextAreaElement || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLElement && (e === null || e === void 0 ? void 0 : e.target.isContentEditable);\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n setFocusVisible(isFocusVisible);\n }, [\n isTextInput\n ], {\n isTextInput: isTextInput\n });\n return {\n isFocusVisible: isFocusVisibleState\n };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n (0, $28AnR$useEffect)(()=>{\n let handler = (modality, e)=>{\n if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n let state = (0, $3b9Q0$useRef)({\n isFocusWithin: false\n });\n let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n state.current.isFocusWithin = false;\n if (onBlurWithin) onBlurWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(false);\n }\n }, [\n onBlurWithin,\n onFocusWithinChange,\n state\n ]);\n let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (!state.current.isFocusWithin && document.activeElement === e.target) {\n if (onFocusWithin) onFocusWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(true);\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n }\n }, [\n onFocusWithin,\n onFocusWithinChange,\n onSyntheticFocus\n ]);\n if (isDisabled) return {\n focusWithinProps: {\n // These should not have been null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n return {\n focusWithinProps: {\n onFocus: onFocus,\n onBlur: onBlur\n }\n };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","import {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(()=>{\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n if (typeof document === 'undefined') return;\n if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n $6179b936705e76d3$var$hoverCount++;\n return ()=>{\n $6179b936705e76d3$var$hoverCount--;\n if ($6179b936705e76d3$var$hoverCount > 0) return;\n if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n let state = (0, $AWxnT$useRef)({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n let triggerHoverStart = (event, pointerType)=>{\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n if (onHoverStart) onHoverStart({\n type: 'hoverstart',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(true);\n setHovered(true);\n };\n let triggerHoverEnd = (event, pointerType)=>{\n state.pointerType = '';\n state.target = null;\n if (pointerType === 'touch' || !state.isHovered) return;\n state.isHovered = false;\n let target = event.currentTarget;\n if (onHoverEnd) onHoverEnd({\n type: 'hoverend',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(false);\n setHovered(false);\n };\n let hoverProps = {};\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e)=>{\n if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n triggerHoverStart(e, e.pointerType);\n };\n hoverProps.onPointerLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n };\n } else {\n hoverProps.onTouchStart = ()=>{\n state.ignoreEmulatedMouseEvents = true;\n };\n hoverProps.onMouseEnter = (e)=>{\n if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n state.ignoreEmulatedMouseEvents = false;\n };\n hoverProps.onMouseLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n };\n }\n return {\n hoverProps: hoverProps,\n triggerHoverEnd: triggerHoverEnd\n };\n }, [\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled,\n state\n ]);\n (0, $AWxnT$useEffect)(()=>{\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) triggerHoverEnd({\n currentTarget: state.target\n }, state.pointerType);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled\n ]);\n return {\n hoverProps: hoverProps,\n isHovered: isHovered\n };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $93925083ecbb358c$export$48d1ea6320830260(handler) {\n if (!handler) return undefined;\n let shouldStopPropagation = true;\n return (e)=>{\n let event = {\n ...e,\n preventDefault () {\n e.preventDefault();\n },\n isDefaultPrevented () {\n return e.isDefaultPrevented();\n },\n stopPropagation () {\n console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n },\n continuePropagation () {\n shouldStopPropagation = false;\n }\n };\n handler(event);\n if (shouldStopPropagation) e.stopPropagation();\n };\n}\n\n\nexport {$93925083ecbb358c$export$48d1ea6320830260 as createEventHandler};\n//# sourceMappingURL=createEventHandler.module.js.map\n","import {createEventHandler as $93925083ecbb358c$export$48d1ea6320830260} from \"./createEventHandler.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $46d819fcbaf35654$export$8f71654801c2f7cd(props) {\n return {\n keyboardProps: props.isDisabled ? {} : {\n onKeyDown: (0, $93925083ecbb358c$export$48d1ea6320830260)(props.onKeyDown),\n onKeyUp: (0, $93925083ecbb358c$export$48d1ea6320830260)(props.onKeyUp)\n }\n };\n}\n\n\nexport {$46d819fcbaf35654$export$8f71654801c2f7cd as useKeyboard};\n//# sourceMappingURL=useKeyboard.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useState as $hQ5Hp$useState} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nlet $ef06256079686ba0$var$descriptionId = 0;\nconst $ef06256079686ba0$var$descriptionNodes = new Map();\nfunction $ef06256079686ba0$export$f8aeda7b10753fa1(description) {\n let [id, setId] = (0, $hQ5Hp$useState)();\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n if (!description) return;\n let desc = $ef06256079686ba0$var$descriptionNodes.get(description);\n if (!desc) {\n let id = `react-aria-description-${$ef06256079686ba0$var$descriptionId++}`;\n setId(id);\n let node = document.createElement('div');\n node.id = id;\n node.style.display = 'none';\n node.textContent = description;\n document.body.appendChild(node);\n desc = {\n refCount: 0,\n element: node\n };\n $ef06256079686ba0$var$descriptionNodes.set(description, desc);\n } else setId(desc.element.id);\n desc.refCount++;\n return ()=>{\n if (desc && --desc.refCount === 0) {\n desc.element.remove();\n $ef06256079686ba0$var$descriptionNodes.delete(description);\n }\n };\n }, [\n description\n ]);\n return {\n 'aria-describedby': description ? id : undefined\n };\n}\n\n\nexport {$ef06256079686ba0$export$f8aeda7b10753fa1 as useDescription};\n//# sourceMappingURL=useDescription.module.js.map\n","import {usePress as $f6c31cce2adf654f$export$45712eceda6fad21} from \"./usePress.mjs\";\nimport {useGlobalListeners as $4k2kv$useGlobalListeners, useDescription as $4k2kv$useDescription, mergeProps as $4k2kv$mergeProps} from \"@react-aria/utils\";\nimport {useRef as $4k2kv$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $8a26561d2877236e$var$DEFAULT_THRESHOLD = 500;\nfunction $8a26561d2877236e$export$c24ed0104d07eab9(props) {\n let { isDisabled: isDisabled, onLongPressStart: onLongPressStart, onLongPressEnd: onLongPressEnd, onLongPress: onLongPress, threshold: threshold = $8a26561d2877236e$var$DEFAULT_THRESHOLD, accessibilityDescription: accessibilityDescription } = props;\n const timeRef = (0, $4k2kv$useRef)(undefined);\n let { addGlobalListener: addGlobalListener, removeGlobalListener: removeGlobalListener } = (0, $4k2kv$useGlobalListeners)();\n let { pressProps: pressProps } = (0, $f6c31cce2adf654f$export$45712eceda6fad21)({\n isDisabled: isDisabled,\n onPressStart (e) {\n e.continuePropagation();\n if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n if (onLongPressStart) onLongPressStart({\n ...e,\n type: 'longpressstart'\n });\n timeRef.current = setTimeout(()=>{\n // Prevent other usePress handlers from also handling this event.\n e.target.dispatchEvent(new PointerEvent('pointercancel', {\n bubbles: true\n }));\n if (onLongPress) onLongPress({\n ...e,\n type: 'longpress'\n });\n timeRef.current = undefined;\n }, threshold);\n // Prevent context menu, which may be opened on long press on touch devices\n if (e.pointerType === 'touch') {\n let onContextMenu = (e)=>{\n e.preventDefault();\n };\n addGlobalListener(e.target, 'contextmenu', onContextMenu, {\n once: true\n });\n addGlobalListener(window, 'pointerup', ()=>{\n // If no contextmenu event is fired quickly after pointerup, remove the handler\n // so future context menu events outside a long press are not prevented.\n setTimeout(()=>{\n removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n }, 30);\n }, {\n once: true\n });\n }\n }\n },\n onPressEnd (e) {\n if (timeRef.current) clearTimeout(timeRef.current);\n if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) onLongPressEnd({\n ...e,\n type: 'longpressend'\n });\n }\n });\n let descriptionProps = (0, $4k2kv$useDescription)(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n return {\n longPressProps: (0, $4k2kv$mergeProps)(pressProps, descriptionProps)\n };\n}\n\n\nexport {$8a26561d2877236e$export$c24ed0104d07eab9 as useLongPress};\n//# sourceMappingURL=useLongPress.module.js.map\n","function _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n\n return privateMap.get(receiver);\n}\nexport { _class_extract_field_descriptor as _ };\n","import { _ as _class_apply_descriptor_set } from \"./_class_apply_descriptor_set.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_set(receiver, privateMap, value) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"set\");\n _class_apply_descriptor_set(receiver, descriptor, value);\n return value;\n}\nexport { _class_private_field_set as _ };\n","function _class_apply_descriptor_set(receiver, descriptor, value) {\n if (descriptor.set) descriptor.set.call(receiver, value);\n else {\n if (!descriptor.writable) {\n // This should only throw in strict mode, but class bodies are\n // always strict and private fields can only be used inside\n // class bodies.\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nexport { _class_apply_descriptor_set as _ };\n","import {disableTextSelection as $14c0b72509d70225$export$16a4697467175487, restoreTextSelection as $14c0b72509d70225$export$b0d6fa1ab32e3295} from \"./textSelection.mjs\";\nimport {PressResponderContext as $ae1eeba8b9eafd08$export$5165eccb35aaadb5} from \"./context.mjs\";\nimport {_ as $7mdmh$_} from \"@swc/helpers/_/_class_private_field_get\";\nimport {_ as $7mdmh$_1} from \"@swc/helpers/_/_class_private_field_init\";\nimport {_ as $7mdmh$_2} from \"@swc/helpers/_/_class_private_field_set\";\nimport {mergeProps as $7mdmh$mergeProps, useSyncRef as $7mdmh$useSyncRef, useGlobalListeners as $7mdmh$useGlobalListeners, useEffectEvent as $7mdmh$useEffectEvent, getOwnerDocument as $7mdmh$getOwnerDocument, chain as $7mdmh$chain, isMac as $7mdmh$isMac, openLink as $7mdmh$openLink, isVirtualClick as $7mdmh$isVirtualClick, focusWithoutScrolling as $7mdmh$focusWithoutScrolling, isVirtualPointerEvent as $7mdmh$isVirtualPointerEvent, getOwnerWindow as $7mdmh$getOwnerWindow} from \"@react-aria/utils\";\nimport {useContext as $7mdmh$useContext, useState as $7mdmh$useState, useRef as $7mdmh$useRef, useMemo as $7mdmh$useMemo, useEffect as $7mdmh$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\n\n\n\nfunction $f6c31cce2adf654f$var$usePressResponderContext(props) {\n // Consume context from <PressResponder> and merge with props.\n let context = (0, $7mdmh$useContext)((0, $ae1eeba8b9eafd08$export$5165eccb35aaadb5));\n if (context) {\n let { register: register, ...contextProps } = context;\n props = (0, $7mdmh$mergeProps)(contextProps, props);\n register();\n }\n (0, $7mdmh$useSyncRef)(context, props.ref);\n return props;\n}\nvar $f6c31cce2adf654f$var$_shouldStopPropagation = /*#__PURE__*/ new WeakMap();\nclass $f6c31cce2adf654f$var$PressEvent {\n continuePropagation() {\n (0, $7mdmh$_2)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, false);\n }\n get shouldStopPropagation() {\n return (0, $7mdmh$_)(this, $f6c31cce2adf654f$var$_shouldStopPropagation);\n }\n constructor(type, pointerType, originalEvent, state){\n (0, $7mdmh$_1)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, {\n writable: true,\n value: void 0\n });\n (0, $7mdmh$_2)(this, $f6c31cce2adf654f$var$_shouldStopPropagation, true);\n var _state_target;\n let currentTarget = (_state_target = state === null || state === void 0 ? void 0 : state.target) !== null && _state_target !== void 0 ? _state_target : originalEvent.currentTarget;\n const rect = currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.getBoundingClientRect();\n let x, y = 0;\n let clientX, clientY = null;\n if (originalEvent.clientX != null && originalEvent.clientY != null) {\n clientX = originalEvent.clientX;\n clientY = originalEvent.clientY;\n }\n if (rect) {\n if (clientX != null && clientY != null) {\n x = clientX - rect.left;\n y = clientY - rect.top;\n } else {\n x = rect.width / 2;\n y = rect.height / 2;\n }\n }\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n this.x = x;\n this.y = y;\n }\n}\nconst $f6c31cce2adf654f$var$LINK_CLICKED = Symbol('linkClicked');\nfunction $f6c31cce2adf654f$export$45712eceda6fad21(props) {\n let { onPress: onPress, onPressChange: onPressChange, onPressStart: onPressStart, onPressEnd: onPressEnd, onPressUp: onPressUp, isDisabled: isDisabled, isPressed: isPressedProp, preventFocusOnPress: preventFocusOnPress, shouldCancelOnPointerExit: shouldCancelOnPointerExit, allowTextSelectionOnPress: allowTextSelectionOnPress, // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, ...domProps } = $f6c31cce2adf654f$var$usePressResponderContext(props);\n let [isPressed, setPressed] = (0, $7mdmh$useState)(false);\n let ref = (0, $7mdmh$useRef)({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null\n });\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $7mdmh$useGlobalListeners)();\n let triggerPressStart = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType)=>{\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) return false;\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new $f6c31cce2adf654f$var$PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n if (onPressChange) onPressChange(true);\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n let triggerPressEnd = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{\n let state = ref.current;\n if (!state.didFirePressStart) return false;\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new $f6c31cce2adf654f$var$PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n if (onPressChange) onPressChange(false);\n setPressed(false);\n if (onPress && wasPressed && !isDisabled) {\n let event = new $f6c31cce2adf654f$var$PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation && (shouldStopPropagation = event.shouldStopPropagation);\n }\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n let triggerPressUp = (0, $7mdmh$useEffectEvent)((originalEvent, pointerType)=>{\n let state = ref.current;\n if (isDisabled) return false;\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new $f6c31cce2adf654f$var$PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n return true;\n });\n let cancel = (0, $7mdmh$useEffectEvent)((e)=>{\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n }\n });\n let cancelOnPointerExit = (0, $7mdmh$useEffectEvent)((e)=>{\n if (shouldCancelOnPointerExit) cancel(e);\n });\n let pressProps = (0, $7mdmh$useMemo)(()=>{\n let state = ref.current;\n let pressProps = {\n onKeyDown (e) {\n if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target)) {\n var _state_metaKeyEvents;\n if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e)=>{\n if ($f6c31cce2adf654f$var$isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target) && state.target) triggerPressUp($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard');\n };\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'keyup', (0, $7mdmh$chain)(pressUp, onKeyUp), true);\n }\n if (shouldStopPropagation) e.stopPropagation();\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && (0, $7mdmh$isMac)()) (_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.set(e.key, e.nativeEvent);\n } else if (e.key === 'Meta') state.metaKeyEvents = new Map();\n },\n onClick (e) {\n if (e && !e.currentTarget.contains(e.target)) return;\n if (e && e.button === 0 && !state.isTriggeringEvent && !(0, $7mdmh$openLink).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) e.preventDefault();\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || (0, $7mdmh$isVirtualClick)(e.nativeEvent))) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) e.stopPropagation();\n }\n }\n };\n let onKeyUp = (e)=>{\n var _state_metaKeyEvents;\n if (state.isPressed && state.target && $f6c31cce2adf654f$var$isValidKeyboardEvent(e, state.target)) {\n var _state_metaKeyEvents1;\n if ($f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(e.target, e.key)) e.preventDefault();\n let target = e.target;\n triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && $f6c31cce2adf654f$var$isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[$f6c31cce2adf654f$var$LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[$f6c31cce2adf654f$var$LINK_CLICKED] = true;\n (0, $7mdmh$openLink)(state.target, e, false);\n }\n state.isPressed = false;\n (_state_metaKeyEvents1 = state.metaKeyEvents) === null || _state_metaKeyEvents1 === void 0 ? void 0 : _state_metaKeyEvents1.delete(e.key);\n } else if (e.key === 'Meta' && ((_state_metaKeyEvents = state.metaKeyEvents) === null || _state_metaKeyEvents === void 0 ? void 0 : _state_metaKeyEvents.size)) {\n var _state_target;\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values())(_state_target = state.target) === null || _state_target === void 0 ? void 0 : _state_target.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n };\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e)=>{\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if ((0, $7mdmh$isVirtualPointerEvent)(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if ($f6c31cce2adf654f$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n state.pointerType = e.pointerType;\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$16a4697467175487)(state.target);\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseDown = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if ($f6c31cce2adf654f$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n e.stopPropagation();\n }\n };\n pressProps.onPointerUp = (e)=>{\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target) || state.pointerType === 'virtual') return;\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && $f6c31cce2adf654f$var$isOverTarget(e, e.currentTarget)) triggerPressUp(e, state.pointerType || e.pointerType);\n };\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e)=>{\n if (e.pointerId !== state.activePointerId) return;\n if (state.target && $f6c31cce2adf654f$var$isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n let onPointerUp = (e)=>{\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if ($f6c31cce2adf654f$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n else if (state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n // Prevent subsequent touchend event from triggering onClick on unrelated elements on Android. See below.\n // Both 'touch' and 'pen' pointerTypes trigger onTouchEnd, but 'mouse' does not.\n if ('ontouchend' in state.target && e.pointerType !== 'mouse') addGlobalListener(state.target, 'touchend', onTouchEnd, {\n once: true\n });\n }\n };\n // This is a workaround for an Android Chrome/Firefox issue where click events are fired on an incorrect element\n // if the original target is removed during onPointerUp (before onClick).\n // https://github.com/adobe/react-spectrum/issues/1513\n // https://issues.chromium.org/issues/40732224\n // Note: this event must be registered directly on the element, not via React props in order to work.\n // https://github.com/facebook/react/issues/9809\n let onTouchEnd = (e)=>{\n // Don't preventDefault if we actually want the default (e.g. submit/link click).\n if ($f6c31cce2adf654f$var$shouldPreventDefaultUp(e.currentTarget)) e.preventDefault();\n };\n let onPointerCancel = (e)=>{\n cancel(e);\n };\n pressProps.onDragStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e)=>{\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target)) return;\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if ($f6c31cce2adf654f$var$shouldPreventDefaultDown(e.currentTarget)) e.preventDefault();\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = (0, $7mdmh$isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) e.stopPropagation();\n addGlobalListener((0, $7mdmh$getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n pressProps.onMouseEnter = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseLeave = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onMouseUp = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) triggerPressUp(e, state.pointerType || 'mouse');\n };\n let onMouseUp = (e)=>{\n // Only handle left clicks\n if (e.button !== 0) return;\n state.isPressed = false;\n removeAllGlobalListeners();\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n if (state.target && $f6c31cce2adf654f$var$isOverTarget(e, state.target) && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType);\n else if (state.target && state.isOverTarget && state.pointerType != null) triggerPressEnd($f6c31cce2adf654f$var$createEvent(state.target, e), state.pointerType, false);\n state.isOverTarget = false;\n };\n pressProps.onTouchStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n let touch = $f6c31cce2adf654f$var$getTouchFromEvent(e.nativeEvent);\n if (!touch) return;\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) (0, $7mdmh$focusWithoutScrolling)(e.currentTarget);\n if (!allowTextSelectionOnPress) (0, $14c0b72509d70225$export$16a4697467175487)(state.target);\n let shouldStopPropagation = triggerPressStart($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType);\n if (shouldStopPropagation) e.stopPropagation();\n addGlobalListener((0, $7mdmh$getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);\n };\n pressProps.onTouchMove = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n let touch = $f6c31cce2adf654f$var$getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && $f6c31cce2adf654f$var$isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit($f6c31cce2adf654f$var$createTouchEvent(state.target, e));\n }\n if (shouldStopPropagation) e.stopPropagation();\n };\n pressProps.onTouchEnd = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n let touch = $f6c31cce2adf654f$var$getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && $f6c31cce2adf654f$var$isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType);\n shouldStopPropagation = triggerPressEnd($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd($f6c31cce2adf654f$var$createTouchEvent(state.target, e), state.pointerType, false);\n if (shouldStopPropagation) e.stopPropagation();\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)(state.target);\n removeAllGlobalListeners();\n };\n pressProps.onTouchCancel = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n e.stopPropagation();\n if (state.isPressed) cancel($f6c31cce2adf654f$var$createTouchEvent(state.target, e));\n };\n let onScroll = (e)=>{\n if (state.isPressed && e.target.contains(state.target)) cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false\n });\n };\n pressProps.onDragStart = (e)=>{\n if (!e.currentTarget.contains(e.target)) return;\n cancel(e);\n };\n }\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp\n ]);\n // Remove user-select: none in case component unmounts immediately after pressStart\n (0, $7mdmh$useEffect)(()=>{\n return ()=>{\n var _ref_current_target;\n if (!allowTextSelectionOnPress) // eslint-disable-next-line react-hooks/exhaustive-deps\n (0, $14c0b72509d70225$export$b0d6fa1ab32e3295)((_ref_current_target = ref.current.target) !== null && _ref_current_target !== void 0 ? _ref_current_target : undefined);\n };\n }, [\n allowTextSelectionOnPress\n ]);\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: (0, $7mdmh$mergeProps)(domProps, pressProps)\n };\n}\nfunction $f6c31cce2adf654f$var$isHTMLAnchorLink(target) {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\nfunction $f6c31cce2adf654f$var$isValidKeyboardEvent(event, currentTarget) {\n const { key: key, code: code } = event;\n const element = currentTarget;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof (0, $7mdmh$getOwnerWindow)(element).HTMLInputElement && !$f6c31cce2adf654f$var$isValidInputKey(element, key) || element instanceof (0, $7mdmh$getOwnerWindow)(element).HTMLTextAreaElement || element.isContentEditable) && // Links should only trigger with Enter key\n !((role === 'link' || !role && $f6c31cce2adf654f$var$isHTMLAnchorLink(element)) && key !== 'Enter');\n}\nfunction $f6c31cce2adf654f$var$getTouchFromEvent(event) {\n const { targetTouches: targetTouches } = event;\n if (targetTouches.length > 0) return targetTouches[0];\n return null;\n}\nfunction $f6c31cce2adf654f$var$getTouchById(event, pointerId) {\n const changedTouches = event.changedTouches;\n for(let i = 0; i < changedTouches.length; i++){\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) return touch;\n }\n return null;\n}\nfunction $f6c31cce2adf654f$var$createTouchEvent(target, e) {\n let clientX = 0;\n let clientY = 0;\n if (e.targetTouches && e.targetTouches.length === 1) {\n clientX = e.targetTouches[0].clientX;\n clientY = e.targetTouches[0].clientY;\n }\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX: clientX,\n clientY: clientY\n };\n}\nfunction $f6c31cce2adf654f$var$createEvent(target, e) {\n let clientX = e.clientX;\n let clientY = e.clientY;\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n clientX: clientX,\n clientY: clientY\n };\n}\nfunction $f6c31cce2adf654f$var$getPointClientRect(point) {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) offsetX = point.width / 2;\n else if (point.radiusX !== undefined) offsetX = point.radiusX;\n if (point.height !== undefined) offsetY = point.height / 2;\n else if (point.radiusY !== undefined) offsetY = point.radiusY;\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX\n };\n}\nfunction $f6c31cce2adf654f$var$areRectanglesOverlapping(a, b) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) return false;\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) return false;\n return true;\n}\nfunction $f6c31cce2adf654f$var$isOverTarget(point, target) {\n let rect = target.getBoundingClientRect();\n let pointRect = $f6c31cce2adf654f$var$getPointClientRect(point);\n return $f6c31cce2adf654f$var$areRectanglesOverlapping(rect, pointRect);\n}\nfunction $f6c31cce2adf654f$var$shouldPreventDefaultDown(target) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\nfunction $f6c31cce2adf654f$var$shouldPreventDefaultUp(target) {\n if (target instanceof HTMLInputElement) return false;\n if (target instanceof HTMLButtonElement) return target.type !== 'submit' && target.type !== 'reset';\n if ($f6c31cce2adf654f$var$isHTMLAnchorLink(target)) return false;\n return true;\n}\nfunction $f6c31cce2adf654f$var$shouldPreventDefaultKeyboard(target, key) {\n if (target instanceof HTMLInputElement) return !$f6c31cce2adf654f$var$isValidInputKey(target, key);\n return $f6c31cce2adf654f$var$shouldPreventDefaultUp(target);\n}\nconst $f6c31cce2adf654f$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\nfunction $f6c31cce2adf654f$var$isValidInputKey(target, key) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : $f6c31cce2adf654f$var$nonTextInputTypes.has(target.type);\n}\n\n\nexport {$f6c31cce2adf654f$export$45712eceda6fad21 as usePress};\n//# sourceMappingURL=usePress.module.js.map\n","function _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) return descriptor.get.call(receiver);\n\n return descriptor.value;\n}\nexport { _class_apply_descriptor_get as _ };\n","import { _ as _class_apply_descriptor_get } from \"./_class_apply_descriptor_get.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nexport { _class_private_field_get as _ };\n","import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n","function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nexport { _check_private_redeclaration as _ };\n","import {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\nimport {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $8a9cb279dc87e130$export$905e7fc544a71f36 {\n isDefaultPrevented() {\n return this.nativeEvent.defaultPrevented;\n }\n preventDefault() {\n this.defaultPrevented = true;\n this.nativeEvent.preventDefault();\n }\n stopPropagation() {\n this.nativeEvent.stopPropagation();\n this.isPropagationStopped = ()=>true;\n }\n isPropagationStopped() {\n return false;\n }\n persist() {}\n constructor(type, nativeEvent){\n this.nativeEvent = nativeEvent;\n this.target = nativeEvent.target;\n this.currentTarget = nativeEvent.currentTarget;\n this.relatedTarget = nativeEvent.relatedTarget;\n this.bubbles = nativeEvent.bubbles;\n this.cancelable = nativeEvent.cancelable;\n this.defaultPrevented = nativeEvent.defaultPrevented;\n this.eventPhase = nativeEvent.eventPhase;\n this.isTrusted = nativeEvent.isTrusted;\n this.timeStamp = nativeEvent.timeStamp;\n this.type = type;\n }\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n let stateRef = (0, $6dfIe$useRef)({\n isFocused: false,\n observer: null\n });\n // Clean up MutationObserver on unmount. See below.\n (0, $6dfIe$useLayoutEffect)(()=>{\n const state = stateRef.current;\n return ()=>{\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n });\n // This function is called during a React onFocus event.\n return (0, $6dfIe$useCallback)((e)=>{\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n stateRef.current.isFocused = true;\n let target = e.target;\n let onBlurHandler = (e)=>{\n stateRef.current.isFocused = false;\n if (target.disabled) // For backward compatibility, dispatch a (fake) React synthetic event.\n dispatchBlur(new $8a9cb279dc87e130$export$905e7fc544a71f36('blur', e));\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n target.addEventListener('focusout', onBlurHandler, {\n once: true\n });\n stateRef.current.observer = new MutationObserver(()=>{\n if (stateRef.current.isFocused && target.disabled) {\n var _stateRef_current_observer;\n (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {\n relatedTarget: relatedTargetEl\n }));\n target.dispatchEvent(new FocusEvent('focusout', {\n bubbles: true,\n relatedTarget: relatedTargetEl\n }));\n }\n });\n stateRef.current.observer.observe(target, {\n attributes: true,\n attributeFilter: [\n 'disabled'\n ]\n });\n }\n }, [\n dispatchBlur\n ]);\n}\n\n\nexport {$8a9cb279dc87e130$export$905e7fc544a71f36 as SyntheticFocusEvent, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent};\n//# sourceMappingURL=utils.module.js.map\n","import {useLabel as $d191a55c9702f145$export$8467354a121f1b9f} from \"./useLabel.mjs\";\nimport {useSlotId as $2kC82$useSlotId, mergeProps as $2kC82$mergeProps} from \"@react-aria/utils\";\n\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $2baaea4c71418dea$export$294aa081a6c6f55d(props) {\n let { description: description, errorMessage: errorMessage, isInvalid: isInvalid, validationState: validationState } = props;\n let { labelProps: labelProps, fieldProps: fieldProps } = (0, $d191a55c9702f145$export$8467354a121f1b9f)(props);\n let descriptionId = (0, $2kC82$useSlotId)([\n Boolean(description),\n Boolean(errorMessage),\n isInvalid,\n validationState\n ]);\n let errorMessageId = (0, $2kC82$useSlotId)([\n Boolean(description),\n Boolean(errorMessage),\n isInvalid,\n validationState\n ]);\n fieldProps = (0, $2kC82$mergeProps)(fieldProps, {\n 'aria-describedby': [\n descriptionId,\n // Use aria-describedby for error message because aria-errormessage is unsupported using VoiceOver or NVDA. See https://github.com/adobe/react-spectrum/issues/1346#issuecomment-740136268\n errorMessageId,\n props['aria-describedby']\n ].filter(Boolean).join(' ') || undefined\n });\n return {\n labelProps: labelProps,\n fieldProps: fieldProps,\n descriptionProps: {\n id: descriptionId\n },\n errorMessageProps: {\n id: errorMessageId\n }\n };\n}\n\n\nexport {$2baaea4c71418dea$export$294aa081a6c6f55d as useField};\n//# sourceMappingURL=useField.module.js.map\n","import {useId as $83Elw$useId, useLabels as $83Elw$useLabels} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $d191a55c9702f145$export$8467354a121f1b9f(props) {\n let { id: id, label: label, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, labelElementType: labelElementType = 'label' } = props;\n id = (0, $83Elw$useId)(id);\n let labelId = (0, $83Elw$useId)();\n let labelProps = {};\n if (label) {\n ariaLabelledby = ariaLabelledby ? `${labelId} ${ariaLabelledby}` : labelId;\n labelProps = {\n id: labelId,\n htmlFor: labelElementType === 'label' ? id : undefined\n };\n } else if (!ariaLabelledby && !ariaLabel) console.warn('If you do not provide a visible label, you must specify an aria-label or aria-labelledby attribute for accessibility');\n let fieldProps = (0, $83Elw$useLabels)({\n id: id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby\n });\n return {\n labelProps: labelProps,\n fieldProps: fieldProps\n };\n}\n\n\nexport {$d191a55c9702f145$export$8467354a121f1b9f as useLabel};\n//# sourceMappingURL=useLabel.module.js.map\n","import {listData as $b1f0cad8af73213b$export$3585ede4d035bf14} from \"./utils.mjs\";\nimport {filterDOMProps as $by1yQ$filterDOMProps, useId as $by1yQ$useId, mergeProps as $by1yQ$mergeProps} from \"@react-aria/utils\";\nimport {useFocusWithin as $by1yQ$useFocusWithin} from \"@react-aria/interactions\";\nimport {useLabel as $by1yQ$useLabel} from \"@react-aria/label\";\nimport {useSelectableList as $by1yQ$useSelectableList} from \"@react-aria/selection\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $c132121280ec012d$export$50eacbbf140a3141(props, state, ref) {\n let domProps = (0, $by1yQ$filterDOMProps)(props, {\n labelable: true\n });\n // Use props instead of state here. We don't want this to change due to long press.\n let selectionBehavior = props.selectionBehavior || 'toggle';\n let linkBehavior = props.linkBehavior || (selectionBehavior === 'replace' ? 'action' : 'override');\n if (selectionBehavior === 'toggle' && linkBehavior === 'action') // linkBehavior=\"action\" does not work with selectionBehavior=\"toggle\" because there is no way\n // to initiate selection (checkboxes are not allowed inside a listbox). Link items will not be\n // selectable in this configuration.\n linkBehavior = 'override';\n let { listProps: listProps } = (0, $by1yQ$useSelectableList)({\n ...props,\n ref: ref,\n selectionManager: state.selectionManager,\n collection: state.collection,\n disabledKeys: state.disabledKeys,\n linkBehavior: linkBehavior\n });\n let { focusWithinProps: focusWithinProps } = (0, $by1yQ$useFocusWithin)({\n onFocusWithin: props.onFocus,\n onBlurWithin: props.onBlur,\n onFocusWithinChange: props.onFocusChange\n });\n // Share list id and some props with child options.\n let id = (0, $by1yQ$useId)(props.id);\n (0, $b1f0cad8af73213b$export$3585ede4d035bf14).set(state, {\n id: id,\n shouldUseVirtualFocus: props.shouldUseVirtualFocus,\n shouldSelectOnPressUp: props.shouldSelectOnPressUp,\n shouldFocusOnHover: props.shouldFocusOnHover,\n isVirtualized: props.isVirtualized,\n onAction: props.onAction,\n linkBehavior: linkBehavior\n });\n let { labelProps: labelProps, fieldProps: fieldProps } = (0, $by1yQ$useLabel)({\n ...props,\n id: id,\n // listbox is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: 'span'\n });\n return {\n labelProps: labelProps,\n listBoxProps: (0, $by1yQ$mergeProps)(domProps, focusWithinProps, state.selectionManager.selectionMode === 'multiple' ? {\n 'aria-multiselectable': 'true'\n } : {}, {\n role: 'listbox',\n ...(0, $by1yQ$mergeProps)(fieldProps, listProps)\n })\n };\n}\n\n\nexport {$c132121280ec012d$export$50eacbbf140a3141 as useListBox};\n//# sourceMappingURL=useListBox.module.js.map\n","import {useSelectableCollection as $ae20dd8cbca75726$export$d6daf82dcd84e87c} from \"./useSelectableCollection.mjs\";\nimport {ListKeyboardDelegate as $2a25aae57d74318e$export$a05409b8bb224a5a} from \"./ListKeyboardDelegate.mjs\";\nimport {useCollator as $1aJk5$useCollator} from \"@react-aria/i18n\";\nimport {useMemo as $1aJk5$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $982254629710d113$export$b95089534ab7c1fd(props) {\n let { selectionManager: selectionManager, collection: collection, disabledKeys: disabledKeys, ref: ref, keyboardDelegate: keyboardDelegate, layoutDelegate: layoutDelegate } = props;\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = (0, $1aJk5$useCollator)({\n usage: 'search',\n sensitivity: 'base'\n });\n let disabledBehavior = selectionManager.disabledBehavior;\n let delegate = (0, $1aJk5$useMemo)(()=>keyboardDelegate || new (0, $2a25aae57d74318e$export$a05409b8bb224a5a)({\n collection: collection,\n disabledKeys: disabledKeys,\n disabledBehavior: disabledBehavior,\n ref: ref,\n collator: collator,\n layoutDelegate: layoutDelegate\n }), [\n keyboardDelegate,\n layoutDelegate,\n collection,\n disabledKeys,\n ref,\n collator,\n disabledBehavior\n ]);\n let { collectionProps: collectionProps } = (0, $ae20dd8cbca75726$export$d6daf82dcd84e87c)({\n ...props,\n ref: ref,\n selectionManager: selectionManager,\n keyboardDelegate: delegate\n });\n return {\n listProps: collectionProps\n };\n}\n\n\nexport {$982254629710d113$export$b95089534ab7c1fd as useSelectableList};\n//# sourceMappingURL=useSelectableList.module.js.map\n","import {isCtrlKeyPressed as $feb5ffebff200149$export$16792effe837dba3, isNonContiguousSelectionModifier as $feb5ffebff200149$export$d3e3bd3e26688c04} from \"./utils.mjs\";\nimport {focusSafely as $581M0$focusSafely} from \"@react-aria/focus\";\nimport {useRouter as $581M0$useRouter, openLink as $581M0$openLink, mergeProps as $581M0$mergeProps} from \"@react-aria/utils\";\nimport {usePress as $581M0$usePress, useLongPress as $581M0$useLongPress} from \"@react-aria/interactions\";\nimport {useEffect as $581M0$useEffect, useRef as $581M0$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $880e95eb8b93ba9a$export$ecf600387e221c37(options) {\n let { selectionManager: manager, key: key, ref: ref, shouldSelectOnPressUp: shouldSelectOnPressUp, shouldUseVirtualFocus: shouldUseVirtualFocus, focus: focus, isDisabled: isDisabled, onAction: onAction, allowsDifferentPressOrigin: allowsDifferentPressOrigin, linkBehavior: linkBehavior = 'action' } = options;\n let router = (0, $581M0$useRouter)();\n let onSelect = (e)=>{\n if (e.pointerType === 'keyboard' && (0, $feb5ffebff200149$export$d3e3bd3e26688c04)(e)) manager.toggleSelection(key);\n else {\n if (manager.selectionMode === 'none') return;\n if (manager.isLink(key)) {\n if (linkBehavior === 'selection' && ref.current) {\n let itemProps = manager.getItemProps(key);\n router.open(ref.current, e, itemProps.href, itemProps.routerOptions);\n // Always set selected keys back to what they were so that select and combobox close.\n manager.setSelectedKeys(manager.selectedKeys);\n return;\n } else if (linkBehavior === 'override' || linkBehavior === 'none') return;\n }\n if (manager.selectionMode === 'single') {\n if (manager.isSelected(key) && !manager.disallowEmptySelection) manager.toggleSelection(key);\n else manager.replaceSelection(key);\n } else if (e && e.shiftKey) manager.extendSelection(key);\n else if (manager.selectionBehavior === 'toggle' || e && ((0, $feb5ffebff200149$export$16792effe837dba3)(e) || e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n manager.toggleSelection(key);\n else manager.replaceSelection(key);\n }\n };\n // Focus the associated DOM node when this item becomes the focusedKey\n (0, $581M0$useEffect)(()=>{\n let isFocused = key === manager.focusedKey;\n if (isFocused && manager.isFocused && !shouldUseVirtualFocus) {\n if (focus) focus();\n else if (document.activeElement !== ref.current && ref.current) (0, $581M0$focusSafely)(ref.current);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n ref,\n key,\n manager.focusedKey,\n manager.childFocusStrategy,\n manager.isFocused,\n shouldUseVirtualFocus\n ]);\n isDisabled = isDisabled || manager.isDisabled(key);\n // Set tabIndex to 0 if the element is focused, or -1 otherwise so that only the last focused\n // item is tabbable. If using virtual focus, don't set a tabIndex at all so that VoiceOver\n // on iOS 14 doesn't try to move real DOM focus to the item anyway.\n let itemProps = {};\n if (!shouldUseVirtualFocus && !isDisabled) itemProps = {\n tabIndex: key === manager.focusedKey ? 0 : -1,\n onFocus (e) {\n if (e.target === ref.current) manager.setFocusedKey(key);\n }\n };\n else if (isDisabled) itemProps.onMouseDown = (e)=>{\n // Prevent focus going to the body when clicking on a disabled item.\n e.preventDefault();\n };\n // With checkbox selection, onAction (i.e. navigation) becomes primary, and occurs on a single click of the row.\n // Clicking the checkbox enters selection mode, after which clicking anywhere on any row toggles selection for that row.\n // With highlight selection, onAction is secondary, and occurs on double click. Single click selects the row.\n // With touch, onAction occurs on single tap, and long press enters selection mode.\n let isLinkOverride = manager.isLink(key) && linkBehavior === 'override';\n let hasLinkAction = manager.isLink(key) && linkBehavior !== 'selection' && linkBehavior !== 'none';\n let allowsSelection = !isDisabled && manager.canSelectItem(key) && !isLinkOverride;\n let allowsActions = (onAction || hasLinkAction) && !isDisabled;\n let hasPrimaryAction = allowsActions && (manager.selectionBehavior === 'replace' ? !allowsSelection : !allowsSelection || manager.isEmpty);\n let hasSecondaryAction = allowsActions && allowsSelection && manager.selectionBehavior === 'replace';\n let hasAction = hasPrimaryAction || hasSecondaryAction;\n let modality = (0, $581M0$useRef)(null);\n let longPressEnabled = hasAction && allowsSelection;\n let longPressEnabledOnPressStart = (0, $581M0$useRef)(false);\n let hadPrimaryActionOnPressStart = (0, $581M0$useRef)(false);\n let performAction = (e)=>{\n if (onAction) onAction();\n if (hasLinkAction && ref.current) {\n let itemProps = manager.getItemProps(key);\n router.open(ref.current, e, itemProps.href, itemProps.routerOptions);\n }\n };\n // By default, selection occurs on pointer down. This can be strange if selecting an\n // item causes the UI to disappear immediately (e.g. menus).\n // If shouldSelectOnPressUp is true, we use onPressUp instead of onPressStart.\n // onPress requires a pointer down event on the same element as pointer up. For menus,\n // we want to be able to have the pointer down on the trigger that opens the menu and\n // the pointer up on the menu item rather than requiring a separate press.\n // For keyboard events, selection still occurs on key down.\n let itemPressProps = {};\n if (shouldSelectOnPressUp) {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n if (e.pointerType === 'keyboard' && (!hasAction || $880e95eb8b93ba9a$var$isSelectionKey())) onSelect(e);\n };\n // If allowsDifferentPressOrigin, make selection happen on pressUp (e.g. open menu on press down, selection on menu item happens on press up.)\n // Otherwise, have selection happen onPress (prevents listview row selection when clicking on interactable elements in the row)\n if (!allowsDifferentPressOrigin) itemPressProps.onPress = (e)=>{\n if (hasPrimaryAction || hasSecondaryAction && e.pointerType !== 'mouse') {\n if (e.pointerType === 'keyboard' && !$880e95eb8b93ba9a$var$isActionKey()) return;\n performAction(e);\n } else if (e.pointerType !== 'keyboard' && allowsSelection) onSelect(e);\n };\n else {\n itemPressProps.onPressUp = hasPrimaryAction ? undefined : (e)=>{\n if (e.pointerType !== 'keyboard' && allowsSelection) onSelect(e);\n };\n itemPressProps.onPress = hasPrimaryAction ? performAction : undefined;\n }\n } else {\n itemPressProps.onPressStart = (e)=>{\n modality.current = e.pointerType;\n longPressEnabledOnPressStart.current = longPressEnabled;\n hadPrimaryActionOnPressStart.current = hasPrimaryAction;\n // Select on mouse down unless there is a primary action which will occur on mouse up.\n // For keyboard, select on key down. If there is an action, the Space key selects on key down,\n // and the Enter key performs onAction on key up.\n if (allowsSelection && (e.pointerType === 'mouse' && !hasPrimaryAction || e.pointerType === 'keyboard' && (!allowsActions || $880e95eb8b93ba9a$var$isSelectionKey()))) onSelect(e);\n };\n itemPressProps.onPress = (e)=>{\n // Selection occurs on touch up. Primary actions always occur on pointer up.\n // Both primary and secondary actions occur on Enter key up. The only exception\n // is secondary actions, which occur on double click with a mouse.\n if (e.pointerType === 'touch' || e.pointerType === 'pen' || e.pointerType === 'virtual' || e.pointerType === 'keyboard' && hasAction && $880e95eb8b93ba9a$var$isActionKey() || e.pointerType === 'mouse' && hadPrimaryActionOnPressStart.current) {\n if (hasAction) performAction(e);\n else if (allowsSelection) onSelect(e);\n }\n };\n }\n itemProps['data-key'] = key;\n itemPressProps.preventFocusOnPress = shouldUseVirtualFocus;\n let { pressProps: pressProps, isPressed: isPressed } = (0, $581M0$usePress)(itemPressProps);\n // Double clicking with a mouse with selectionBehavior = 'replace' performs an action.\n let onDoubleClick = hasSecondaryAction ? (e)=>{\n if (modality.current === 'mouse') {\n e.stopPropagation();\n e.preventDefault();\n performAction(e);\n }\n } : undefined;\n // Long pressing an item with touch when selectionBehavior = 'replace' switches the selection behavior\n // to 'toggle'. This changes the single tap behavior from performing an action (i.e. navigating) to\n // selecting, and may toggle the appearance of a UI affordance like checkboxes on each item.\n let { longPressProps: longPressProps } = (0, $581M0$useLongPress)({\n isDisabled: !longPressEnabled,\n onLongPress (e) {\n if (e.pointerType === 'touch') {\n onSelect(e);\n manager.setSelectionBehavior('toggle');\n }\n }\n });\n // Prevent native drag and drop on long press if we also select on long press.\n // Once the user is in selection mode, they can long press again to drag.\n // Use a capturing listener to ensure this runs before useDrag, regardless of\n // the order the props get merged.\n let onDragStartCapture = (e)=>{\n if (modality.current === 'touch' && longPressEnabledOnPressStart.current) e.preventDefault();\n };\n // Prevent default on link clicks so that we control exactly\n // when they open (to match selection behavior).\n let onClick = manager.isLink(key) ? (e)=>{\n if (!(0, $581M0$openLink).isOpening) e.preventDefault();\n } : undefined;\n return {\n itemProps: (0, $581M0$mergeProps)(itemProps, allowsSelection || hasPrimaryAction ? pressProps : {}, longPressEnabled ? longPressProps : {}, {\n onDoubleClick: onDoubleClick,\n onDragStartCapture: onDragStartCapture,\n onClick: onClick\n }),\n isPressed: isPressed,\n isSelected: manager.isSelected(key),\n isFocused: manager.isFocused && manager.focusedKey === key,\n isDisabled: isDisabled,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\nfunction $880e95eb8b93ba9a$var$isActionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === 'Enter';\n}\nfunction $880e95eb8b93ba9a$var$isSelectionKey() {\n let event = window.event;\n return (event === null || event === void 0 ? void 0 : event.key) === ' ' || (event === null || event === void 0 ? void 0 : event.code) === 'Space';\n}\n\n\nexport {$880e95eb8b93ba9a$export$ecf600387e221c37 as useSelectableItem};\n//# sourceMappingURL=useSelectableItem.module.js.map\n","import {getItemId as $b1f0cad8af73213b$export$9145995848b05025, listData as $b1f0cad8af73213b$export$3585ede4d035bf14} from \"./utils.mjs\";\nimport {useSlotId as $fcwmx$useSlotId, isMac as $fcwmx$isMac, isWebKit as $fcwmx$isWebKit, chain as $fcwmx$chain, filterDOMProps as $fcwmx$filterDOMProps, useLinkProps as $fcwmx$useLinkProps, mergeProps as $fcwmx$mergeProps} from \"@react-aria/utils\";\nimport {getItemCount as $fcwmx$getItemCount} from \"@react-stately/collections\";\nimport {useHover as $fcwmx$useHover, isFocusVisible as $fcwmx$isFocusVisible} from \"@react-aria/interactions\";\nimport {useSelectableItem as $fcwmx$useSelectableItem} from \"@react-aria/selection\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $293f70390ea03370$export$497855f14858aa34(props, state, ref) {\n var _item_props, _item_props1;\n let { key: key } = props;\n let data = (0, $b1f0cad8af73213b$export$3585ede4d035bf14).get(state);\n var _props_isDisabled;\n let isDisabled = (_props_isDisabled = props.isDisabled) !== null && _props_isDisabled !== void 0 ? _props_isDisabled : state.selectionManager.isDisabled(key);\n var _props_isSelected;\n let isSelected = (_props_isSelected = props.isSelected) !== null && _props_isSelected !== void 0 ? _props_isSelected : state.selectionManager.isSelected(key);\n var _props_shouldSelectOnPressUp;\n let shouldSelectOnPressUp = (_props_shouldSelectOnPressUp = props.shouldSelectOnPressUp) !== null && _props_shouldSelectOnPressUp !== void 0 ? _props_shouldSelectOnPressUp : data === null || data === void 0 ? void 0 : data.shouldSelectOnPressUp;\n var _props_shouldFocusOnHover;\n let shouldFocusOnHover = (_props_shouldFocusOnHover = props.shouldFocusOnHover) !== null && _props_shouldFocusOnHover !== void 0 ? _props_shouldFocusOnHover : data === null || data === void 0 ? void 0 : data.shouldFocusOnHover;\n var _props_shouldUseVirtualFocus;\n let shouldUseVirtualFocus = (_props_shouldUseVirtualFocus = props.shouldUseVirtualFocus) !== null && _props_shouldUseVirtualFocus !== void 0 ? _props_shouldUseVirtualFocus : data === null || data === void 0 ? void 0 : data.shouldUseVirtualFocus;\n var _props_isVirtualized;\n let isVirtualized = (_props_isVirtualized = props.isVirtualized) !== null && _props_isVirtualized !== void 0 ? _props_isVirtualized : data === null || data === void 0 ? void 0 : data.isVirtualized;\n let labelId = (0, $fcwmx$useSlotId)();\n let descriptionId = (0, $fcwmx$useSlotId)();\n let optionProps = {\n role: 'option',\n 'aria-disabled': isDisabled || undefined,\n 'aria-selected': state.selectionManager.selectionMode !== 'none' ? isSelected : undefined\n };\n // Safari with VoiceOver on macOS misreads options with aria-labelledby or aria-label as simply \"text\".\n // We should not map slots to the label and description on Safari and instead just have VoiceOver read the textContent.\n // https://bugs.webkit.org/show_bug.cgi?id=209279\n if (!((0, $fcwmx$isMac)() && (0, $fcwmx$isWebKit)())) {\n optionProps['aria-label'] = props['aria-label'];\n optionProps['aria-labelledby'] = labelId;\n optionProps['aria-describedby'] = descriptionId;\n }\n let item = state.collection.getItem(key);\n if (isVirtualized) {\n let index = Number(item === null || item === void 0 ? void 0 : item.index);\n optionProps['aria-posinset'] = Number.isNaN(index) ? undefined : index + 1;\n optionProps['aria-setsize'] = (0, $fcwmx$getItemCount)(state.collection);\n }\n let onAction = (data === null || data === void 0 ? void 0 : data.onAction) ? ()=>{\n var _data_onAction;\n return data === null || data === void 0 ? void 0 : (_data_onAction = data.onAction) === null || _data_onAction === void 0 ? void 0 : _data_onAction.call(data, key);\n } : undefined;\n let { itemProps: itemProps, isPressed: isPressed, isFocused: isFocused, hasAction: hasAction, allowsSelection: allowsSelection } = (0, $fcwmx$useSelectableItem)({\n selectionManager: state.selectionManager,\n key: key,\n ref: ref,\n shouldSelectOnPressUp: shouldSelectOnPressUp,\n allowsDifferentPressOrigin: shouldSelectOnPressUp && shouldFocusOnHover,\n isVirtualized: isVirtualized,\n shouldUseVirtualFocus: shouldUseVirtualFocus,\n isDisabled: isDisabled,\n onAction: onAction || (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.onAction) ? (0, $fcwmx$chain)(item === null || item === void 0 ? void 0 : (_item_props1 = item.props) === null || _item_props1 === void 0 ? void 0 : _item_props1.onAction, onAction) : undefined,\n linkBehavior: data === null || data === void 0 ? void 0 : data.linkBehavior\n });\n let { hoverProps: hoverProps } = (0, $fcwmx$useHover)({\n isDisabled: isDisabled || !shouldFocusOnHover,\n onHoverStart () {\n if (!(0, $fcwmx$isFocusVisible)()) {\n state.selectionManager.setFocused(true);\n state.selectionManager.setFocusedKey(key);\n }\n }\n });\n let domProps = (0, $fcwmx$filterDOMProps)(item === null || item === void 0 ? void 0 : item.props);\n delete domProps.id;\n let linkProps = (0, $fcwmx$useLinkProps)(item === null || item === void 0 ? void 0 : item.props);\n return {\n optionProps: {\n ...optionProps,\n ...(0, $fcwmx$mergeProps)(domProps, itemProps, hoverProps, linkProps),\n id: (0, $b1f0cad8af73213b$export$9145995848b05025)(state, key)\n },\n labelProps: {\n id: labelId\n },\n descriptionProps: {\n id: descriptionId\n },\n isFocused: isFocused,\n isFocusVisible: isFocused && (0, $fcwmx$isFocusVisible)(),\n isSelected: isSelected,\n isDisabled: isDisabled,\n isPressed: isPressed,\n allowsSelection: allowsSelection,\n hasAction: hasAction\n };\n}\n\n\nexport {$293f70390ea03370$export$497855f14858aa34 as useOption};\n//# sourceMappingURL=useOption.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ const $b1f0cad8af73213b$export$3585ede4d035bf14 = new WeakMap();\nfunction $b1f0cad8af73213b$var$normalizeKey(key) {\n if (typeof key === 'string') return key.replace(/\\s*/g, '');\n return '' + key;\n}\nfunction $b1f0cad8af73213b$export$9145995848b05025(state, itemKey) {\n let data = $b1f0cad8af73213b$export$3585ede4d035bf14.get(state);\n if (!data) throw new Error('Unknown list');\n return `${data.id}-option-${$b1f0cad8af73213b$var$normalizeKey(itemKey)}`;\n}\n\n\nexport {$b1f0cad8af73213b$export$3585ede4d035bf14 as listData, $b1f0cad8af73213b$export$9145995848b05025 as getItemId};\n//# sourceMappingURL=utils.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /* Inspired by https://github.com/AlmeroSteyn/react-aria-live */ const $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY = 7000;\nlet $319e236875307eab$var$liveAnnouncer = null;\nfunction $319e236875307eab$export$a9b970dcc4ae71a9(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) {\n if (!$319e236875307eab$var$liveAnnouncer) {\n $319e236875307eab$var$liveAnnouncer = new $319e236875307eab$var$LiveAnnouncer();\n // wait for the live announcer regions to be added to the dom, then announce\n // otherwise Safari won't announce the message if it's added too quickly\n // found most times less than 100ms were not consistent when announcing with Safari\n // IS_REACT_ACT_ENVIRONMENT is used by React 18. Previous versions checked for the `jest` global.\n // https://github.com/reactwg/react-18/discussions/102\n // if we're in a test environment, announce without waiting\n // @ts-ignore\n if (!(typeof IS_REACT_ACT_ENVIRONMENT === 'boolean' ? IS_REACT_ACT_ENVIRONMENT : typeof jest !== 'undefined')) setTimeout(()=>{\n if ($319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.isAttached()) $319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);\n }, 100);\n else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);\n } else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);\n}\nfunction $319e236875307eab$export$d10ae4f68404609a(assertiveness) {\n if ($319e236875307eab$var$liveAnnouncer) $319e236875307eab$var$liveAnnouncer.clear(assertiveness);\n}\nfunction $319e236875307eab$export$d8686216b8b81b2f() {\n if ($319e236875307eab$var$liveAnnouncer) {\n $319e236875307eab$var$liveAnnouncer.destroy();\n $319e236875307eab$var$liveAnnouncer = null;\n }\n}\n// LiveAnnouncer is implemented using vanilla DOM, not React. That's because as of React 18\n// ReactDOM.render is deprecated, and the replacement, ReactDOM.createRoot is moved into a\n// subpath import `react-dom/client`. That makes it hard for us to support multiple React versions.\n// As a global API, we can't use portals without introducing a breaking API change. LiveAnnouncer\n// is simple enough to implement without React, so that's what we do here.\n// See this discussion for more details: https://github.com/reactwg/react-18/discussions/125#discussioncomment-2382638\nclass $319e236875307eab$var$LiveAnnouncer {\n isAttached() {\n var _this_node;\n return (_this_node = this.node) === null || _this_node === void 0 ? void 0 : _this_node.isConnected;\n }\n createLog(ariaLive) {\n let node = document.createElement('div');\n node.setAttribute('role', 'log');\n node.setAttribute('aria-live', ariaLive);\n node.setAttribute('aria-relevant', 'additions');\n return node;\n }\n destroy() {\n if (!this.node) return;\n document.body.removeChild(this.node);\n this.node = null;\n }\n announce(message, assertiveness = 'assertive', timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) {\n var _this_assertiveLog, _this_politeLog;\n if (!this.node) return;\n let node = document.createElement('div');\n if (typeof message === 'object') {\n // To read an aria-labelledby, the element must have an appropriate role, such as img.\n node.setAttribute('role', 'img');\n node.setAttribute('aria-labelledby', message['aria-labelledby']);\n } else node.textContent = message;\n if (assertiveness === 'assertive') (_this_assertiveLog = this.assertiveLog) === null || _this_assertiveLog === void 0 ? void 0 : _this_assertiveLog.appendChild(node);\n else (_this_politeLog = this.politeLog) === null || _this_politeLog === void 0 ? void 0 : _this_politeLog.appendChild(node);\n if (message !== '') setTimeout(()=>{\n node.remove();\n }, timeout);\n }\n clear(assertiveness) {\n if (!this.node) return;\n if ((!assertiveness || assertiveness === 'assertive') && this.assertiveLog) this.assertiveLog.innerHTML = '';\n if ((!assertiveness || assertiveness === 'polite') && this.politeLog) this.politeLog.innerHTML = '';\n }\n constructor(){\n this.node = null;\n this.assertiveLog = null;\n this.politeLog = null;\n if (typeof document !== 'undefined') {\n this.node = document.createElement('div');\n this.node.dataset.liveAnnouncer = 'true';\n // copied from VisuallyHidden\n Object.assign(this.node.style, {\n border: 0,\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n width: '1px',\n whiteSpace: 'nowrap'\n });\n this.assertiveLog = this.createLog('assertive');\n this.node.appendChild(this.assertiveLog);\n this.politeLog = this.createLog('polite');\n this.node.appendChild(this.politeLog);\n document.body.prepend(this.node);\n }\n }\n}\n\n\nexport {$319e236875307eab$export$a9b970dcc4ae71a9 as announce, $319e236875307eab$export$d10ae4f68404609a as clearAnnouncer, $319e236875307eab$export$d8686216b8b81b2f as destroyAnnouncer};\n//# sourceMappingURL=LiveAnnouncer.module.js.map\n","var $c0398ad35c3639b7$exports = {};\n$c0398ad35c3639b7$exports = {\n \"longPressMessage\": `\\u{627}\\u{636}\\u{63A}\\u{637} \\u{645}\\u{637}\\u{648}\\u{644}\\u{627}\\u{64B} \\u{623}\\u{648} \\u{627}\\u{636}\\u{63A}\\u{637} \\u{639}\\u{644}\\u{649} Alt + \\u{627}\\u{644}\\u{633}\\u{647}\\u{645} \\u{644}\\u{623}\\u{633}\\u{641}\\u{644} \\u{644}\\u{641}\\u{62A}\\u{62D} \\u{627}\\u{644}\\u{642}\\u{627}\\u{626}\\u{645}\\u{629}`\n};\n\n\nexport {$c0398ad35c3639b7$exports as default};\n//# sourceMappingURL=ar-AE.module.js.map\n","import $5FSX7$arAEmodulejs from \"./ar-AE.mjs\";\nimport $5FSX7$bgBGmodulejs from \"./bg-BG.mjs\";\nimport $5FSX7$csCZmodulejs from \"./cs-CZ.mjs\";\nimport $5FSX7$daDKmodulejs from \"./da-DK.mjs\";\nimport $5FSX7$deDEmodulejs from \"./de-DE.mjs\";\nimport $5FSX7$elGRmodulejs from \"./el-GR.mjs\";\nimport $5FSX7$enUSmodulejs from \"./en-US.mjs\";\nimport $5FSX7$esESmodulejs from \"./es-ES.mjs\";\nimport $5FSX7$etEEmodulejs from \"./et-EE.mjs\";\nimport $5FSX7$fiFImodulejs from \"./fi-FI.mjs\";\nimport $5FSX7$frFRmodulejs from \"./fr-FR.mjs\";\nimport $5FSX7$heILmodulejs from \"./he-IL.mjs\";\nimport $5FSX7$hrHRmodulejs from \"./hr-HR.mjs\";\nimport $5FSX7$huHUmodulejs from \"./hu-HU.mjs\";\nimport $5FSX7$itITmodulejs from \"./it-IT.mjs\";\nimport $5FSX7$jaJPmodulejs from \"./ja-JP.mjs\";\nimport $5FSX7$koKRmodulejs from \"./ko-KR.mjs\";\nimport $5FSX7$ltLTmodulejs from \"./lt-LT.mjs\";\nimport $5FSX7$lvLVmodulejs from \"./lv-LV.mjs\";\nimport $5FSX7$nbNOmodulejs from \"./nb-NO.mjs\";\nimport $5FSX7$nlNLmodulejs from \"./nl-NL.mjs\";\nimport $5FSX7$plPLmodulejs from \"./pl-PL.mjs\";\nimport $5FSX7$ptBRmodulejs from \"./pt-BR.mjs\";\nimport $5FSX7$ptPTmodulejs from \"./pt-PT.mjs\";\nimport $5FSX7$roROmodulejs from \"./ro-RO.mjs\";\nimport $5FSX7$ruRUmodulejs from \"./ru-RU.mjs\";\nimport $5FSX7$skSKmodulejs from \"./sk-SK.mjs\";\nimport $5FSX7$slSImodulejs from \"./sl-SI.mjs\";\nimport $5FSX7$srSPmodulejs from \"./sr-SP.mjs\";\nimport $5FSX7$svSEmodulejs from \"./sv-SE.mjs\";\nimport $5FSX7$trTRmodulejs from \"./tr-TR.mjs\";\nimport $5FSX7$ukUAmodulejs from \"./uk-UA.mjs\";\nimport $5FSX7$zhCNmodulejs from \"./zh-CN.mjs\";\nimport $5FSX7$zhTWmodulejs from \"./zh-TW.mjs\";\n\nvar $2cbb7ca666678a14$exports = {};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$2cbb7ca666678a14$exports = {\n \"ar-AE\": $5FSX7$arAEmodulejs,\n \"bg-BG\": $5FSX7$bgBGmodulejs,\n \"cs-CZ\": $5FSX7$csCZmodulejs,\n \"da-DK\": $5FSX7$daDKmodulejs,\n \"de-DE\": $5FSX7$deDEmodulejs,\n \"el-GR\": $5FSX7$elGRmodulejs,\n \"en-US\": $5FSX7$enUSmodulejs,\n \"es-ES\": $5FSX7$esESmodulejs,\n \"et-EE\": $5FSX7$etEEmodulejs,\n \"fi-FI\": $5FSX7$fiFImodulejs,\n \"fr-FR\": $5FSX7$frFRmodulejs,\n \"he-IL\": $5FSX7$heILmodulejs,\n \"hr-HR\": $5FSX7$hrHRmodulejs,\n \"hu-HU\": $5FSX7$huHUmodulejs,\n \"it-IT\": $5FSX7$itITmodulejs,\n \"ja-JP\": $5FSX7$jaJPmodulejs,\n \"ko-KR\": $5FSX7$koKRmodulejs,\n \"lt-LT\": $5FSX7$ltLTmodulejs,\n \"lv-LV\": $5FSX7$lvLVmodulejs,\n \"nb-NO\": $5FSX7$nbNOmodulejs,\n \"nl-NL\": $5FSX7$nlNLmodulejs,\n \"pl-PL\": $5FSX7$plPLmodulejs,\n \"pt-BR\": $5FSX7$ptBRmodulejs,\n \"pt-PT\": $5FSX7$ptPTmodulejs,\n \"ro-RO\": $5FSX7$roROmodulejs,\n \"ru-RU\": $5FSX7$ruRUmodulejs,\n \"sk-SK\": $5FSX7$skSKmodulejs,\n \"sl-SI\": $5FSX7$slSImodulejs,\n \"sr-SP\": $5FSX7$srSPmodulejs,\n \"sv-SE\": $5FSX7$svSEmodulejs,\n \"tr-TR\": $5FSX7$trTRmodulejs,\n \"uk-UA\": $5FSX7$ukUAmodulejs,\n \"zh-CN\": $5FSX7$zhCNmodulejs,\n \"zh-TW\": $5FSX7$zhTWmodulejs\n};\n\n\nexport {$2cbb7ca666678a14$exports as default};\n//# sourceMappingURL=intlStrings.module.js.map\n","var $7af657c4165927c3$exports = {};\n$7af657c4165927c3$exports = {\n \"longPressMessage\": `\\u{41D}\\u{430}\\u{442}\\u{438}\\u{441}\\u{43D}\\u{435}\\u{442}\\u{435} \\u{43F}\\u{440}\\u{43E}\\u{434}\\u{44A}\\u{43B}\\u{436}\\u{438}\\u{442}\\u{435}\\u{43B}\\u{43D}\\u{43E} \\u{438}\\u{43B}\\u{438} \\u{43D}\\u{430}\\u{442}\\u{438}\\u{441}\\u{43D}\\u{435}\\u{442}\\u{435} Alt+ \\u{441}\\u{442}\\u{440}\\u{435}\\u{43B}\\u{43A}\\u{430} \\u{43D}\\u{430}\\u{434}\\u{43E}\\u{43B}\\u{443}, \\u{437}\\u{430} \\u{434}\\u{430} \\u{43E}\\u{442}\\u{432}\\u{43E}\\u{440}\\u{438}\\u{442}\\u{435} \\u{43C}\\u{435}\\u{43D}\\u{44E}\\u{442}\\u{43E}`\n};\n\n\nexport {$7af657c4165927c3$exports as default};\n//# sourceMappingURL=bg-BG.module.js.map\n","var $d95d4da6d531ab81$exports = {};\n$d95d4da6d531ab81$exports = {\n \"longPressMessage\": `Dlouh\\xfdm stiskem nebo stisknut\\xedm kl\\xe1ves Alt + \\u{161}ipka dol\\u{16F} otev\\u{159}ete nab\\xeddku`\n};\n\n\nexport {$d95d4da6d531ab81$exports as default};\n//# sourceMappingURL=cs-CZ.module.js.map\n","var $24ebda9c775dca17$exports = {};\n$24ebda9c775dca17$exports = {\n \"longPressMessage\": `Langt tryk eller tryk p\\xe5 Alt + pil ned for at \\xe5bne menuen`\n};\n\n\nexport {$24ebda9c775dca17$exports as default};\n//# sourceMappingURL=da-DK.module.js.map\n","var $743e0dfca6cab1e9$exports = {};\n$743e0dfca6cab1e9$exports = {\n \"longPressMessage\": `Dr\\xfccken Sie lange oder dr\\xfccken Sie Alt + Nach-unten, um das Men\\xfc zu \\xf6ffnen`\n};\n\n\nexport {$743e0dfca6cab1e9$exports as default};\n//# sourceMappingURL=de-DE.module.js.map\n","var $a2f41026e05f1c84$exports = {};\n$a2f41026e05f1c84$exports = {\n \"longPressMessage\": `\\u{3A0}\\u{3B9}\\u{3AD}\\u{3C3}\\u{3C4}\\u{3B5} \\u{3C0}\\u{3B1}\\u{3C1}\\u{3B1}\\u{3C4}\\u{3B5}\\u{3C4}\\u{3B1}\\u{3BC}\\u{3AD}\\u{3BD}\\u{3B1} \\u{3AE} \\u{3C0}\\u{3B1}\\u{3C4}\\u{3AE}\\u{3C3}\\u{3C4}\\u{3B5} Alt + \\u{3BA}\\u{3AC}\\u{3C4}\\u{3C9} \\u{3B2}\\u{3AD}\\u{3BB}\\u{3BF}\\u{3C2} \\u{3B3}\\u{3B9}\\u{3B1} \\u{3BD}\\u{3B1} \\u{3B1}\\u{3BD}\\u{3BF}\\u{3AF}\\u{3BE}\\u{3B5}\\u{3C4}\\u{3B5} \\u{3C4}\\u{3BF} \\u{3BC}\\u{3B5}\\u{3BD}\\u{3BF}\\u{3CD}`\n};\n\n\nexport {$a2f41026e05f1c84$exports as default};\n//# sourceMappingURL=el-GR.module.js.map\n","var $43b800e97c901737$exports = {};\n$43b800e97c901737$exports = {\n \"longPressMessage\": `Long press or press Alt + ArrowDown to open menu`\n};\n\n\nexport {$43b800e97c901737$exports as default};\n//# sourceMappingURL=en-US.module.js.map\n","var $442f5f6ac211e29f$exports = {};\n$442f5f6ac211e29f$exports = {\n \"longPressMessage\": `Mantenga pulsado o pulse Alt + flecha abajo para abrir el men\\xfa`\n};\n\n\nexport {$442f5f6ac211e29f$exports as default};\n//# sourceMappingURL=es-ES.module.js.map\n","var $dff280acfeb2d8ac$exports = {};\n$dff280acfeb2d8ac$exports = {\n \"longPressMessage\": `Men\\xfc\\xfc avamiseks vajutage pikalt v\\xf5i vajutage klahve Alt + allanool`\n};\n\n\nexport {$dff280acfeb2d8ac$exports as default};\n//# sourceMappingURL=et-EE.module.js.map\n","var $51608325613944d7$exports = {};\n$51608325613944d7$exports = {\n \"longPressMessage\": `Avaa valikko painamalla pohjassa tai n\\xe4pp\\xe4inyhdistelm\\xe4ll\\xe4 Alt + Alanuoli`\n};\n\n\nexport {$51608325613944d7$exports as default};\n//# sourceMappingURL=fi-FI.module.js.map\n","var $c4a1b1eabeaa87be$exports = {};\n$c4a1b1eabeaa87be$exports = {\n \"longPressMessage\": `Appuyez de mani\\xe8re prolong\\xe9e ou appuyez sur Alt\\xa0+\\xa0Fl\\xe8che vers le bas pour ouvrir le menu.`\n};\n\n\nexport {$c4a1b1eabeaa87be$exports as default};\n//# sourceMappingURL=fr-FR.module.js.map\n","var $8c74815cdee18d1b$exports = {};\n$8c74815cdee18d1b$exports = {\n \"longPressMessage\": `\\u{5DC}\\u{5D7}\\u{5E5} \\u{5DC}\\u{5D7}\\u{5D9}\\u{5E6}\\u{5D4} \\u{5D0}\\u{5E8}\\u{5D5}\\u{5DB}\\u{5D4} \\u{5D0}\\u{5D5} \\u{5D4}\\u{5E7}\\u{5E9} Alt + ArrowDown \\u{5DB}\\u{5D3}\\u{5D9} \\u{5DC}\\u{5E4}\\u{5EA}\\u{5D5}\\u{5D7} \\u{5D0}\\u{5EA} \\u{5D4}\\u{5EA}\\u{5E4}\\u{5E8}\\u{5D9}\\u{5D8}`\n};\n\n\nexport {$8c74815cdee18d1b$exports as default};\n//# sourceMappingURL=he-IL.module.js.map\n","var $fd0e9ef6a7fe0ec9$exports = {};\n$fd0e9ef6a7fe0ec9$exports = {\n \"longPressMessage\": `Dugo pritisnite ili pritisnite Alt + strelicu prema dolje za otvaranje izbornika`\n};\n\n\nexport {$fd0e9ef6a7fe0ec9$exports as default};\n//# sourceMappingURL=hr-HR.module.js.map\n","var $a89a74a39eba465a$exports = {};\n$a89a74a39eba465a$exports = {\n \"longPressMessage\": `Nyomja meg hosszan, vagy nyomja meg az Alt + lefele ny\\xedl gombot a men\\xfc megnyit\\xe1s\\xe1hoz`\n};\n\n\nexport {$a89a74a39eba465a$exports as default};\n//# sourceMappingURL=hu-HU.module.js.map\n","var $edc7c66594a0ae8a$exports = {};\n$edc7c66594a0ae8a$exports = {\n \"longPressMessage\": `Premere a lungo o premere Alt + Freccia gi\\xf9 per aprire il menu`\n};\n\n\nexport {$edc7c66594a0ae8a$exports as default};\n//# sourceMappingURL=it-IT.module.js.map\n","var $f1ab51510712db52$exports = {};\n$f1ab51510712db52$exports = {\n \"longPressMessage\": `\\u{9577}\\u{62BC}\\u{3057}\\u{307E}\\u{305F}\\u{306F} Alt+\\u{4E0B}\\u{77E2}\\u{5370}\\u{30AD}\\u{30FC}\\u{3067}\\u{30E1}\\u{30CB}\\u{30E5}\\u{30FC}\\u{3092}\\u{958B}\\u{304F}`\n};\n\n\nexport {$f1ab51510712db52$exports as default};\n//# sourceMappingURL=ja-JP.module.js.map\n","var $f9b672d9b82fa3d6$exports = {};\n$f9b672d9b82fa3d6$exports = {\n \"longPressMessage\": `\\u{AE38}\\u{AC8C} \\u{B204}\\u{B974}\\u{AC70}\\u{B098} Alt + \\u{C544}\\u{B798}\\u{CABD} \\u{D654}\\u{C0B4}\\u{D45C}\\u{B97C} \\u{B20C}\\u{B7EC} \\u{BA54}\\u{B274} \\u{C5F4}\\u{AE30}`\n};\n\n\nexport {$f9b672d9b82fa3d6$exports as default};\n//# sourceMappingURL=ko-KR.module.js.map\n","var $a385f3910feda499$exports = {};\n$a385f3910feda499$exports = {\n \"longPressMessage\": `Nor\\u{117}dami atidaryti meniu, nuspaud\\u{119} palaikykite arba paspauskite \\u{201E}Alt + ArrowDown\\u{201C}.`\n};\n\n\nexport {$a385f3910feda499$exports as default};\n//# sourceMappingURL=lt-LT.module.js.map\n","var $4f1bde932c441789$exports = {};\n$4f1bde932c441789$exports = {\n \"longPressMessage\": `Lai atv\\u{113}rtu izv\\u{113}lni, turiet nospiestu vai nospiediet tausti\\u{146}u kombin\\u{101}ciju Alt + lejupv\\u{113}rst\\u{101} bulti\\u{146}a`\n};\n\n\nexport {$4f1bde932c441789$exports as default};\n//# sourceMappingURL=lv-LV.module.js.map\n","var $914a51a8a594d5be$exports = {};\n$914a51a8a594d5be$exports = {\n \"longPressMessage\": `Langt trykk eller trykk Alt + PilNed for \\xe5 \\xe5pne menyen`\n};\n\n\nexport {$914a51a8a594d5be$exports as default};\n//# sourceMappingURL=nb-NO.module.js.map\n","var $89aaf803103bb500$exports = {};\n$89aaf803103bb500$exports = {\n \"longPressMessage\": `Druk lang op Alt + pijl-omlaag of druk op Alt om het menu te openen`\n};\n\n\nexport {$89aaf803103bb500$exports as default};\n//# sourceMappingURL=nl-NL.module.js.map\n","var $c685891476dbaaca$exports = {};\n$c685891476dbaaca$exports = {\n \"longPressMessage\": `Naci\\u{15B}nij i przytrzymaj lub naci\\u{15B}nij klawisze Alt + Strza\\u{142}ka w d\\xf3\\u{142}, aby otworzy\\u{107} menu`\n};\n\n\nexport {$c685891476dbaaca$exports as default};\n//# sourceMappingURL=pl-PL.module.js.map\n","var $885879b9b10c2959$exports = {};\n$885879b9b10c2959$exports = {\n \"longPressMessage\": `Pressione e segure ou pressione Alt + Seta para baixo para abrir o menu`\n};\n\n\nexport {$885879b9b10c2959$exports as default};\n//# sourceMappingURL=pt-BR.module.js.map\n","var $6b39616688a51692$exports = {};\n$6b39616688a51692$exports = {\n \"longPressMessage\": `Prima continuamente ou prima Alt + Seta Para Baixo para abrir o menu`\n};\n\n\nexport {$6b39616688a51692$exports as default};\n//# sourceMappingURL=pt-PT.module.js.map\n","var $f26362aed63f47e2$exports = {};\n$f26362aed63f47e2$exports = {\n \"longPressMessage\": `Ap\\u{103}sa\\u{21B}i lung sau ap\\u{103}sa\\u{21B}i pe Alt + s\\u{103}geat\\u{103} \\xeen jos pentru a deschide meniul`\n};\n\n\nexport {$f26362aed63f47e2$exports as default};\n//# sourceMappingURL=ro-RO.module.js.map\n","var $06cbade644558bf0$exports = {};\n$06cbade644558bf0$exports = {\n \"longPressMessage\": `\\u{41D}\\u{430}\\u{436}\\u{43C}\\u{438}\\u{442}\\u{435} \\u{438} \\u{443}\\u{434}\\u{435}\\u{440}\\u{436}\\u{438}\\u{432}\\u{430}\\u{439}\\u{442}\\u{435} \\u{438}\\u{43B}\\u{438} \\u{43D}\\u{430}\\u{436}\\u{43C}\\u{438}\\u{442}\\u{435} Alt + \\u{421}\\u{442}\\u{440}\\u{435}\\u{43B}\\u{43A}\\u{430} \\u{432}\\u{43D}\\u{438}\\u{437}, \\u{447}\\u{442}\\u{43E}\\u{431}\\u{44B} \\u{43E}\\u{442}\\u{43A}\\u{440}\\u{44B}\\u{442}\\u{44C} \\u{43C}\\u{435}\\u{43D}\\u{44E}`\n};\n\n\nexport {$06cbade644558bf0$exports as default};\n//# sourceMappingURL=ru-RU.module.js.map\n","var $0a391ff68f9d59b1$exports = {};\n$0a391ff68f9d59b1$exports = {\n \"longPressMessage\": `Ponuku otvor\\xedte dlh\\xfdm stla\\u{10D}en\\xedm alebo stla\\u{10D}en\\xedm kl\\xe1vesu Alt + kl\\xe1vesu so \\u{161}\\xedpkou nadol`\n};\n\n\nexport {$0a391ff68f9d59b1$exports as default};\n//# sourceMappingURL=sk-SK.module.js.map\n","var $8193cf0e649c7928$exports = {};\n$8193cf0e649c7928$exports = {\n \"longPressMessage\": `Za odprtje menija pritisnite in dr\\u{17E}ite gumb ali pritisnite Alt+pu\\u{161}\\u{10D}ica navzdol`\n};\n\n\nexport {$8193cf0e649c7928$exports as default};\n//# sourceMappingURL=sl-SI.module.js.map\n","var $f398debcce5a5c55$exports = {};\n$f398debcce5a5c55$exports = {\n \"longPressMessage\": `Dugo pritisnite ili pritisnite Alt + strelicu prema dole da otvorite meni`\n};\n\n\nexport {$f398debcce5a5c55$exports as default};\n//# sourceMappingURL=sr-SP.module.js.map\n","var $9e9fef000aa4c013$exports = {};\n$9e9fef000aa4c013$exports = {\n \"longPressMessage\": `H\\xe5ll nedtryckt eller tryck p\\xe5 Alt + pil ned\\xe5t f\\xf6r att \\xf6ppna menyn`\n};\n\n\nexport {$9e9fef000aa4c013$exports as default};\n//# sourceMappingURL=sv-SE.module.js.map\n","var $c016c8183bbe3d68$exports = {};\n$c016c8183bbe3d68$exports = {\n \"longPressMessage\": `Men\\xfcy\\xfc a\\xe7mak i\\xe7in uzun bas\\u{131}n veya Alt + A\\u{15F}a\\u{11F}\\u{131} Ok tu\\u{15F}una bas\\u{131}n`\n};\n\n\nexport {$c016c8183bbe3d68$exports as default};\n//# sourceMappingURL=tr-TR.module.js.map\n","var $ca4f6c8462244e62$exports = {};\n$ca4f6c8462244e62$exports = {\n \"longPressMessage\": `\\u{414}\\u{43E}\\u{432}\\u{433}\\u{43E} \\u{430}\\u{431}\\u{43E} \\u{437}\\u{432}\\u{438}\\u{447}\\u{430}\\u{439}\\u{43D}\\u{43E} \\u{43D}\\u{430}\\u{442}\\u{438}\\u{441}\\u{43D}\\u{456}\\u{442}\\u{44C} \\u{43A}\\u{43E}\\u{43C}\\u{431}\\u{456}\\u{43D}\\u{430}\\u{446}\\u{456}\\u{44E} \\u{43A}\\u{43B}\\u{430}\\u{432}\\u{456}\\u{448} Alt \\u{456} \\u{441}\\u{442}\\u{440}\\u{456}\\u{43B}\\u{43A}\\u{430} \\u{432}\\u{43D}\\u{438}\\u{437}, \\u{449}\\u{43E}\\u{431} \\u{432}\\u{456}\\u{434}\\u{43A}\\u{440}\\u{438}\\u{442}\\u{438} \\u{43C}\\u{435}\\u{43D}\\u{44E}`\n};\n\n\nexport {$ca4f6c8462244e62$exports as default};\n//# sourceMappingURL=uk-UA.module.js.map\n","var $2d9960c02ccac927$exports = {};\n$2d9960c02ccac927$exports = {\n \"longPressMessage\": `\\u{957F}\\u{6309}\\u{6216}\\u{6309} Alt + \\u{5411}\\u{4E0B}\\u{65B9}\\u{5411}\\u{952E}\\u{4EE5}\\u{6253}\\u{5F00}\\u{83DC}\\u{5355}`\n};\n\n\nexport {$2d9960c02ccac927$exports as default};\n//# sourceMappingURL=zh-CN.module.js.map\n","var $f1b682a4c8c5631c$exports = {};\n$f1b682a4c8c5631c$exports = {\n \"longPressMessage\": `\\u{9577}\\u{6309}\\u{6216}\\u{6309} Alt+\\u{5411}\\u{4E0B}\\u{9375}\\u{4EE5}\\u{958B}\\u{555F}\\u{529F}\\u{80FD}\\u{8868}`\n};\n\n\nexport {$f1b682a4c8c5631c$exports as default};\n//# sourceMappingURL=zh-TW.module.js.map\n","import $czs6v$intlStringsmodulejs from \"./intlStrings.mjs\";\nimport {useId as $czs6v$useId} from \"@react-aria/utils\";\nimport {useLocalizedStringFormatter as $czs6v$useLocalizedStringFormatter} from \"@react-aria/i18n\";\nimport {useLongPress as $czs6v$useLongPress} from \"@react-aria/interactions\";\nimport {useOverlayTrigger as $czs6v$useOverlayTrigger} from \"@react-aria/overlays\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $168583247155ddda$export$dc9c12ed27dd1b49(props, state, ref) {\n let { type: type = 'menu', isDisabled: isDisabled, trigger: trigger = 'press' } = props;\n let menuTriggerId = (0, $czs6v$useId)();\n let { triggerProps: triggerProps, overlayProps: overlayProps } = (0, $czs6v$useOverlayTrigger)({\n type: type\n }, state, ref);\n let onKeyDown = (e)=>{\n if (isDisabled) return;\n if (trigger === 'longPress' && !e.altKey) return;\n if (ref && ref.current) switch(e.key){\n case 'Enter':\n case ' ':\n if (trigger === 'longPress') return;\n // fallthrough\n case 'ArrowDown':\n // Stop propagation, unless it would already be handled by useKeyboard.\n if (!('continuePropagation' in e)) e.stopPropagation();\n e.preventDefault();\n state.toggle('first');\n break;\n case 'ArrowUp':\n if (!('continuePropagation' in e)) e.stopPropagation();\n e.preventDefault();\n state.toggle('last');\n break;\n default:\n // Allow other keys.\n if ('continuePropagation' in e) e.continuePropagation();\n }\n };\n let stringFormatter = (0, $czs6v$useLocalizedStringFormatter)((0, ($parcel$interopDefault($czs6v$intlStringsmodulejs))), '@react-aria/menu');\n let { longPressProps: longPressProps } = (0, $czs6v$useLongPress)({\n isDisabled: isDisabled || trigger !== 'longPress',\n accessibilityDescription: stringFormatter.format('longPressMessage'),\n onLongPressStart () {\n state.close();\n },\n onLongPress () {\n state.open('first');\n }\n });\n let pressProps = {\n onPressStart (e) {\n // For consistency with native, open the menu on mouse/key down, but touch up.\n if (e.pointerType !== 'touch' && e.pointerType !== 'keyboard' && !isDisabled) // If opened with a screen reader, auto focus the first item.\n // Otherwise, the menu itself will be focused.\n state.open(e.pointerType === 'virtual' ? 'first' : null);\n },\n onPress (e) {\n if (e.pointerType === 'touch' && !isDisabled) state.toggle();\n }\n };\n // omit onPress from triggerProps since we override it above.\n delete triggerProps.onPress;\n return {\n // @ts-ignore - TODO we pass out both DOMAttributes AND AriaButtonProps, but useButton will discard the longPress event handlers, it's only through PressResponder magic that this works for RSP and RAC. it does not work in aria examples\n menuTriggerProps: {\n ...triggerProps,\n ...trigger === 'press' ? pressProps : longPressProps,\n id: menuTriggerId,\n onKeyDown: onKeyDown\n },\n menuProps: {\n ...overlayProps,\n 'aria-labelledby': menuTriggerId,\n autoFocus: state.focusStrategy || true,\n onClose: state.close\n }\n };\n}\n\n\nexport {$168583247155ddda$export$dc9c12ed27dd1b49 as useMenuTrigger};\n//# sourceMappingURL=useMenuTrigger.module.js.map\n","import $7yuSY$react, {createContext as $7yuSY$createContext, useContext as $7yuSY$useContext} from \"react\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $96b38030c423d352$export$60d741e20e0aa309 = /*#__PURE__*/ (0, $7yuSY$createContext)({});\nfunction $96b38030c423d352$export$db995ea7163b4b67(props) {\n let { getContainer: getContainer } = props;\n let { getContainer: ctxGetContainer } = $96b38030c423d352$export$574e9b0fb070c3b0();\n return /*#__PURE__*/ (0, $7yuSY$react).createElement($96b38030c423d352$export$60d741e20e0aa309.Provider, {\n value: {\n getContainer: getContainer === null ? undefined : getContainer !== null && getContainer !== void 0 ? getContainer : ctxGetContainer\n }\n }, props.children);\n}\nfunction $96b38030c423d352$export$574e9b0fb070c3b0() {\n var _useContext;\n return (_useContext = (0, $7yuSY$useContext)($96b38030c423d352$export$60d741e20e0aa309)) !== null && _useContext !== void 0 ? _useContext : {};\n}\n\n\nexport {$96b38030c423d352$export$60d741e20e0aa309 as PortalContext, $96b38030c423d352$export$db995ea7163b4b67 as UNSTABLE_PortalProvider, $96b38030c423d352$export$574e9b0fb070c3b0 as useUNSTABLE_PortalContext};\n//# sourceMappingURL=PortalProvider.module.js.map\n","import {useUNSTABLE_PortalContext as $96b38030c423d352$export$574e9b0fb070c3b0} from \"./PortalProvider.mjs\";\nimport {ClearPressResponder as $1CM7W$ClearPressResponder} from \"@react-aria/interactions\";\nimport {FocusScope as $1CM7W$FocusScope} from \"@react-aria/focus\";\nimport $1CM7W$react, {useState as $1CM7W$useState, useMemo as $1CM7W$useMemo, useContext as $1CM7W$useContext} from \"react\";\nimport $1CM7W$reactdom from \"react-dom\";\nimport {useIsSSR as $1CM7W$useIsSSR} from \"@react-aria/ssr\";\nimport {useLayoutEffect as $1CM7W$useLayoutEffect} from \"@react-aria/utils\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\nconst $337b884510726a0d$export$a2200b96afd16271 = /*#__PURE__*/ (0, $1CM7W$react).createContext(null);\nfunction $337b884510726a0d$export$c6fdb837b070b4ff(props) {\n let isSSR = (0, $1CM7W$useIsSSR)();\n let { portalContainer: portalContainer = isSSR ? null : document.body, isExiting: isExiting } = props;\n let [contain, setContain] = (0, $1CM7W$useState)(false);\n let contextValue = (0, $1CM7W$useMemo)(()=>({\n contain: contain,\n setContain: setContain\n }), [\n contain,\n setContain\n ]);\n let { getContainer: getContainer } = (0, $96b38030c423d352$export$574e9b0fb070c3b0)();\n if (!props.portalContainer && getContainer) portalContainer = getContainer();\n if (!portalContainer) return null;\n let contents = props.children;\n if (!props.disableFocusManagement) contents = /*#__PURE__*/ (0, $1CM7W$react).createElement((0, $1CM7W$FocusScope), {\n restoreFocus: true,\n contain: contain && !isExiting\n }, contents);\n contents = /*#__PURE__*/ (0, $1CM7W$react).createElement($337b884510726a0d$export$a2200b96afd16271.Provider, {\n value: contextValue\n }, /*#__PURE__*/ (0, $1CM7W$react).createElement((0, $1CM7W$ClearPressResponder), null, contents));\n return /*#__PURE__*/ (0, $1CM7W$reactdom).createPortal(contents, portalContainer);\n}\nfunction $337b884510726a0d$export$14c98a7594375490() {\n let ctx = (0, $1CM7W$useContext)($337b884510726a0d$export$a2200b96afd16271);\n let setContain = ctx === null || ctx === void 0 ? void 0 : ctx.setContain;\n (0, $1CM7W$useLayoutEffect)(()=>{\n setContain === null || setContain === void 0 ? void 0 : setContain(true);\n }, [\n setContain\n ]);\n}\n\n\nexport {$337b884510726a0d$export$a2200b96afd16271 as OverlayContext, $337b884510726a0d$export$c6fdb837b070b4ff as Overlay, $337b884510726a0d$export$14c98a7594375490 as useOverlayFocusContain};\n//# sourceMappingURL=Overlay.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Keeps a ref count of all hidden elements. Added to when hiding an element, and\n// subtracted from when showing it again. When it reaches zero, aria-hidden is removed.\nlet $5e3802645cc19319$var$refCountMap = new WeakMap();\nlet $5e3802645cc19319$var$observerStack = [];\nfunction $5e3802645cc19319$export$1c3ebcada18427bf(targets, root = document.body) {\n let visibleNodes = new Set(targets);\n let hiddenNodes = new Set();\n let walk = (root)=>{\n // Keep live announcer and top layer elements (e.g. toasts) visible.\n for (let element of root.querySelectorAll('[data-live-announcer], [data-react-aria-top-layer]'))visibleNodes.add(element);\n let acceptNode = (node)=>{\n // Skip this node and its children if it is one of the target nodes, or a live announcer.\n // Also skip children of already hidden nodes, as aria-hidden is recursive. An exception is\n // made for elements with role=\"row\" since VoiceOver on iOS has issues hiding elements with role=\"row\".\n // For that case we want to hide the cells inside as well (https://bugs.webkit.org/show_bug.cgi?id=222623).\n if (visibleNodes.has(node) || node.parentElement && hiddenNodes.has(node.parentElement) && node.parentElement.getAttribute('role') !== 'row') return NodeFilter.FILTER_REJECT;\n // Skip this node but continue to children if one of the targets is inside the node.\n for (let target of visibleNodes){\n if (node.contains(target)) return NodeFilter.FILTER_SKIP;\n }\n return NodeFilter.FILTER_ACCEPT;\n };\n let walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode: acceptNode\n });\n // TreeWalker does not include the root.\n let acceptRoot = acceptNode(root);\n if (acceptRoot === NodeFilter.FILTER_ACCEPT) hide(root);\n if (acceptRoot !== NodeFilter.FILTER_REJECT) {\n let node = walker.nextNode();\n while(node != null){\n hide(node);\n node = walker.nextNode();\n }\n }\n };\n let hide = (node)=>{\n var _refCountMap_get;\n let refCount = (_refCountMap_get = $5e3802645cc19319$var$refCountMap.get(node)) !== null && _refCountMap_get !== void 0 ? _refCountMap_get : 0;\n // If already aria-hidden, and the ref count is zero, then this element\n // was already hidden and there's nothing for us to do.\n if (node.getAttribute('aria-hidden') === 'true' && refCount === 0) return;\n if (refCount === 0) node.setAttribute('aria-hidden', 'true');\n hiddenNodes.add(node);\n $5e3802645cc19319$var$refCountMap.set(node, refCount + 1);\n };\n // If there is already a MutationObserver listening from a previous call,\n // disconnect it so the new on takes over.\n if ($5e3802645cc19319$var$observerStack.length) $5e3802645cc19319$var$observerStack[$5e3802645cc19319$var$observerStack.length - 1].disconnect();\n walk(root);\n let observer = new MutationObserver((changes)=>{\n for (let change of changes){\n if (change.type !== 'childList' || change.addedNodes.length === 0) continue;\n // If the parent element of the added nodes is not within one of the targets,\n // and not already inside a hidden node, hide all of the new children.\n if (![\n ...visibleNodes,\n ...hiddenNodes\n ].some((node)=>node.contains(change.target))) {\n for (let node of change.removedNodes)if (node instanceof Element) {\n visibleNodes.delete(node);\n hiddenNodes.delete(node);\n }\n for (let node of change.addedNodes){\n if ((node instanceof HTMLElement || node instanceof SVGElement) && (node.dataset.liveAnnouncer === 'true' || node.dataset.reactAriaTopLayer === 'true')) visibleNodes.add(node);\n else if (node instanceof Element) walk(node);\n }\n }\n }\n });\n observer.observe(root, {\n childList: true,\n subtree: true\n });\n let observerWrapper = {\n observe () {\n observer.observe(root, {\n childList: true,\n subtree: true\n });\n },\n disconnect () {\n observer.disconnect();\n }\n };\n $5e3802645cc19319$var$observerStack.push(observerWrapper);\n return ()=>{\n observer.disconnect();\n for (let node of hiddenNodes){\n let count = $5e3802645cc19319$var$refCountMap.get(node);\n if (count == null) continue;\n if (count === 1) {\n node.removeAttribute('aria-hidden');\n $5e3802645cc19319$var$refCountMap.delete(node);\n } else $5e3802645cc19319$var$refCountMap.set(node, count - 1);\n }\n // Remove this observer from the stack, and start the previous one.\n if (observerWrapper === $5e3802645cc19319$var$observerStack[$5e3802645cc19319$var$observerStack.length - 1]) {\n $5e3802645cc19319$var$observerStack.pop();\n if ($5e3802645cc19319$var$observerStack.length) $5e3802645cc19319$var$observerStack[$5e3802645cc19319$var$observerStack.length - 1].observe();\n } else $5e3802645cc19319$var$observerStack.splice($5e3802645cc19319$var$observerStack.indexOf(observerWrapper), 1);\n };\n}\n\n\nexport {$5e3802645cc19319$export$1c3ebcada18427bf as ariaHideOutside};\n//# sourceMappingURL=ariaHideOutside.module.js.map\n","import {useEffect as $dRVb8$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $dd149f63282afbbf$export$f6211563215e3b37 = new WeakMap();\nfunction $dd149f63282afbbf$export$18fc8428861184da(opts) {\n let { triggerRef: triggerRef, isOpen: isOpen, onClose: onClose } = opts;\n (0, $dRVb8$useEffect)(()=>{\n if (!isOpen || onClose === null) return;\n let onScroll = (e)=>{\n // Ignore if scrolling an scrollable region outside the trigger's tree.\n let target = e.target;\n // window is not a Node and doesn't have contain, but window contains everything\n if (!triggerRef.current || target instanceof Node && !target.contains(triggerRef.current)) return;\n // Ignore scroll events on any input or textarea as the cursor position can cause it to scroll\n // such as in a combobox. Clicking the dropdown button places focus on the input, and if the\n // text inside the input extends beyond the 'end', then it will scroll so the cursor is visible at the end.\n if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;\n let onCloseHandler = onClose || $dd149f63282afbbf$export$f6211563215e3b37.get(triggerRef.current);\n if (onCloseHandler) onCloseHandler();\n };\n window.addEventListener('scroll', onScroll, true);\n return ()=>{\n window.removeEventListener('scroll', onScroll, true);\n };\n }, [\n isOpen,\n onClose,\n triggerRef\n ]);\n}\n\n\nexport {$dd149f63282afbbf$export$f6211563215e3b37 as onCloseMap, $dd149f63282afbbf$export$18fc8428861184da as useCloseOnScroll};\n//# sourceMappingURL=useCloseOnScroll.module.js.map\n","import {onCloseMap as $dd149f63282afbbf$export$f6211563215e3b37} from \"./useCloseOnScroll.mjs\";\nimport {useEffect as $gMvIk$useEffect} from \"react\";\nimport {useId as $gMvIk$useId} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $628037886ba31236$export$f9d5c8beee7d008d(props, state, ref) {\n let { type: type } = props;\n let { isOpen: isOpen } = state;\n // Backward compatibility. Share state close function with useOverlayPosition so it can close on scroll\n // without forcing users to pass onClose.\n (0, $gMvIk$useEffect)(()=>{\n if (ref && ref.current) (0, $dd149f63282afbbf$export$f6211563215e3b37).set(ref.current, state.close);\n });\n // Aria 1.1 supports multiple values for aria-haspopup other than just menus.\n // https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup\n // However, we only add it for menus for now because screen readers often\n // announce it as a menu even for other values.\n let ariaHasPopup = undefined;\n if (type === 'menu') ariaHasPopup = true;\n else if (type === 'listbox') ariaHasPopup = 'listbox';\n let overlayId = (0, $gMvIk$useId)();\n return {\n triggerProps: {\n 'aria-haspopup': ariaHasPopup,\n 'aria-expanded': isOpen,\n 'aria-controls': isOpen ? overlayId : undefined,\n onPress: state.toggle\n },\n overlayProps: {\n id: overlayId\n }\n };\n}\n\n\nexport {$628037886ba31236$export$f9d5c8beee7d008d as useOverlayTrigger};\n//# sourceMappingURL=useOverlayTrigger.module.js.map\n","import {isWebKit as $fZVmS$isWebKit, clamp as $fZVmS$clamp} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $edcf132a9284368a$var$AXIS = {\n top: 'top',\n bottom: 'top',\n left: 'left',\n right: 'left'\n};\nconst $edcf132a9284368a$var$FLIPPED_DIRECTION = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\nconst $edcf132a9284368a$var$CROSS_AXIS = {\n top: 'left',\n left: 'top'\n};\nconst $edcf132a9284368a$var$AXIS_SIZE = {\n top: 'height',\n left: 'width'\n};\nconst $edcf132a9284368a$var$TOTAL_SIZE = {\n width: 'totalWidth',\n height: 'totalHeight'\n};\nconst $edcf132a9284368a$var$PARSED_PLACEMENT_CACHE = {};\nlet $edcf132a9284368a$var$visualViewport = typeof document !== 'undefined' ? window.visualViewport : null;\nfunction $edcf132a9284368a$var$getContainerDimensions(containerNode) {\n let width = 0, height = 0, totalWidth = 0, totalHeight = 0, top = 0, left = 0;\n let scroll = {};\n var _visualViewport_scale;\n let isPinchZoomedIn = ((_visualViewport_scale = $edcf132a9284368a$var$visualViewport === null || $edcf132a9284368a$var$visualViewport === void 0 ? void 0 : $edcf132a9284368a$var$visualViewport.scale) !== null && _visualViewport_scale !== void 0 ? _visualViewport_scale : 1) > 1;\n if (containerNode.tagName === 'BODY') {\n let documentElement = document.documentElement;\n totalWidth = documentElement.clientWidth;\n totalHeight = documentElement.clientHeight;\n var _visualViewport_width;\n width = (_visualViewport_width = $edcf132a9284368a$var$visualViewport === null || $edcf132a9284368a$var$visualViewport === void 0 ? void 0 : $edcf132a9284368a$var$visualViewport.width) !== null && _visualViewport_width !== void 0 ? _visualViewport_width : totalWidth;\n var _visualViewport_height;\n height = (_visualViewport_height = $edcf132a9284368a$var$visualViewport === null || $edcf132a9284368a$var$visualViewport === void 0 ? void 0 : $edcf132a9284368a$var$visualViewport.height) !== null && _visualViewport_height !== void 0 ? _visualViewport_height : totalHeight;\n scroll.top = documentElement.scrollTop || containerNode.scrollTop;\n scroll.left = documentElement.scrollLeft || containerNode.scrollLeft;\n // The goal of the below is to get a top/left value that represents the top/left of the visual viewport with\n // respect to the layout viewport origin. This combined with the scrollTop/scrollLeft will allow us to calculate\n // coordinates/values with respect to the visual viewport or with respect to the layout viewport.\n if ($edcf132a9284368a$var$visualViewport) {\n top = $edcf132a9284368a$var$visualViewport.offsetTop;\n left = $edcf132a9284368a$var$visualViewport.offsetLeft;\n }\n } else {\n ({ width: width, height: height, top: top, left: left } = $edcf132a9284368a$var$getOffset(containerNode));\n scroll.top = containerNode.scrollTop;\n scroll.left = containerNode.scrollLeft;\n totalWidth = width;\n totalHeight = height;\n }\n if ((0, $fZVmS$isWebKit)() && (containerNode.tagName === 'BODY' || containerNode.tagName === 'HTML') && isPinchZoomedIn) {\n // Safari will report a non-zero scrollTop/Left for the non-scrolling body/HTML element when pinch zoomed in unlike other browsers.\n // Set to zero for parity calculations so we get consistent positioning of overlays across all browsers.\n // Also switch to visualViewport.pageTop/pageLeft so that we still accomodate for scroll positioning for body/HTML elements that are actually scrollable\n // before pinch zoom happens\n scroll.top = 0;\n scroll.left = 0;\n var _visualViewport_pageTop;\n top = (_visualViewport_pageTop = $edcf132a9284368a$var$visualViewport === null || $edcf132a9284368a$var$visualViewport === void 0 ? void 0 : $edcf132a9284368a$var$visualViewport.pageTop) !== null && _visualViewport_pageTop !== void 0 ? _visualViewport_pageTop : 0;\n var _visualViewport_pageLeft;\n left = (_visualViewport_pageLeft = $edcf132a9284368a$var$visualViewport === null || $edcf132a9284368a$var$visualViewport === void 0 ? void 0 : $edcf132a9284368a$var$visualViewport.pageLeft) !== null && _visualViewport_pageLeft !== void 0 ? _visualViewport_pageLeft : 0;\n }\n return {\n width: width,\n height: height,\n totalWidth: totalWidth,\n totalHeight: totalHeight,\n scroll: scroll,\n top: top,\n left: left\n };\n}\nfunction $edcf132a9284368a$var$getScroll(node) {\n return {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n}\n// Determines the amount of space required when moving the overlay to ensure it remains in the boundary\nfunction $edcf132a9284368a$var$getDelta(axis, offset, size, // The dimensions of the boundary element that the popover is\n// positioned within (most of the time this is the <body>).\nboundaryDimensions, // The dimensions of the containing block element that the popover is\n// positioned relative to (e.g. parent with position: relative).\n// Usually this is the same as the boundary element, but if the popover\n// is portaled somewhere other than the body and has an ancestor with\n// position: relative/absolute, it will be different.\ncontainerDimensions, padding, containerOffsetWithBoundary) {\n var _containerDimensions_scroll_axis;\n let containerScroll = (_containerDimensions_scroll_axis = containerDimensions.scroll[axis]) !== null && _containerDimensions_scroll_axis !== void 0 ? _containerDimensions_scroll_axis : 0;\n // The height/width of the boundary. Matches the axis along which we are adjusting the overlay position\n let boundarySize = boundaryDimensions[$edcf132a9284368a$var$AXIS_SIZE[axis]];\n // Calculate the edges of the boundary (accomodating for the boundary padding) and the edges of the overlay.\n // Note that these values are with respect to the visual viewport (aka 0,0 is the top left of the viewport)\n let boundaryStartEdge = boundaryDimensions.scroll[$edcf132a9284368a$var$AXIS[axis]] + padding;\n let boundaryEndEdge = boundarySize + boundaryDimensions.scroll[$edcf132a9284368a$var$AXIS[axis]] - padding;\n let startEdgeOffset = offset - containerScroll + containerOffsetWithBoundary[axis] - boundaryDimensions[$edcf132a9284368a$var$AXIS[axis]];\n let endEdgeOffset = offset - containerScroll + size + containerOffsetWithBoundary[axis] - boundaryDimensions[$edcf132a9284368a$var$AXIS[axis]];\n // If any of the overlay edges falls outside of the boundary, shift the overlay the required amount to align one of the overlay's\n // edges with the closest boundary edge.\n if (startEdgeOffset < boundaryStartEdge) return boundaryStartEdge - startEdgeOffset;\n else if (endEdgeOffset > boundaryEndEdge) return Math.max(boundaryEndEdge - endEdgeOffset, boundaryStartEdge - startEdgeOffset);\n else return 0;\n}\nfunction $edcf132a9284368a$var$getMargins(node) {\n let style = window.getComputedStyle(node);\n return {\n top: parseInt(style.marginTop, 10) || 0,\n bottom: parseInt(style.marginBottom, 10) || 0,\n left: parseInt(style.marginLeft, 10) || 0,\n right: parseInt(style.marginRight, 10) || 0\n };\n}\nfunction $edcf132a9284368a$var$parsePlacement(input) {\n if ($edcf132a9284368a$var$PARSED_PLACEMENT_CACHE[input]) return $edcf132a9284368a$var$PARSED_PLACEMENT_CACHE[input];\n let [placement, crossPlacement] = input.split(' ');\n let axis = $edcf132a9284368a$var$AXIS[placement] || 'right';\n let crossAxis = $edcf132a9284368a$var$CROSS_AXIS[axis];\n if (!$edcf132a9284368a$var$AXIS[crossPlacement]) crossPlacement = 'center';\n let size = $edcf132a9284368a$var$AXIS_SIZE[axis];\n let crossSize = $edcf132a9284368a$var$AXIS_SIZE[crossAxis];\n $edcf132a9284368a$var$PARSED_PLACEMENT_CACHE[input] = {\n placement: placement,\n crossPlacement: crossPlacement,\n axis: axis,\n crossAxis: crossAxis,\n size: size,\n crossSize: crossSize\n };\n return $edcf132a9284368a$var$PARSED_PLACEMENT_CACHE[input];\n}\nfunction $edcf132a9284368a$var$computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned, arrowSize, arrowBoundaryOffset) {\n let { placement: placement, crossPlacement: crossPlacement, axis: axis, crossAxis: crossAxis, size: size, crossSize: crossSize } = placementInfo;\n let position = {};\n var _childOffset_crossAxis;\n // button position\n position[crossAxis] = (_childOffset_crossAxis = childOffset[crossAxis]) !== null && _childOffset_crossAxis !== void 0 ? _childOffset_crossAxis : 0;\n var _childOffset_crossSize, _overlaySize_crossSize, _childOffset_crossSize1, _overlaySize_crossSize1;\n if (crossPlacement === 'center') // + (button size / 2) - (overlay size / 2)\n // at this point the overlay center should match the button center\n position[crossAxis] += (((_childOffset_crossSize = childOffset[crossSize]) !== null && _childOffset_crossSize !== void 0 ? _childOffset_crossSize : 0) - ((_overlaySize_crossSize = overlaySize[crossSize]) !== null && _overlaySize_crossSize !== void 0 ? _overlaySize_crossSize : 0)) / 2;\n else if (crossPlacement !== crossAxis) // + (button size) - (overlay size)\n // at this point the overlay bottom should match the button bottom\n position[crossAxis] += ((_childOffset_crossSize1 = childOffset[crossSize]) !== null && _childOffset_crossSize1 !== void 0 ? _childOffset_crossSize1 : 0) - ((_overlaySize_crossSize1 = overlaySize[crossSize]) !== null && _overlaySize_crossSize1 !== void 0 ? _overlaySize_crossSize1 : 0);\n /* else {\n the overlay top should match the button top\n } */ \n position[crossAxis] += crossOffset;\n // overlay top overlapping arrow with button bottom\n const minPosition = childOffset[crossAxis] - overlaySize[crossSize] + arrowSize + arrowBoundaryOffset;\n // overlay bottom overlapping arrow with button top\n const maxPosition = childOffset[crossAxis] + childOffset[crossSize] - arrowSize - arrowBoundaryOffset;\n position[crossAxis] = (0, $fZVmS$clamp)(position[crossAxis], minPosition, maxPosition);\n // Floor these so the position isn't placed on a partial pixel, only whole pixels. Shouldn't matter if it was floored or ceiled, so chose one.\n if (placement === axis) {\n // If the container is positioned (non-static), then we use the container's actual\n // height, as `bottom` will be relative to this height. But if the container is static,\n // then it can only be the `document.body`, and `bottom` will be relative to _its_\n // container, which should be as large as boundaryDimensions.\n const containerHeight = isContainerPositioned ? containerOffsetWithBoundary[size] : boundaryDimensions[$edcf132a9284368a$var$TOTAL_SIZE[size]];\n position[$edcf132a9284368a$var$FLIPPED_DIRECTION[axis]] = Math.floor(containerHeight - childOffset[axis] + offset);\n } else position[axis] = Math.floor(childOffset[axis] + childOffset[size] + offset);\n return position;\n}\nfunction $edcf132a9284368a$var$getMaxHeight(position, boundaryDimensions, containerOffsetWithBoundary, isContainerPositioned, margins, padding, overlayHeight, heightGrowthDirection) {\n const containerHeight = isContainerPositioned ? containerOffsetWithBoundary.height : boundaryDimensions[$edcf132a9284368a$var$TOTAL_SIZE.height];\n var _position_bottom;\n // For cases where position is set via \"bottom\" instead of \"top\", we need to calculate the true overlay top with respect to the boundary. Reverse calculate this with the same method\n // used in computePosition.\n let overlayTop = position.top != null ? containerOffsetWithBoundary.top + position.top : containerOffsetWithBoundary.top + (containerHeight - ((_position_bottom = position.bottom) !== null && _position_bottom !== void 0 ? _position_bottom : 0) - overlayHeight);\n var _boundaryDimensions_scroll_top, _margins_top, _margins_bottom, _boundaryDimensions_scroll_top1, _margins_top1, _margins_bottom1;\n let maxHeight = heightGrowthDirection !== 'top' ? // We want the distance between the top of the overlay to the bottom of the boundary\n Math.max(0, boundaryDimensions.height + boundaryDimensions.top + ((_boundaryDimensions_scroll_top = boundaryDimensions.scroll.top) !== null && _boundaryDimensions_scroll_top !== void 0 ? _boundaryDimensions_scroll_top : 0) - overlayTop // this is the top of the overlay\n - (((_margins_top = margins.top) !== null && _margins_top !== void 0 ? _margins_top : 0) + ((_margins_bottom = margins.bottom) !== null && _margins_bottom !== void 0 ? _margins_bottom : 0) + padding // save additional space for margin and padding\n )) : Math.max(0, overlayTop + overlayHeight // this is the bottom of the overlay\n - (boundaryDimensions.top + ((_boundaryDimensions_scroll_top1 = boundaryDimensions.scroll.top) !== null && _boundaryDimensions_scroll_top1 !== void 0 ? _boundaryDimensions_scroll_top1 : 0) // this is the top of the boundary\n ) - (((_margins_top1 = margins.top) !== null && _margins_top1 !== void 0 ? _margins_top1 : 0) + ((_margins_bottom1 = margins.bottom) !== null && _margins_bottom1 !== void 0 ? _margins_bottom1 : 0) + padding // save additional space for margin and padding\n ));\n return Math.min(boundaryDimensions.height - padding * 2, maxHeight);\n}\nfunction $edcf132a9284368a$var$getAvailableSpace(boundaryDimensions, containerOffsetWithBoundary, childOffset, margins, padding, placementInfo) {\n let { placement: placement, axis: axis, size: size } = placementInfo;\n var _boundaryDimensions_scroll_axis, _margins_axis;\n if (placement === axis) return Math.max(0, childOffset[axis] - boundaryDimensions[axis] - ((_boundaryDimensions_scroll_axis = boundaryDimensions.scroll[axis]) !== null && _boundaryDimensions_scroll_axis !== void 0 ? _boundaryDimensions_scroll_axis : 0) + containerOffsetWithBoundary[axis] - ((_margins_axis = margins[axis]) !== null && _margins_axis !== void 0 ? _margins_axis : 0) - margins[$edcf132a9284368a$var$FLIPPED_DIRECTION[axis]] - padding);\n var _margins_axis1;\n return Math.max(0, boundaryDimensions[size] + boundaryDimensions[axis] + boundaryDimensions.scroll[axis] - containerOffsetWithBoundary[axis] - childOffset[axis] - childOffset[size] - ((_margins_axis1 = margins[axis]) !== null && _margins_axis1 !== void 0 ? _margins_axis1 : 0) - margins[$edcf132a9284368a$var$FLIPPED_DIRECTION[axis]] - padding);\n}\nfunction $edcf132a9284368a$export$6839422d1f33cee9(placementInput, childOffset, overlaySize, scrollSize, margins, padding, flip, boundaryDimensions, containerDimensions, containerOffsetWithBoundary, offset, crossOffset, isContainerPositioned, userSetMaxHeight, arrowSize, arrowBoundaryOffset) {\n let placementInfo = $edcf132a9284368a$var$parsePlacement(placementInput);\n let { size: size, crossAxis: crossAxis, crossSize: crossSize, placement: placement, crossPlacement: crossPlacement } = placementInfo;\n let position = $edcf132a9284368a$var$computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned, arrowSize, arrowBoundaryOffset);\n let normalizedOffset = offset;\n let space = $edcf132a9284368a$var$getAvailableSpace(boundaryDimensions, containerOffsetWithBoundary, childOffset, margins, padding + offset, placementInfo);\n // Check if the scroll size of the overlay is greater than the available space to determine if we need to flip\n if (flip && scrollSize[size] > space) {\n let flippedPlacementInfo = $edcf132a9284368a$var$parsePlacement(`${$edcf132a9284368a$var$FLIPPED_DIRECTION[placement]} ${crossPlacement}`);\n let flippedPosition = $edcf132a9284368a$var$computePosition(childOffset, boundaryDimensions, overlaySize, flippedPlacementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned, arrowSize, arrowBoundaryOffset);\n let flippedSpace = $edcf132a9284368a$var$getAvailableSpace(boundaryDimensions, containerOffsetWithBoundary, childOffset, margins, padding + offset, flippedPlacementInfo);\n // If the available space for the flipped position is greater than the original available space, flip.\n if (flippedSpace > space) {\n placementInfo = flippedPlacementInfo;\n position = flippedPosition;\n normalizedOffset = offset;\n }\n }\n // Determine the direction the height of the overlay can grow so that we can choose how to calculate the max height\n let heightGrowthDirection = 'bottom';\n if (placementInfo.axis === 'top') {\n if (placementInfo.placement === 'top') heightGrowthDirection = 'top';\n else if (placementInfo.placement === 'bottom') heightGrowthDirection = 'bottom';\n } else if (placementInfo.crossAxis === 'top') {\n if (placementInfo.crossPlacement === 'top') heightGrowthDirection = 'bottom';\n else if (placementInfo.crossPlacement === 'bottom') heightGrowthDirection = 'top';\n }\n let delta = $edcf132a9284368a$var$getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, containerDimensions, padding, containerOffsetWithBoundary);\n position[crossAxis] += delta;\n let maxHeight = $edcf132a9284368a$var$getMaxHeight(position, boundaryDimensions, containerOffsetWithBoundary, isContainerPositioned, margins, padding, overlaySize.height, heightGrowthDirection);\n if (userSetMaxHeight && userSetMaxHeight < maxHeight) maxHeight = userSetMaxHeight;\n overlaySize.height = Math.min(overlaySize.height, maxHeight);\n position = $edcf132a9284368a$var$computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, normalizedOffset, crossOffset, containerOffsetWithBoundary, isContainerPositioned, arrowSize, arrowBoundaryOffset);\n delta = $edcf132a9284368a$var$getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, containerDimensions, padding, containerOffsetWithBoundary);\n position[crossAxis] += delta;\n let arrowPosition = {};\n // All values are transformed so that 0 is at the top/left of the overlay depending on the orientation\n // Prefer the arrow being in the center of the trigger/overlay anchor element\n // childOffset[crossAxis] + .5 * childOffset[crossSize] = absolute position with respect to the trigger's coordinate system that would place the arrow in the center of the trigger\n // position[crossAxis] - margins[AXIS[crossAxis]] = value use to transform the position to a value with respect to the overlay's coordinate system. A child element's (aka arrow) position absolute's \"0\"\n // is positioned after the margin of its parent (aka overlay) so we need to subtract it to get the proper coordinate transform\n let preferredArrowPosition = childOffset[crossAxis] + .5 * childOffset[crossSize] - position[crossAxis] - margins[$edcf132a9284368a$var$AXIS[crossAxis]];\n // Min/Max position limits for the arrow with respect to the overlay\n const arrowMinPosition = arrowSize / 2 + arrowBoundaryOffset;\n var _margins_left, _margins_right, _margins_top, _margins_bottom;\n // overlaySize[crossSize] - margins = true size of the overlay\n const overlayMargin = $edcf132a9284368a$var$AXIS[crossAxis] === 'left' ? ((_margins_left = margins.left) !== null && _margins_left !== void 0 ? _margins_left : 0) + ((_margins_right = margins.right) !== null && _margins_right !== void 0 ? _margins_right : 0) : ((_margins_top = margins.top) !== null && _margins_top !== void 0 ? _margins_top : 0) + ((_margins_bottom = margins.bottom) !== null && _margins_bottom !== void 0 ? _margins_bottom : 0);\n const arrowMaxPosition = overlaySize[crossSize] - overlayMargin - arrowSize / 2 - arrowBoundaryOffset;\n // Min/Max position limits for the arrow with respect to the trigger/overlay anchor element\n // Same margin accomodation done here as well as for the preferredArrowPosition\n const arrowOverlappingChildMinEdge = childOffset[crossAxis] + arrowSize / 2 - (position[crossAxis] + margins[$edcf132a9284368a$var$AXIS[crossAxis]]);\n const arrowOverlappingChildMaxEdge = childOffset[crossAxis] + childOffset[crossSize] - arrowSize / 2 - (position[crossAxis] + margins[$edcf132a9284368a$var$AXIS[crossAxis]]);\n // Clamp the arrow positioning so that it always is within the bounds of the anchor and the overlay\n const arrowPositionOverlappingChild = (0, $fZVmS$clamp)(preferredArrowPosition, arrowOverlappingChildMinEdge, arrowOverlappingChildMaxEdge);\n arrowPosition[crossAxis] = (0, $fZVmS$clamp)(arrowPositionOverlappingChild, arrowMinPosition, arrowMaxPosition);\n return {\n position: position,\n maxHeight: maxHeight,\n arrowOffsetLeft: arrowPosition.left,\n arrowOffsetTop: arrowPosition.top,\n placement: placementInfo.placement\n };\n}\nfunction $edcf132a9284368a$export$b3ceb0cbf1056d98(opts) {\n let { placement: placement, targetNode: targetNode, overlayNode: overlayNode, scrollNode: scrollNode, padding: padding, shouldFlip: shouldFlip, boundaryElement: boundaryElement, offset: offset, crossOffset: crossOffset, maxHeight: maxHeight, arrowSize: arrowSize = 0, arrowBoundaryOffset: arrowBoundaryOffset = 0 } = opts;\n let container = overlayNode instanceof HTMLElement ? $edcf132a9284368a$var$getContainingBlock(overlayNode) : document.documentElement;\n let isViewportContainer = container === document.documentElement;\n const containerPositionStyle = window.getComputedStyle(container).position;\n let isContainerPositioned = !!containerPositionStyle && containerPositionStyle !== 'static';\n let childOffset = isViewportContainer ? $edcf132a9284368a$var$getOffset(targetNode) : $edcf132a9284368a$var$getPosition(targetNode, container);\n if (!isViewportContainer) {\n let { marginTop: marginTop, marginLeft: marginLeft } = window.getComputedStyle(targetNode);\n childOffset.top += parseInt(marginTop, 10) || 0;\n childOffset.left += parseInt(marginLeft, 10) || 0;\n }\n let overlaySize = $edcf132a9284368a$var$getOffset(overlayNode);\n let margins = $edcf132a9284368a$var$getMargins(overlayNode);\n var _margins_left, _margins_right;\n overlaySize.width += ((_margins_left = margins.left) !== null && _margins_left !== void 0 ? _margins_left : 0) + ((_margins_right = margins.right) !== null && _margins_right !== void 0 ? _margins_right : 0);\n var _margins_top, _margins_bottom;\n overlaySize.height += ((_margins_top = margins.top) !== null && _margins_top !== void 0 ? _margins_top : 0) + ((_margins_bottom = margins.bottom) !== null && _margins_bottom !== void 0 ? _margins_bottom : 0);\n let scrollSize = $edcf132a9284368a$var$getScroll(scrollNode);\n let boundaryDimensions = $edcf132a9284368a$var$getContainerDimensions(boundaryElement);\n let containerDimensions = $edcf132a9284368a$var$getContainerDimensions(container);\n // If the container is the HTML element wrapping the body element, the retrieved scrollTop/scrollLeft will be equal to the\n // body element's scroll. Set the container's scroll values to 0 since the overlay's edge position value in getDelta don't then need to be further offset\n // by the container scroll since they are essentially the same containing element and thus in the same coordinate system\n let containerOffsetWithBoundary = boundaryElement.tagName === 'BODY' ? $edcf132a9284368a$var$getOffset(container) : $edcf132a9284368a$var$getPosition(container, boundaryElement);\n if (container.tagName === 'HTML' && boundaryElement.tagName === 'BODY') {\n containerDimensions.scroll.top = 0;\n containerDimensions.scroll.left = 0;\n }\n return $edcf132a9284368a$export$6839422d1f33cee9(placement, childOffset, overlaySize, scrollSize, margins, padding, shouldFlip, boundaryDimensions, containerDimensions, containerOffsetWithBoundary, offset, crossOffset, isContainerPositioned, maxHeight, arrowSize, arrowBoundaryOffset);\n}\nfunction $edcf132a9284368a$var$getOffset(node) {\n let { top: top, left: left, width: width, height: height } = node.getBoundingClientRect();\n let { scrollTop: scrollTop, scrollLeft: scrollLeft, clientTop: clientTop, clientLeft: clientLeft } = document.documentElement;\n return {\n top: top + scrollTop - clientTop,\n left: left + scrollLeft - clientLeft,\n width: width,\n height: height\n };\n}\nfunction $edcf132a9284368a$var$getPosition(node, parent) {\n let style = window.getComputedStyle(node);\n let offset;\n if (style.position === 'fixed') {\n let { top: top, left: left, width: width, height: height } = node.getBoundingClientRect();\n offset = {\n top: top,\n left: left,\n width: width,\n height: height\n };\n } else {\n offset = $edcf132a9284368a$var$getOffset(node);\n let parentOffset = $edcf132a9284368a$var$getOffset(parent);\n let parentStyle = window.getComputedStyle(parent);\n parentOffset.top += (parseInt(parentStyle.borderTopWidth, 10) || 0) - parent.scrollTop;\n parentOffset.left += (parseInt(parentStyle.borderLeftWidth, 10) || 0) - parent.scrollLeft;\n offset.top -= parentOffset.top;\n offset.left -= parentOffset.left;\n }\n offset.top -= parseInt(style.marginTop, 10) || 0;\n offset.left -= parseInt(style.marginLeft, 10) || 0;\n return offset;\n}\n// Returns the containing block of an element, which is the element that\n// this element will be positioned relative to.\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block\nfunction $edcf132a9284368a$var$getContainingBlock(node) {\n // The offsetParent of an element in most cases equals the containing block.\n // https://w3c.github.io/csswg-drafts/cssom-view/#dom-htmlelement-offsetparent\n let offsetParent = node.offsetParent;\n // The offsetParent algorithm terminates at the document body,\n // even if the body is not a containing block. Double check that\n // and use the documentElement if so.\n if (offsetParent && offsetParent === document.body && window.getComputedStyle(offsetParent).position === 'static' && !$edcf132a9284368a$var$isContainingBlock(offsetParent)) offsetParent = document.documentElement;\n // TODO(later): handle table elements?\n // The offsetParent can be null if the element has position: fixed, or a few other cases.\n // We have to walk up the tree manually in this case because fixed positioned elements\n // are still positioned relative to their containing block, which is not always the viewport.\n if (offsetParent == null) {\n offsetParent = node.parentElement;\n while(offsetParent && !$edcf132a9284368a$var$isContainingBlock(offsetParent))offsetParent = offsetParent.parentElement;\n }\n // Fall back to the viewport.\n return offsetParent || document.documentElement;\n}\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\nfunction $edcf132a9284368a$var$isContainingBlock(node) {\n let style = window.getComputedStyle(node);\n return style.transform !== 'none' || /transform|perspective/.test(style.willChange) || style.filter !== 'none' || style.contain === 'paint' || 'backdropFilter' in style && style.backdropFilter !== 'none' || 'WebkitBackdropFilter' in style && style.WebkitBackdropFilter !== 'none';\n}\n\n\nexport {$edcf132a9284368a$export$6839422d1f33cee9 as calculatePositionInternal, $edcf132a9284368a$export$b3ceb0cbf1056d98 as calculatePosition};\n//# sourceMappingURL=calculatePosition.module.js.map\n","import {calculatePosition as $edcf132a9284368a$export$b3ceb0cbf1056d98} from \"./calculatePosition.mjs\";\nimport {useCloseOnScroll as $dd149f63282afbbf$export$18fc8428861184da} from \"./useCloseOnScroll.mjs\";\nimport {useState as $39EOa$useState, useRef as $39EOa$useRef, useEffect as $39EOa$useEffect, useCallback as $39EOa$useCallback} from \"react\";\nimport {useLayoutEffect as $39EOa$useLayoutEffect, useResizeObserver as $39EOa$useResizeObserver} from \"@react-aria/utils\";\nimport {useLocale as $39EOa$useLocale} from \"@react-aria/i18n\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nlet $2a41e45df1593e64$var$visualViewport = typeof document !== 'undefined' ? window.visualViewport : null;\nfunction $2a41e45df1593e64$export$d39e1813b3bdd0e1(props) {\n let { direction: direction } = (0, $39EOa$useLocale)();\n let { arrowSize: arrowSize = 0, targetRef: targetRef, overlayRef: overlayRef, scrollRef: scrollRef = overlayRef, placement: placement = 'bottom', containerPadding: containerPadding = 12, shouldFlip: shouldFlip = true, boundaryElement: boundaryElement = typeof document !== 'undefined' ? document.body : null, offset: offset = 0, crossOffset: crossOffset = 0, shouldUpdatePosition: shouldUpdatePosition = true, isOpen: isOpen = true, onClose: onClose, maxHeight: maxHeight, arrowBoundaryOffset: arrowBoundaryOffset = 0 } = props;\n let [position, setPosition] = (0, $39EOa$useState)(null);\n let deps = [\n shouldUpdatePosition,\n placement,\n overlayRef.current,\n targetRef.current,\n scrollRef.current,\n containerPadding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n isOpen,\n direction,\n maxHeight,\n arrowBoundaryOffset,\n arrowSize\n ];\n // Note, the position freezing breaks if body sizes itself dynamicly with the visual viewport but that might\n // just be a non-realistic use case\n // Upon opening a overlay, record the current visual viewport scale so we can freeze the overlay styles\n let lastScale = (0, $39EOa$useRef)($2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.scale);\n (0, $39EOa$useEffect)(()=>{\n if (isOpen) lastScale.current = $2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.scale;\n }, [\n isOpen\n ]);\n let updatePosition = (0, $39EOa$useCallback)(()=>{\n if (shouldUpdatePosition === false || !isOpen || !overlayRef.current || !targetRef.current || !boundaryElement) return;\n if (($2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.scale) !== lastScale.current) return;\n // Determine a scroll anchor based on the focused element.\n // This stores the offset of the anchor element from the scroll container\n // so it can be restored after repositioning. This way if the overlay height\n // changes, the focused element appears to stay in the same position.\n let anchor = null;\n if (scrollRef.current && scrollRef.current.contains(document.activeElement)) {\n var _document_activeElement;\n let anchorRect = (_document_activeElement = document.activeElement) === null || _document_activeElement === void 0 ? void 0 : _document_activeElement.getBoundingClientRect();\n let scrollRect = scrollRef.current.getBoundingClientRect();\n var _anchorRect_top;\n // Anchor from the top if the offset is in the top half of the scrollable element,\n // otherwise anchor from the bottom.\n anchor = {\n type: 'top',\n offset: ((_anchorRect_top = anchorRect === null || anchorRect === void 0 ? void 0 : anchorRect.top) !== null && _anchorRect_top !== void 0 ? _anchorRect_top : 0) - scrollRect.top\n };\n if (anchor.offset > scrollRect.height / 2) {\n anchor.type = 'bottom';\n var _anchorRect_bottom;\n anchor.offset = ((_anchorRect_bottom = anchorRect === null || anchorRect === void 0 ? void 0 : anchorRect.bottom) !== null && _anchorRect_bottom !== void 0 ? _anchorRect_bottom : 0) - scrollRect.bottom;\n }\n }\n // Always reset the overlay's previous max height if not defined by the user so that we can compensate for\n // RAC collections populating after a second render and properly set a correct max height + positioning when it populates.\n let overlay = overlayRef.current;\n if (!maxHeight && overlayRef.current) {\n var _window_visualViewport;\n overlay.style.top = '0px';\n overlay.style.bottom = '';\n var _window_visualViewport_height;\n overlay.style.maxHeight = ((_window_visualViewport_height = (_window_visualViewport = window.visualViewport) === null || _window_visualViewport === void 0 ? void 0 : _window_visualViewport.height) !== null && _window_visualViewport_height !== void 0 ? _window_visualViewport_height : window.innerHeight) + 'px';\n }\n let position = (0, $edcf132a9284368a$export$b3ceb0cbf1056d98)({\n placement: $2a41e45df1593e64$var$translateRTL(placement, direction),\n overlayNode: overlayRef.current,\n targetNode: targetRef.current,\n scrollNode: scrollRef.current || overlayRef.current,\n padding: containerPadding,\n shouldFlip: shouldFlip,\n boundaryElement: boundaryElement,\n offset: offset,\n crossOffset: crossOffset,\n maxHeight: maxHeight,\n arrowSize: arrowSize,\n arrowBoundaryOffset: arrowBoundaryOffset\n });\n if (!position.position) return;\n // Modify overlay styles directly so positioning happens immediately without the need of a second render\n // This is so we don't have to delay autoFocus scrolling or delay applying preventScroll for popovers\n overlay.style.top = '';\n overlay.style.bottom = '';\n overlay.style.left = '';\n overlay.style.right = '';\n Object.keys(position.position).forEach((key)=>overlay.style[key] = position.position[key] + 'px');\n overlay.style.maxHeight = position.maxHeight != null ? position.maxHeight + 'px' : '';\n // Restore scroll position relative to anchor element.\n if (anchor && document.activeElement && scrollRef.current) {\n let anchorRect = document.activeElement.getBoundingClientRect();\n let scrollRect = scrollRef.current.getBoundingClientRect();\n let newOffset = anchorRect[anchor.type] - scrollRect[anchor.type];\n scrollRef.current.scrollTop += newOffset - anchor.offset;\n }\n // Trigger a set state for a second render anyway for arrow positioning\n setPosition(position);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n // Update position when anything changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n (0, $39EOa$useLayoutEffect)(updatePosition, deps);\n // Update position on window resize\n $2a41e45df1593e64$var$useResize(updatePosition);\n // Update position when the overlay changes size (might need to flip).\n (0, $39EOa$useResizeObserver)({\n ref: overlayRef,\n onResize: updatePosition\n });\n // Update position when the target changes size (might need to flip).\n (0, $39EOa$useResizeObserver)({\n ref: targetRef,\n onResize: updatePosition\n });\n // Reposition the overlay and do not close on scroll while the visual viewport is resizing.\n // This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.\n let isResizing = (0, $39EOa$useRef)(false);\n (0, $39EOa$useLayoutEffect)(()=>{\n let timeout;\n let onResize = ()=>{\n isResizing.current = true;\n clearTimeout(timeout);\n timeout = setTimeout(()=>{\n isResizing.current = false;\n }, 500);\n updatePosition();\n };\n // Only reposition the overlay if a scroll event happens immediately as a result of resize (aka the virtual keyboard has appears)\n // We don't want to reposition the overlay if the user has pinch zoomed in and is scrolling the viewport around.\n let onScroll = ()=>{\n if (isResizing.current) onResize();\n };\n $2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.addEventListener('resize', onResize);\n $2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.addEventListener('scroll', onScroll);\n return ()=>{\n $2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.removeEventListener('resize', onResize);\n $2a41e45df1593e64$var$visualViewport === null || $2a41e45df1593e64$var$visualViewport === void 0 ? void 0 : $2a41e45df1593e64$var$visualViewport.removeEventListener('scroll', onScroll);\n };\n }, [\n updatePosition\n ]);\n let close = (0, $39EOa$useCallback)(()=>{\n if (!isResizing.current) onClose === null || onClose === void 0 ? void 0 : onClose();\n }, [\n onClose,\n isResizing\n ]);\n // When scrolling a parent scrollable region of the trigger (other than the body),\n // we hide the popover. Otherwise, its position would be incorrect.\n (0, $dd149f63282afbbf$export$18fc8428861184da)({\n triggerRef: targetRef,\n isOpen: isOpen,\n onClose: onClose && close\n });\n var _position_maxHeight, _position_placement;\n return {\n overlayProps: {\n style: {\n position: 'absolute',\n zIndex: 100000,\n ...position === null || position === void 0 ? void 0 : position.position,\n maxHeight: (_position_maxHeight = position === null || position === void 0 ? void 0 : position.maxHeight) !== null && _position_maxHeight !== void 0 ? _position_maxHeight : '100vh'\n }\n },\n placement: (_position_placement = position === null || position === void 0 ? void 0 : position.placement) !== null && _position_placement !== void 0 ? _position_placement : null,\n arrowProps: {\n 'aria-hidden': 'true',\n role: 'presentation',\n style: {\n left: position === null || position === void 0 ? void 0 : position.arrowOffsetLeft,\n top: position === null || position === void 0 ? void 0 : position.arrowOffsetTop\n }\n },\n updatePosition: updatePosition\n };\n}\nfunction $2a41e45df1593e64$var$useResize(onResize) {\n (0, $39EOa$useLayoutEffect)(()=>{\n window.addEventListener('resize', onResize, false);\n return ()=>{\n window.removeEventListener('resize', onResize, false);\n };\n }, [\n onResize\n ]);\n}\nfunction $2a41e45df1593e64$var$translateRTL(position, direction) {\n if (direction === 'rtl') return position.replace('start', 'right').replace('end', 'left');\n return position.replace('start', 'left').replace('end', 'right');\n}\n\n\nexport {$2a41e45df1593e64$export$d39e1813b3bdd0e1 as useOverlayPosition};\n//# sourceMappingURL=useOverlayPosition.module.js.map\n","import {useEffectEvent as $ispOf$useEffectEvent, getOwnerDocument as $ispOf$getOwnerDocument} from \"@react-aria/utils\";\nimport {useRef as $ispOf$useRef, useEffect as $ispOf$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\nfunction $e0b6e0b68ec7f50f$export$872b660ac5a1ff98(props) {\n let { ref: ref, onInteractOutside: onInteractOutside, isDisabled: isDisabled, onInteractOutsideStart: onInteractOutsideStart } = props;\n let stateRef = (0, $ispOf$useRef)({\n isPointerDown: false,\n ignoreEmulatedMouseEvents: false\n });\n let onPointerDown = (0, $ispOf$useEffectEvent)((e)=>{\n if (onInteractOutside && $e0b6e0b68ec7f50f$var$isValidEvent(e, ref)) {\n if (onInteractOutsideStart) onInteractOutsideStart(e);\n stateRef.current.isPointerDown = true;\n }\n });\n let triggerInteractOutside = (0, $ispOf$useEffectEvent)((e)=>{\n if (onInteractOutside) onInteractOutside(e);\n });\n (0, $ispOf$useEffect)(()=>{\n let state = stateRef.current;\n if (isDisabled) return;\n const element = ref.current;\n const documentObject = (0, $ispOf$getOwnerDocument)(element);\n // Use pointer events if available. Otherwise, fall back to mouse and touch events.\n if (typeof PointerEvent !== 'undefined') {\n let onPointerUp = (e)=>{\n if (state.isPointerDown && $e0b6e0b68ec7f50f$var$isValidEvent(e, ref)) triggerInteractOutside(e);\n state.isPointerDown = false;\n };\n // changing these to capture phase fixed combobox\n documentObject.addEventListener('pointerdown', onPointerDown, true);\n documentObject.addEventListener('pointerup', onPointerUp, true);\n return ()=>{\n documentObject.removeEventListener('pointerdown', onPointerDown, true);\n documentObject.removeEventListener('pointerup', onPointerUp, true);\n };\n } else {\n let onMouseUp = (e)=>{\n if (state.ignoreEmulatedMouseEvents) state.ignoreEmulatedMouseEvents = false;\n else if (state.isPointerDown && $e0b6e0b68ec7f50f$var$isValidEvent(e, ref)) triggerInteractOutside(e);\n state.isPointerDown = false;\n };\n let onTouchEnd = (e)=>{\n state.ignoreEmulatedMouseEvents = true;\n if (state.isPointerDown && $e0b6e0b68ec7f50f$var$isValidEvent(e, ref)) triggerInteractOutside(e);\n state.isPointerDown = false;\n };\n documentObject.addEventListener('mousedown', onPointerDown, true);\n documentObject.addEventListener('mouseup', onMouseUp, true);\n documentObject.addEventListener('touchstart', onPointerDown, true);\n documentObject.addEventListener('touchend', onTouchEnd, true);\n return ()=>{\n documentObject.removeEventListener('mousedown', onPointerDown, true);\n documentObject.removeEventListener('mouseup', onMouseUp, true);\n documentObject.removeEventListener('touchstart', onPointerDown, true);\n documentObject.removeEventListener('touchend', onTouchEnd, true);\n };\n }\n }, [\n ref,\n isDisabled,\n onPointerDown,\n triggerInteractOutside\n ]);\n}\nfunction $e0b6e0b68ec7f50f$var$isValidEvent(event, ref) {\n if (event.button > 0) return false;\n if (event.target) {\n // if the event target is no longer in the document, ignore\n const ownerDocument = event.target.ownerDocument;\n if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) return false;\n // If the target is within a top layer element (e.g. toasts), ignore.\n if (event.target.closest('[data-react-aria-top-layer]')) return false;\n }\n return ref.current && !ref.current.contains(event.target);\n}\n\n\nexport {$e0b6e0b68ec7f50f$export$872b660ac5a1ff98 as useInteractOutside};\n//# sourceMappingURL=useInteractOutside.module.js.map\n","import {isElementInChildOfActiveScope as $jtpZv$isElementInChildOfActiveScope} from \"@react-aria/focus\";\nimport {useEffect as $jtpZv$useEffect} from \"react\";\nimport {useInteractOutside as $jtpZv$useInteractOutside, useFocusWithin as $jtpZv$useFocusWithin} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $a11501f3d1d39e6c$var$visibleOverlays = [];\nfunction $a11501f3d1d39e6c$export$ea8f71083e90600f(props, ref) {\n let { onClose: onClose, shouldCloseOnBlur: shouldCloseOnBlur, isOpen: isOpen, isDismissable: isDismissable = false, isKeyboardDismissDisabled: isKeyboardDismissDisabled = false, shouldCloseOnInteractOutside: shouldCloseOnInteractOutside } = props;\n // Add the overlay ref to the stack of visible overlays on mount, and remove on unmount.\n (0, $jtpZv$useEffect)(()=>{\n if (isOpen) $a11501f3d1d39e6c$var$visibleOverlays.push(ref);\n return ()=>{\n let index = $a11501f3d1d39e6c$var$visibleOverlays.indexOf(ref);\n if (index >= 0) $a11501f3d1d39e6c$var$visibleOverlays.splice(index, 1);\n };\n }, [\n isOpen,\n ref\n ]);\n // Only hide the overlay when it is the topmost visible overlay in the stack\n let onHide = ()=>{\n if ($a11501f3d1d39e6c$var$visibleOverlays[$a11501f3d1d39e6c$var$visibleOverlays.length - 1] === ref && onClose) onClose();\n };\n let onInteractOutsideStart = (e)=>{\n if (!shouldCloseOnInteractOutside || shouldCloseOnInteractOutside(e.target)) {\n if ($a11501f3d1d39e6c$var$visibleOverlays[$a11501f3d1d39e6c$var$visibleOverlays.length - 1] === ref) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n };\n let onInteractOutside = (e)=>{\n if (!shouldCloseOnInteractOutside || shouldCloseOnInteractOutside(e.target)) {\n if ($a11501f3d1d39e6c$var$visibleOverlays[$a11501f3d1d39e6c$var$visibleOverlays.length - 1] === ref) {\n e.stopPropagation();\n e.preventDefault();\n }\n onHide();\n }\n };\n // Handle the escape key\n let onKeyDown = (e)=>{\n if (e.key === 'Escape' && !isKeyboardDismissDisabled && !e.nativeEvent.isComposing) {\n e.stopPropagation();\n e.preventDefault();\n onHide();\n }\n };\n // Handle clicking outside the overlay to close it\n (0, $jtpZv$useInteractOutside)({\n ref: ref,\n onInteractOutside: isDismissable && isOpen ? onInteractOutside : undefined,\n onInteractOutsideStart: onInteractOutsideStart\n });\n let { focusWithinProps: focusWithinProps } = (0, $jtpZv$useFocusWithin)({\n isDisabled: !shouldCloseOnBlur,\n onBlurWithin: (e)=>{\n // Do not close if relatedTarget is null, which means focus is lost to the body.\n // That can happen when switching tabs, or due to a VoiceOver/Chrome bug with Control+Option+Arrow navigation.\n // Clicking on the body to close the overlay should already be handled by useInteractOutside.\n // https://github.com/adobe/react-spectrum/issues/4130\n // https://github.com/adobe/react-spectrum/issues/4922\n //\n // If focus is moving into a child focus scope (e.g. menu inside a dialog),\n // do not close the outer overlay. At this point, the active scope should\n // still be the outer overlay, since blur events run before focus.\n if (!e.relatedTarget || (0, $jtpZv$isElementInChildOfActiveScope)(e.relatedTarget)) return;\n if (!shouldCloseOnInteractOutside || shouldCloseOnInteractOutside(e.relatedTarget)) onClose === null || onClose === void 0 ? void 0 : onClose();\n }\n });\n let onPointerDownUnderlay = (e)=>{\n // fixes a firefox issue that starts text selection https://bugzilla.mozilla.org/show_bug.cgi?id=1675846\n if (e.target === e.currentTarget) e.preventDefault();\n };\n return {\n overlayProps: {\n onKeyDown: onKeyDown,\n ...focusWithinProps\n },\n underlayProps: {\n onPointerDown: onPointerDownUnderlay\n }\n };\n}\n\n\nexport {$a11501f3d1d39e6c$export$ea8f71083e90600f as useOverlay};\n//# sourceMappingURL=useOverlay.module.js.map\n","import {isScrollable as $cc38e7bd3fc7b213$export$2bb74740c4e19def} from \"./isScrollable.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $62d8ded9296f3872$export$cfa2225e87938781(node, checkForOverflow) {\n let scrollableNode = node;\n if ((0, $cc38e7bd3fc7b213$export$2bb74740c4e19def)(scrollableNode, checkForOverflow)) scrollableNode = scrollableNode.parentElement;\n while(scrollableNode && !(0, $cc38e7bd3fc7b213$export$2bb74740c4e19def)(scrollableNode, checkForOverflow))scrollableNode = scrollableNode.parentElement;\n return scrollableNode || document.scrollingElement || document.documentElement;\n}\n\n\nexport {$62d8ded9296f3872$export$cfa2225e87938781 as getScrollParent};\n//# sourceMappingURL=getScrollParent.module.js.map\n","import {useLayoutEffect as $7mMvr$useLayoutEffect, isIOS as $7mMvr$isIOS, chain as $7mMvr$chain, getScrollParent as $7mMvr$getScrollParent} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $49c51c25361d4cd2$var$visualViewport = typeof document !== 'undefined' && window.visualViewport;\n// HTML input types that do not cause the software keyboard to appear.\nconst $49c51c25361d4cd2$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n// The number of active usePreventScroll calls. Used to determine whether to revert back to the original page style/scroll position\nlet $49c51c25361d4cd2$var$preventScrollCount = 0;\nlet $49c51c25361d4cd2$var$restore;\nfunction $49c51c25361d4cd2$export$ee0f7cc6afcd1c18(options = {}) {\n let { isDisabled: isDisabled } = options;\n (0, $7mMvr$useLayoutEffect)(()=>{\n if (isDisabled) return;\n $49c51c25361d4cd2$var$preventScrollCount++;\n if ($49c51c25361d4cd2$var$preventScrollCount === 1) {\n if ((0, $7mMvr$isIOS)()) $49c51c25361d4cd2$var$restore = $49c51c25361d4cd2$var$preventScrollMobileSafari();\n else $49c51c25361d4cd2$var$restore = $49c51c25361d4cd2$var$preventScrollStandard();\n }\n return ()=>{\n $49c51c25361d4cd2$var$preventScrollCount--;\n if ($49c51c25361d4cd2$var$preventScrollCount === 0) $49c51c25361d4cd2$var$restore();\n };\n }, [\n isDisabled\n ]);\n}\n// For most browsers, all we need to do is set `overflow: hidden` on the root element, and\n// add some padding to prevent the page from shifting when the scrollbar is hidden.\nfunction $49c51c25361d4cd2$var$preventScrollStandard() {\n return (0, $7mMvr$chain)($49c51c25361d4cd2$var$setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`), $49c51c25361d4cd2$var$setStyle(document.documentElement, 'overflow', 'hidden'));\n}\n// Mobile Safari is a whole different beast. Even with overflow: hidden,\n// it still scrolls the page in many situations:\n//\n// 1. When the bottom toolbar and address bar are collapsed, page scrolling is always allowed.\n// 2. When the keyboard is visible, the viewport does not resize. Instead, the keyboard covers part of\n// it, so it becomes scrollable.\n// 3. When tapping on an input, the page always scrolls so that the input is centered in the visual viewport.\n// This may cause even fixed position elements to scroll off the screen.\n// 4. When using the next/previous buttons in the keyboard to navigate between inputs, the whole page always\n// scrolls, even if the input is inside a nested scrollable element that could be scrolled instead.\n//\n// In order to work around these cases, and prevent scrolling without jankiness, we do a few things:\n//\n// 1. Prevent default on `touchmove` events that are not in a scrollable element. This prevents touch scrolling\n// on the window.\n// 2. Set `overscroll-behavior: contain` on nested scrollable regions so they do not scroll the page when at\n// the top or bottom. Work around a bug where this does not work when the element does not actually overflow\n// by preventing default in a `touchmove` event.\n// 3. Prevent default on `touchend` events on input elements and handle focusing the element ourselves.\n// 4. When focusing an input, apply a transform to trick Safari into thinking the input is at the top\n// of the page, which prevents it from scrolling the page. After the input is focused, scroll the element\n// into view ourselves, without scrolling the whole page.\n// 5. Offset the body by the scroll position using a negative margin and scroll to the top. This should appear the\n// same visually, but makes the actual scroll position always zero. This is required to make all of the\n// above work or Safari will still try to scroll the page when focusing an input.\n// 6. As a last resort, handle window scroll events, and scroll back to the top. This can happen when attempting\n// to navigate to an input with the next/previous buttons that's outside a modal.\nfunction $49c51c25361d4cd2$var$preventScrollMobileSafari() {\n let scrollable;\n let restoreScrollableStyles;\n let onTouchStart = (e)=>{\n // Store the nearest scrollable parent element from the element that the user touched.\n scrollable = (0, $7mMvr$getScrollParent)(e.target, true);\n if (scrollable === document.documentElement && scrollable === document.body) return;\n // Prevent scrolling up when at the top and scrolling down when at the bottom\n // of a nested scrollable area, otherwise mobile Safari will start scrolling\n // the window instead.\n if (scrollable instanceof HTMLElement && window.getComputedStyle(scrollable).overscrollBehavior === 'auto') restoreScrollableStyles = $49c51c25361d4cd2$var$setStyle(scrollable, 'overscrollBehavior', 'contain');\n };\n let onTouchMove = (e)=>{\n // Prevent scrolling the window.\n if (!scrollable || scrollable === document.documentElement || scrollable === document.body) {\n e.preventDefault();\n return;\n }\n // overscroll-behavior should prevent scroll chaining, but currently does not\n // if the element doesn't actually overflow. https://bugs.webkit.org/show_bug.cgi?id=243452\n // This checks that both the width and height do not overflow, otherwise we might\n // block horizontal scrolling too. In that case, adding `touch-action: pan-x` to\n // the element will prevent vertical page scrolling. We can't add that automatically\n // because it must be set before the touchstart event.\n if (scrollable.scrollHeight === scrollable.clientHeight && scrollable.scrollWidth === scrollable.clientWidth) e.preventDefault();\n };\n let onTouchEnd = (e)=>{\n let target = e.target;\n // Apply this change if we're not already focused on the target element\n if ($49c51c25361d4cd2$var$willOpenKeyboard(target) && target !== document.activeElement) {\n e.preventDefault();\n setupStyles();\n // Apply a transform to trick Safari into thinking the input is at the top of the page\n // so it doesn't try to scroll it into view. When tapping on an input, this needs to\n // be done before the \"focus\" event, so we have to focus the element ourselves.\n target.style.transform = 'translateY(-2000px)';\n target.focus();\n requestAnimationFrame(()=>{\n target.style.transform = '';\n });\n }\n if (restoreScrollableStyles) restoreScrollableStyles();\n };\n let onFocus = (e)=>{\n let target = e.target;\n if ($49c51c25361d4cd2$var$willOpenKeyboard(target)) {\n setupStyles();\n // Transform also needs to be applied in the focus event in cases where focus moves\n // other than tapping on an input directly, e.g. the next/previous buttons in the\n // software keyboard. In these cases, it seems applying the transform in the focus event\n // is good enough, whereas when tapping an input, it must be done before the focus event. 🤷â€â™‚ï¸\n target.style.transform = 'translateY(-2000px)';\n requestAnimationFrame(()=>{\n target.style.transform = '';\n // This will have prevented the browser from scrolling the focused element into view,\n // so we need to do this ourselves in a way that doesn't cause the whole page to scroll.\n if ($49c51c25361d4cd2$var$visualViewport) {\n if ($49c51c25361d4cd2$var$visualViewport.height < window.innerHeight) // If the keyboard is already visible, do this after one additional frame\n // to wait for the transform to be removed.\n requestAnimationFrame(()=>{\n $49c51c25361d4cd2$var$scrollIntoView(target);\n });\n else // Otherwise, wait for the visual viewport to resize before scrolling so we can\n // measure the correct position to scroll to.\n $49c51c25361d4cd2$var$visualViewport.addEventListener('resize', ()=>$49c51c25361d4cd2$var$scrollIntoView(target), {\n once: true\n });\n }\n });\n }\n };\n let restoreStyles = null;\n let setupStyles = ()=>{\n if (restoreStyles) return;\n let onWindowScroll = ()=>{\n // Last resort. If the window scrolled, scroll it back to the top.\n // It should always be at the top because the body will have a negative margin (see below).\n window.scrollTo(0, 0);\n };\n // Record the original scroll position so we can restore it.\n // Then apply a negative margin to the body to offset it by the scroll position. This will\n // enable us to scroll the window to the top, which is required for the rest of this to work.\n let scrollX = window.pageXOffset;\n let scrollY = window.pageYOffset;\n restoreStyles = (0, $7mMvr$chain)($49c51c25361d4cd2$var$addEvent(window, 'scroll', onWindowScroll), $49c51c25361d4cd2$var$setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`), $49c51c25361d4cd2$var$setStyle(document.documentElement, 'overflow', 'hidden'), $49c51c25361d4cd2$var$setStyle(document.body, 'marginTop', `-${scrollY}px`), ()=>{\n window.scrollTo(scrollX, scrollY);\n });\n // Scroll to the top. The negative margin on the body will make this appear the same.\n window.scrollTo(0, 0);\n };\n let removeEvents = (0, $7mMvr$chain)($49c51c25361d4cd2$var$addEvent(document, 'touchstart', onTouchStart, {\n passive: false,\n capture: true\n }), $49c51c25361d4cd2$var$addEvent(document, 'touchmove', onTouchMove, {\n passive: false,\n capture: true\n }), $49c51c25361d4cd2$var$addEvent(document, 'touchend', onTouchEnd, {\n passive: false,\n capture: true\n }), $49c51c25361d4cd2$var$addEvent(document, 'focus', onFocus, true));\n return ()=>{\n // Restore styles and scroll the page back to where it was.\n restoreScrollableStyles === null || restoreScrollableStyles === void 0 ? void 0 : restoreScrollableStyles();\n restoreStyles === null || restoreStyles === void 0 ? void 0 : restoreStyles();\n removeEvents();\n };\n}\n// Sets a CSS property on an element, and returns a function to revert it to the previous value.\nfunction $49c51c25361d4cd2$var$setStyle(element, style, value) {\n let cur = element.style[style];\n element.style[style] = value;\n return ()=>{\n element.style[style] = cur;\n };\n}\n// Adds an event listener to an element, and returns a function to remove it.\nfunction $49c51c25361d4cd2$var$addEvent(target, event, handler, options) {\n // internal function, so it's ok to ignore the difficult to fix type error\n // @ts-ignore\n target.addEventListener(event, handler, options);\n return ()=>{\n // @ts-ignore\n target.removeEventListener(event, handler, options);\n };\n}\nfunction $49c51c25361d4cd2$var$scrollIntoView(target) {\n let root = document.scrollingElement || document.documentElement;\n let nextTarget = target;\n while(nextTarget && nextTarget !== root){\n // Find the parent scrollable element and adjust the scroll position if the target is not already in view.\n let scrollable = (0, $7mMvr$getScrollParent)(nextTarget);\n if (scrollable !== document.documentElement && scrollable !== document.body && scrollable !== nextTarget) {\n let scrollableTop = scrollable.getBoundingClientRect().top;\n let targetTop = nextTarget.getBoundingClientRect().top;\n if (targetTop > scrollableTop + nextTarget.clientHeight) scrollable.scrollTop += targetTop - scrollableTop;\n }\n nextTarget = scrollable.parentElement;\n }\n}\nfunction $49c51c25361d4cd2$var$willOpenKeyboard(target) {\n return target instanceof HTMLInputElement && !$49c51c25361d4cd2$var$nonTextInputTypes.has(target.type) || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;\n}\n\n\nexport {$49c51c25361d4cd2$export$ee0f7cc6afcd1c18 as usePreventScroll};\n//# sourceMappingURL=usePreventScroll.module.js.map\n","import {ariaHideOutside as $5e3802645cc19319$export$1c3ebcada18427bf} from \"./ariaHideOutside.mjs\";\nimport {useOverlayPosition as $2a41e45df1593e64$export$d39e1813b3bdd0e1} from \"./useOverlayPosition.mjs\";\nimport {useOverlay as $a11501f3d1d39e6c$export$ea8f71083e90600f} from \"./useOverlay.mjs\";\nimport {usePreventScroll as $49c51c25361d4cd2$export$ee0f7cc6afcd1c18} from \"./usePreventScroll.mjs\";\nimport {useLayoutEffect as $m0yab$useLayoutEffect, mergeProps as $m0yab$mergeProps} from \"@react-aria/utils\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $f2f8a6077418541e$export$542a6fd13ac93354(props, state) {\n let { triggerRef: triggerRef, popoverRef: popoverRef, isNonModal: isNonModal, isKeyboardDismissDisabled: isKeyboardDismissDisabled, shouldCloseOnInteractOutside: shouldCloseOnInteractOutside, ...otherProps } = props;\n let { overlayProps: overlayProps, underlayProps: underlayProps } = (0, $a11501f3d1d39e6c$export$ea8f71083e90600f)({\n // If popover is in the top layer, it should not prevent other popovers from being dismissed.\n isOpen: state.isOpen && !otherProps['data-react-aria-top-layer'],\n onClose: state.close,\n shouldCloseOnBlur: true,\n isDismissable: !isNonModal,\n isKeyboardDismissDisabled: isKeyboardDismissDisabled,\n shouldCloseOnInteractOutside: shouldCloseOnInteractOutside\n }, popoverRef);\n let { overlayProps: positionProps, arrowProps: arrowProps, placement: placement } = (0, $2a41e45df1593e64$export$d39e1813b3bdd0e1)({\n ...otherProps,\n targetRef: triggerRef,\n overlayRef: popoverRef,\n isOpen: state.isOpen,\n onClose: isNonModal ? state.close : undefined\n });\n (0, $49c51c25361d4cd2$export$ee0f7cc6afcd1c18)({\n isDisabled: isNonModal || !state.isOpen\n });\n (0, $m0yab$useLayoutEffect)(()=>{\n if (state.isOpen && !isNonModal && popoverRef.current) return (0, $5e3802645cc19319$export$1c3ebcada18427bf)([\n popoverRef.current\n ]);\n }, [\n isNonModal,\n state.isOpen,\n popoverRef\n ]);\n return {\n popoverProps: (0, $m0yab$mergeProps)(overlayProps, positionProps),\n arrowProps: arrowProps,\n underlayProps: underlayProps,\n placement: placement\n };\n}\n\n\nexport {$f2f8a6077418541e$export$542a6fd13ac93354 as usePopover};\n//# sourceMappingURL=usePopover.module.js.map\n","var $03c9a1a10de12f06$exports = {};\n$03c9a1a10de12f06$exports = {\n \"Clear search\": `\\u{645}\\u{633}\\u{62D} \\u{627}\\u{644}\\u{628}\\u{62D}\\u{62B}`\n};\n\n\nexport {$03c9a1a10de12f06$exports as default};\n//# sourceMappingURL=ar-AE.module.js.map\n","import $03K6r$arAEmodulejs from \"./ar-AE.mjs\";\nimport $03K6r$bgBGmodulejs from \"./bg-BG.mjs\";\nimport $03K6r$csCZmodulejs from \"./cs-CZ.mjs\";\nimport $03K6r$daDKmodulejs from \"./da-DK.mjs\";\nimport $03K6r$deDEmodulejs from \"./de-DE.mjs\";\nimport $03K6r$elGRmodulejs from \"./el-GR.mjs\";\nimport $03K6r$enUSmodulejs from \"./en-US.mjs\";\nimport $03K6r$esESmodulejs from \"./es-ES.mjs\";\nimport $03K6r$etEEmodulejs from \"./et-EE.mjs\";\nimport $03K6r$fiFImodulejs from \"./fi-FI.mjs\";\nimport $03K6r$frFRmodulejs from \"./fr-FR.mjs\";\nimport $03K6r$heILmodulejs from \"./he-IL.mjs\";\nimport $03K6r$hrHRmodulejs from \"./hr-HR.mjs\";\nimport $03K6r$huHUmodulejs from \"./hu-HU.mjs\";\nimport $03K6r$itITmodulejs from \"./it-IT.mjs\";\nimport $03K6r$jaJPmodulejs from \"./ja-JP.mjs\";\nimport $03K6r$koKRmodulejs from \"./ko-KR.mjs\";\nimport $03K6r$ltLTmodulejs from \"./lt-LT.mjs\";\nimport $03K6r$lvLVmodulejs from \"./lv-LV.mjs\";\nimport $03K6r$nbNOmodulejs from \"./nb-NO.mjs\";\nimport $03K6r$nlNLmodulejs from \"./nl-NL.mjs\";\nimport $03K6r$plPLmodulejs from \"./pl-PL.mjs\";\nimport $03K6r$ptBRmodulejs from \"./pt-BR.mjs\";\nimport $03K6r$ptPTmodulejs from \"./pt-PT.mjs\";\nimport $03K6r$roROmodulejs from \"./ro-RO.mjs\";\nimport $03K6r$ruRUmodulejs from \"./ru-RU.mjs\";\nimport $03K6r$skSKmodulejs from \"./sk-SK.mjs\";\nimport $03K6r$slSImodulejs from \"./sl-SI.mjs\";\nimport $03K6r$srSPmodulejs from \"./sr-SP.mjs\";\nimport $03K6r$svSEmodulejs from \"./sv-SE.mjs\";\nimport $03K6r$trTRmodulejs from \"./tr-TR.mjs\";\nimport $03K6r$ukUAmodulejs from \"./uk-UA.mjs\";\nimport $03K6r$zhCNmodulejs from \"./zh-CN.mjs\";\nimport $03K6r$zhTWmodulejs from \"./zh-TW.mjs\";\n\nvar $8112f8b883c0272d$exports = {};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$8112f8b883c0272d$exports = {\n \"ar-AE\": $03K6r$arAEmodulejs,\n \"bg-BG\": $03K6r$bgBGmodulejs,\n \"cs-CZ\": $03K6r$csCZmodulejs,\n \"da-DK\": $03K6r$daDKmodulejs,\n \"de-DE\": $03K6r$deDEmodulejs,\n \"el-GR\": $03K6r$elGRmodulejs,\n \"en-US\": $03K6r$enUSmodulejs,\n \"es-ES\": $03K6r$esESmodulejs,\n \"et-EE\": $03K6r$etEEmodulejs,\n \"fi-FI\": $03K6r$fiFImodulejs,\n \"fr-FR\": $03K6r$frFRmodulejs,\n \"he-IL\": $03K6r$heILmodulejs,\n \"hr-HR\": $03K6r$hrHRmodulejs,\n \"hu-HU\": $03K6r$huHUmodulejs,\n \"it-IT\": $03K6r$itITmodulejs,\n \"ja-JP\": $03K6r$jaJPmodulejs,\n \"ko-KR\": $03K6r$koKRmodulejs,\n \"lt-LT\": $03K6r$ltLTmodulejs,\n \"lv-LV\": $03K6r$lvLVmodulejs,\n \"nb-NO\": $03K6r$nbNOmodulejs,\n \"nl-NL\": $03K6r$nlNLmodulejs,\n \"pl-PL\": $03K6r$plPLmodulejs,\n \"pt-BR\": $03K6r$ptBRmodulejs,\n \"pt-PT\": $03K6r$ptPTmodulejs,\n \"ro-RO\": $03K6r$roROmodulejs,\n \"ru-RU\": $03K6r$ruRUmodulejs,\n \"sk-SK\": $03K6r$skSKmodulejs,\n \"sl-SI\": $03K6r$slSImodulejs,\n \"sr-SP\": $03K6r$srSPmodulejs,\n \"sv-SE\": $03K6r$svSEmodulejs,\n \"tr-TR\": $03K6r$trTRmodulejs,\n \"uk-UA\": $03K6r$ukUAmodulejs,\n \"zh-CN\": $03K6r$zhCNmodulejs,\n \"zh-TW\": $03K6r$zhTWmodulejs\n};\n\n\nexport {$8112f8b883c0272d$exports as default};\n//# sourceMappingURL=intlStrings.module.js.map\n","var $4da0c2ffa4ba4159$exports = {};\n$4da0c2ffa4ba4159$exports = {\n \"Clear search\": `\\u{418}\\u{437}\\u{447}\\u{438}\\u{441}\\u{442}\\u{432}\\u{430}\\u{43D}\\u{435} \\u{43D}\\u{430} \\u{442}\\u{44A}\\u{440}\\u{441}\\u{435}\\u{43D}\\u{435}`\n};\n\n\nexport {$4da0c2ffa4ba4159$exports as default};\n//# sourceMappingURL=bg-BG.module.js.map\n","var $8c59fd0c2c96821b$exports = {};\n$8c59fd0c2c96821b$exports = {\n \"Clear search\": `Vymazat hled\\xe1n\\xed`\n};\n\n\nexport {$8c59fd0c2c96821b$exports as default};\n//# sourceMappingURL=cs-CZ.module.js.map\n","var $0a371f9c1df8120f$exports = {};\n$0a371f9c1df8120f$exports = {\n \"Clear search\": `Ryd s\\xf8gning`\n};\n\n\nexport {$0a371f9c1df8120f$exports as default};\n//# sourceMappingURL=da-DK.module.js.map\n","var $67f4d0b0de9f8a52$exports = {};\n$67f4d0b0de9f8a52$exports = {\n \"Clear search\": `Suche zur\\xfccksetzen`\n};\n\n\nexport {$67f4d0b0de9f8a52$exports as default};\n//# sourceMappingURL=de-DE.module.js.map\n","var $72a312d948f0214b$exports = {};\n$72a312d948f0214b$exports = {\n \"Clear search\": `\\u{391}\\u{3C0}\\u{3B1}\\u{3BB}\\u{3BF}\\u{3B9}\\u{3C6}\\u{3AE} \\u{3B1}\\u{3BD}\\u{3B1}\\u{3B6}\\u{3AE}\\u{3C4}\\u{3B7}\\u{3C3}\\u{3B7}\\u{3C2}`\n};\n\n\nexport {$72a312d948f0214b$exports as default};\n//# sourceMappingURL=el-GR.module.js.map\n","var $5012d21d933388c1$exports = {};\n$5012d21d933388c1$exports = {\n \"Clear search\": `Clear search`\n};\n\n\nexport {$5012d21d933388c1$exports as default};\n//# sourceMappingURL=en-US.module.js.map\n","var $0159854399308e2e$exports = {};\n$0159854399308e2e$exports = {\n \"Clear search\": `Borrar b\\xfasqueda`\n};\n\n\nexport {$0159854399308e2e$exports as default};\n//# sourceMappingURL=es-ES.module.js.map\n","var $390613981d970276$exports = {};\n$390613981d970276$exports = {\n \"Clear search\": `T\\xfchjenda otsing`\n};\n\n\nexport {$390613981d970276$exports as default};\n//# sourceMappingURL=et-EE.module.js.map\n","var $961ae0833f811705$exports = {};\n$961ae0833f811705$exports = {\n \"Clear search\": `Tyhjenn\\xe4 haku`\n};\n\n\nexport {$961ae0833f811705$exports as default};\n//# sourceMappingURL=fi-FI.module.js.map\n","var $26d76742decfd829$exports = {};\n$26d76742decfd829$exports = {\n \"Clear search\": `Effacer la recherche`\n};\n\n\nexport {$26d76742decfd829$exports as default};\n//# sourceMappingURL=fr-FR.module.js.map\n","var $92ef254c82a5c769$exports = {};\n$92ef254c82a5c769$exports = {\n \"Clear search\": `\\u{5E0}\\u{5E7}\\u{5D4} \\u{5D7}\\u{5D9}\\u{5E4}\\u{5D5}\\u{5E9}`\n};\n\n\nexport {$92ef254c82a5c769$exports as default};\n//# sourceMappingURL=he-IL.module.js.map\n","var $e0321b43bdefb8b3$exports = {};\n$e0321b43bdefb8b3$exports = {\n \"Clear search\": `Obri\\u{161}i pretragu`\n};\n\n\nexport {$e0321b43bdefb8b3$exports as default};\n//# sourceMappingURL=hr-HR.module.js.map\n","var $0c1ee0b8d50940d9$exports = {};\n$0c1ee0b8d50940d9$exports = {\n \"Clear search\": `Keres\\xe9s t\\xf6rl\\xe9se`\n};\n\n\nexport {$0c1ee0b8d50940d9$exports as default};\n//# sourceMappingURL=hu-HU.module.js.map\n","var $b09198915a38946f$exports = {};\n$b09198915a38946f$exports = {\n \"Clear search\": `Cancella ricerca`\n};\n\n\nexport {$b09198915a38946f$exports as default};\n//# sourceMappingURL=it-IT.module.js.map\n","var $3a9a3d180c3145c0$exports = {};\n$3a9a3d180c3145c0$exports = {\n \"Clear search\": `\\u{691C}\\u{7D22}\\u{3092}\\u{30AF}\\u{30EA}\\u{30A2}`\n};\n\n\nexport {$3a9a3d180c3145c0$exports as default};\n//# sourceMappingURL=ja-JP.module.js.map\n","var $b7a611726449f4a3$exports = {};\n$b7a611726449f4a3$exports = {\n \"Clear search\": `\\u{AC80}\\u{C0C9} \\u{C9C0}\\u{C6B0}\\u{AE30}`\n};\n\n\nexport {$b7a611726449f4a3$exports as default};\n//# sourceMappingURL=ko-KR.module.js.map\n","var $d9a3d49db610dd5c$exports = {};\n$d9a3d49db610dd5c$exports = {\n \"Clear search\": `I\\u{161}valyti ie\\u{161}k\\u{105}`\n};\n\n\nexport {$d9a3d49db610dd5c$exports as default};\n//# sourceMappingURL=lt-LT.module.js.map\n","var $3ab64b73ea27c23a$exports = {};\n$3ab64b73ea27c23a$exports = {\n \"Clear search\": `Not\\u{12B}r\\u{12B}t mekl\\u{113}\\u{161}anu`\n};\n\n\nexport {$3ab64b73ea27c23a$exports as default};\n//# sourceMappingURL=lv-LV.module.js.map\n","var $bf5cce1b47d23baf$exports = {};\n$bf5cce1b47d23baf$exports = {\n \"Clear search\": `T\\xf8m s\\xf8k`\n};\n\n\nexport {$bf5cce1b47d23baf$exports as default};\n//# sourceMappingURL=nb-NO.module.js.map\n","var $4e0c9a9a010e4598$exports = {};\n$4e0c9a9a010e4598$exports = {\n \"Clear search\": `Zoekactie wissen`\n};\n\n\nexport {$4e0c9a9a010e4598$exports as default};\n//# sourceMappingURL=nl-NL.module.js.map\n","var $63cf4a75ec270508$exports = {};\n$63cf4a75ec270508$exports = {\n \"Clear search\": `Wyczy\\u{15B}\\u{107} zawarto\\u{15B}\\u{107} wyszukiwania`\n};\n\n\nexport {$63cf4a75ec270508$exports as default};\n//# sourceMappingURL=pl-PL.module.js.map\n","var $083b0cad27fdbd06$exports = {};\n$083b0cad27fdbd06$exports = {\n \"Clear search\": `Limpar pesquisa`\n};\n\n\nexport {$083b0cad27fdbd06$exports as default};\n//# sourceMappingURL=pt-BR.module.js.map\n","var $1b7f0864d830ba6d$exports = {};\n$1b7f0864d830ba6d$exports = {\n \"Clear search\": `Limpar pesquisa`\n};\n\n\nexport {$1b7f0864d830ba6d$exports as default};\n//# sourceMappingURL=pt-PT.module.js.map\n","var $d6d2588377fc9718$exports = {};\n$d6d2588377fc9718$exports = {\n \"Clear search\": `\\u{15E}terge\\u{163}i c\\u{103}utarea`\n};\n\n\nexport {$d6d2588377fc9718$exports as default};\n//# sourceMappingURL=ro-RO.module.js.map\n","var $701c918a4653e946$exports = {};\n$701c918a4653e946$exports = {\n \"Clear search\": `\\u{41E}\\u{447}\\u{438}\\u{441}\\u{442}\\u{438}\\u{442}\\u{44C} \\u{43F}\\u{43E}\\u{438}\\u{441}\\u{43A}`\n};\n\n\nexport {$701c918a4653e946$exports as default};\n//# sourceMappingURL=ru-RU.module.js.map\n","var $7cacc29a1e5f4fbe$exports = {};\n$7cacc29a1e5f4fbe$exports = {\n \"Clear search\": `Vymaza\\u{165} vyh\\u{13E}ad\\xe1vanie`\n};\n\n\nexport {$7cacc29a1e5f4fbe$exports as default};\n//# sourceMappingURL=sk-SK.module.js.map\n","var $c63231bcc300d0df$exports = {};\n$c63231bcc300d0df$exports = {\n \"Clear search\": `Po\\u{10D}isti iskanje`\n};\n\n\nexport {$c63231bcc300d0df$exports as default};\n//# sourceMappingURL=sl-SI.module.js.map\n","var $b61510478bc0e6f6$exports = {};\n$b61510478bc0e6f6$exports = {\n \"Clear search\": `Obri\\u{161}i pretragu`\n};\n\n\nexport {$b61510478bc0e6f6$exports as default};\n//# sourceMappingURL=sr-SP.module.js.map\n","var $ce325e6dd3f9c37a$exports = {};\n$ce325e6dd3f9c37a$exports = {\n \"Clear search\": `Rensa s\\xf6kning`\n};\n\n\nexport {$ce325e6dd3f9c37a$exports as default};\n//# sourceMappingURL=sv-SE.module.js.map\n","var $1f7e1cf2285af2b2$exports = {};\n$1f7e1cf2285af2b2$exports = {\n \"Clear search\": `Aramay\\u{131} temizle`\n};\n\n\nexport {$1f7e1cf2285af2b2$exports as default};\n//# sourceMappingURL=tr-TR.module.js.map\n","var $2d999353ca652e34$exports = {};\n$2d999353ca652e34$exports = {\n \"Clear search\": `\\u{41E}\\u{447}\\u{438}\\u{441}\\u{442}\\u{438}\\u{442}\\u{438} \\u{43F}\\u{43E}\\u{448}\\u{443}\\u{43A}`\n};\n\n\nexport {$2d999353ca652e34$exports as default};\n//# sourceMappingURL=uk-UA.module.js.map\n","var $117b536bfb1ae554$exports = {};\n$117b536bfb1ae554$exports = {\n \"Clear search\": `\\u{6E05}\\u{9664}\\u{641C}\\u{7D22}`\n};\n\n\nexport {$117b536bfb1ae554$exports as default};\n//# sourceMappingURL=zh-CN.module.js.map\n","var $525f6fa4ac26e278$exports = {};\n$525f6fa4ac26e278$exports = {\n \"Clear search\": `\\u{6E05}\\u{9664}\\u{641C}\\u{5C0B}\\u{689D}\\u{4EF6}`\n};\n\n\nexport {$525f6fa4ac26e278$exports as default};\n//# sourceMappingURL=zh-TW.module.js.map\n","import $kTEqN$intlStringsmodulejs from \"./intlStrings.mjs\";\nimport {chain as $kTEqN$chain} from \"@react-aria/utils\";\nimport {useLocalizedStringFormatter as $kTEqN$useLocalizedStringFormatter} from \"@react-aria/i18n\";\nimport {useTextField as $kTEqN$useTextField} from \"@react-aria/textfield\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $4d52238874b24f86$export$9bb30bbe003b82e0(props, state, inputRef) {\n let stringFormatter = (0, $kTEqN$useLocalizedStringFormatter)((0, ($parcel$interopDefault($kTEqN$intlStringsmodulejs))), '@react-aria/searchfield');\n let { isDisabled: isDisabled, isReadOnly: isReadOnly, onSubmit: onSubmit, onClear: onClear, type: type = 'search' } = props;\n let onKeyDown = (e)=>{\n const key = e.key;\n if (key === 'Enter' && (isDisabled || isReadOnly)) e.preventDefault();\n if (isDisabled || isReadOnly) return;\n // for backward compatibility;\n // otherwise, \"Enter\" on an input would trigger a form submit, the default browser behavior\n if (key === 'Enter' && onSubmit) {\n e.preventDefault();\n onSubmit(state.value);\n }\n if (key === 'Escape') {\n if (state.value === '') e.continuePropagation();\n else {\n state.setValue('');\n if (onClear) onClear();\n }\n }\n };\n let onClearButtonClick = ()=>{\n state.setValue('');\n if (onClear) onClear();\n };\n let onPressStart = ()=>{\n var // this is in PressStart for mobile so that touching the clear button doesn't remove focus from\n // the input and close the keyboard\n _inputRef_current;\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.focus();\n };\n let { labelProps: labelProps, inputProps: inputProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps, ...validation } = (0, $kTEqN$useTextField)({\n ...props,\n value: state.value,\n onChange: state.setValue,\n onKeyDown: !isReadOnly ? (0, $kTEqN$chain)(onKeyDown, props.onKeyDown) : props.onKeyDown,\n type: type\n }, inputRef);\n return {\n labelProps: labelProps,\n inputProps: {\n ...inputProps,\n // already handled by useSearchFieldState\n defaultValue: undefined\n },\n clearButtonProps: {\n 'aria-label': stringFormatter.format('Clear search'),\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n isDisabled: isDisabled || isReadOnly,\n onPress: onClearButtonClick,\n onPressStart: onPressStart\n },\n descriptionProps: descriptionProps,\n errorMessageProps: errorMessageProps,\n ...validation\n };\n}\n\n\nexport {$4d52238874b24f86$export$9bb30bbe003b82e0 as useSearchField};\n//# sourceMappingURL=useSearchField.module.js.map\n","/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $657e4dc4a6e88df0$export$8f5ed9ff9f511381 {\n getItemRect(key) {\n let container = this.ref.current;\n if (!container) return null;\n let item = key != null ? container.querySelector(`[data-key=\"${CSS.escape(key.toString())}\"]`) : null;\n if (!item) return null;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n return {\n x: itemRect.left - containerRect.left + container.scrollLeft,\n y: itemRect.top - containerRect.top + container.scrollTop,\n width: itemRect.width,\n height: itemRect.height\n };\n }\n getContentSize() {\n let container = this.ref.current;\n var _container_scrollWidth, _container_scrollHeight;\n return {\n width: (_container_scrollWidth = container === null || container === void 0 ? void 0 : container.scrollWidth) !== null && _container_scrollWidth !== void 0 ? _container_scrollWidth : 0,\n height: (_container_scrollHeight = container === null || container === void 0 ? void 0 : container.scrollHeight) !== null && _container_scrollHeight !== void 0 ? _container_scrollHeight : 0\n };\n }\n getVisibleRect() {\n let container = this.ref.current;\n var _container_scrollLeft, _container_scrollTop, _container_offsetWidth, _container_offsetHeight;\n return {\n x: (_container_scrollLeft = container === null || container === void 0 ? void 0 : container.scrollLeft) !== null && _container_scrollLeft !== void 0 ? _container_scrollLeft : 0,\n y: (_container_scrollTop = container === null || container === void 0 ? void 0 : container.scrollTop) !== null && _container_scrollTop !== void 0 ? _container_scrollTop : 0,\n width: (_container_offsetWidth = container === null || container === void 0 ? void 0 : container.offsetWidth) !== null && _container_offsetWidth !== void 0 ? _container_offsetWidth : 0,\n height: (_container_offsetHeight = container === null || container === void 0 ? void 0 : container.offsetHeight) !== null && _container_offsetHeight !== void 0 ? _container_offsetHeight : 0\n };\n }\n constructor(ref){\n this.ref = ref;\n }\n}\n\n\nexport {$657e4dc4a6e88df0$export$8f5ed9ff9f511381 as DOMLayoutDelegate};\n//# sourceMappingURL=DOMLayoutDelegate.module.js.map\n","import {DOMLayoutDelegate as $657e4dc4a6e88df0$export$8f5ed9ff9f511381} from \"./DOMLayoutDelegate.mjs\";\nimport {isScrollable as $eak97$isScrollable} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $2a25aae57d74318e$export$a05409b8bb224a5a {\n isDisabled(item) {\n var _item_props;\n return this.disabledBehavior === 'all' && (((_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.isDisabled) || this.disabledKeys.has(item.key));\n }\n findNextNonDisabled(key, getNext) {\n let nextKey = key;\n while(nextKey != null){\n let item = this.collection.getItem(nextKey);\n if ((item === null || item === void 0 ? void 0 : item.type) === 'item' && !this.isDisabled(item)) return nextKey;\n nextKey = getNext(nextKey);\n }\n return null;\n }\n getNextKey(key) {\n let nextKey = key;\n nextKey = this.collection.getKeyAfter(nextKey);\n return this.findNextNonDisabled(nextKey, (key)=>this.collection.getKeyAfter(key));\n }\n getPreviousKey(key) {\n let nextKey = key;\n nextKey = this.collection.getKeyBefore(nextKey);\n return this.findNextNonDisabled(nextKey, (key)=>this.collection.getKeyBefore(key));\n }\n findKey(key, nextKey, shouldSkip) {\n let tempKey = key;\n let itemRect = this.layoutDelegate.getItemRect(tempKey);\n if (!itemRect || tempKey == null) return null;\n // Find the item above or below in the same column.\n let prevRect = itemRect;\n do {\n tempKey = nextKey(tempKey);\n if (tempKey == null) break;\n itemRect = this.layoutDelegate.getItemRect(tempKey);\n }while (itemRect && shouldSkip(prevRect, itemRect) && tempKey != null);\n return tempKey;\n }\n isSameRow(prevRect, itemRect) {\n return prevRect.y === itemRect.y || prevRect.x !== itemRect.x;\n }\n isSameColumn(prevRect, itemRect) {\n return prevRect.x === itemRect.x || prevRect.y !== itemRect.y;\n }\n getKeyBelow(key) {\n if (this.layout === 'grid' && this.orientation === 'vertical') return this.findKey(key, (key)=>this.getNextKey(key), this.isSameRow);\n else return this.getNextKey(key);\n }\n getKeyAbove(key) {\n if (this.layout === 'grid' && this.orientation === 'vertical') return this.findKey(key, (key)=>this.getPreviousKey(key), this.isSameRow);\n else return this.getPreviousKey(key);\n }\n getNextColumn(key, right) {\n return right ? this.getPreviousKey(key) : this.getNextKey(key);\n }\n getKeyRightOf(key) {\n // This is a temporary solution for CardView until we refactor useSelectableCollection.\n // https://github.com/orgs/adobe/projects/19/views/32?pane=issue&itemId=77825042\n let layoutDelegateMethod = this.direction === 'ltr' ? 'getKeyRightOf' : 'getKeyLeftOf';\n if (this.layoutDelegate[layoutDelegateMethod]) {\n key = this.layoutDelegate[layoutDelegateMethod](key);\n return this.findNextNonDisabled(key, (key)=>this.layoutDelegate[layoutDelegateMethod](key));\n }\n if (this.layout === 'grid') {\n if (this.orientation === 'vertical') return this.getNextColumn(key, this.direction === 'rtl');\n else return this.findKey(key, (key)=>this.getNextColumn(key, this.direction === 'rtl'), this.isSameColumn);\n } else if (this.orientation === 'horizontal') return this.getNextColumn(key, this.direction === 'rtl');\n return null;\n }\n getKeyLeftOf(key) {\n let layoutDelegateMethod = this.direction === 'ltr' ? 'getKeyLeftOf' : 'getKeyRightOf';\n if (this.layoutDelegate[layoutDelegateMethod]) {\n key = this.layoutDelegate[layoutDelegateMethod](key);\n return this.findNextNonDisabled(key, (key)=>this.layoutDelegate[layoutDelegateMethod](key));\n }\n if (this.layout === 'grid') {\n if (this.orientation === 'vertical') return this.getNextColumn(key, this.direction === 'ltr');\n else return this.findKey(key, (key)=>this.getNextColumn(key, this.direction === 'ltr'), this.isSameColumn);\n } else if (this.orientation === 'horizontal') return this.getNextColumn(key, this.direction === 'ltr');\n return null;\n }\n getFirstKey() {\n let key = this.collection.getFirstKey();\n return this.findNextNonDisabled(key, (key)=>this.collection.getKeyAfter(key));\n }\n getLastKey() {\n let key = this.collection.getLastKey();\n return this.findNextNonDisabled(key, (key)=>this.collection.getKeyBefore(key));\n }\n getKeyPageAbove(key) {\n let menu = this.ref.current;\n let itemRect = this.layoutDelegate.getItemRect(key);\n if (!itemRect) return null;\n if (menu && !(0, $eak97$isScrollable)(menu)) return this.getFirstKey();\n let nextKey = key;\n if (this.orientation === 'horizontal') {\n let pageX = Math.max(0, itemRect.x + itemRect.width - this.layoutDelegate.getVisibleRect().width);\n while(itemRect && itemRect.x > pageX && nextKey != null){\n nextKey = this.getKeyAbove(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n } else {\n let pageY = Math.max(0, itemRect.y + itemRect.height - this.layoutDelegate.getVisibleRect().height);\n while(itemRect && itemRect.y > pageY && nextKey != null){\n nextKey = this.getKeyAbove(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n }\n return nextKey !== null && nextKey !== void 0 ? nextKey : this.getFirstKey();\n }\n getKeyPageBelow(key) {\n let menu = this.ref.current;\n let itemRect = this.layoutDelegate.getItemRect(key);\n if (!itemRect) return null;\n if (menu && !(0, $eak97$isScrollable)(menu)) return this.getLastKey();\n let nextKey = key;\n if (this.orientation === 'horizontal') {\n let pageX = Math.min(this.layoutDelegate.getContentSize().width, itemRect.y - itemRect.width + this.layoutDelegate.getVisibleRect().width);\n while(itemRect && itemRect.x < pageX && nextKey != null){\n nextKey = this.getKeyBelow(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n } else {\n let pageY = Math.min(this.layoutDelegate.getContentSize().height, itemRect.y - itemRect.height + this.layoutDelegate.getVisibleRect().height);\n while(itemRect && itemRect.y < pageY && nextKey != null){\n nextKey = this.getKeyBelow(nextKey);\n itemRect = nextKey == null ? null : this.layoutDelegate.getItemRect(nextKey);\n }\n }\n return nextKey !== null && nextKey !== void 0 ? nextKey : this.getLastKey();\n }\n getKeyForSearch(search, fromKey) {\n if (!this.collator) return null;\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while(key != null){\n let item = collection.getItem(key);\n if (!item) return null;\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) return key;\n key = this.getNextKey(key);\n }\n return null;\n }\n constructor(...args){\n if (args.length === 1) {\n let opts = args[0];\n this.collection = opts.collection;\n this.ref = opts.ref;\n this.collator = opts.collator;\n this.disabledKeys = opts.disabledKeys || new Set();\n this.disabledBehavior = opts.disabledBehavior || 'all';\n this.orientation = opts.orientation || 'vertical';\n this.direction = opts.direction;\n this.layout = opts.layout || 'stack';\n this.layoutDelegate = opts.layoutDelegate || new (0, $657e4dc4a6e88df0$export$8f5ed9ff9f511381)(opts.ref);\n } else {\n this.collection = args[0];\n this.disabledKeys = args[1];\n this.ref = args[2];\n this.collator = args[3];\n this.layout = 'stack';\n this.orientation = 'vertical';\n this.disabledBehavior = 'all';\n this.layoutDelegate = new (0, $657e4dc4a6e88df0$export$8f5ed9ff9f511381)(this.ref);\n }\n // If this is a vertical stack, remove the left/right methods completely\n // so they aren't called by useDroppableCollection.\n if (this.layout === 'stack' && this.orientation === 'vertical') {\n this.getKeyLeftOf = undefined;\n this.getKeyRightOf = undefined;\n }\n }\n}\n\n\nexport {$2a25aae57d74318e$export$a05409b8bb224a5a as ListKeyboardDelegate};\n//# sourceMappingURL=ListKeyboardDelegate.module.js.map\n","import {useEffectEvent as $8ae05eaa5c114e9c$export$7f54fc3180508a52} from \"./useEffectEvent.mjs\";\nimport {useEffect as $ceQd6$useEffect} from \"react\";\n\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $e9faafb641e167db$export$90fc3a17d93f704c(ref, event, handler, options) {\n let handleEvent = (0, $8ae05eaa5c114e9c$export$7f54fc3180508a52)(handler);\n let isDisabled = handler == null;\n (0, $ceQd6$useEffect)(()=>{\n if (isDisabled || !ref.current) return;\n let element = ref.current;\n element.addEventListener(event, handleEvent, options);\n return ()=>{\n element.removeEventListener(event, handleEvent, options);\n };\n }, [\n ref,\n event,\n options,\n isDisabled,\n handleEvent\n ]);\n}\n\n\nexport {$e9faafb641e167db$export$90fc3a17d93f704c as useEvent};\n//# sourceMappingURL=useEvent.module.js.map\n","import {getScrollParents as $a40c673dc9f6d9c7$export$94ed1c92c7beeb22} from \"./getScrollParents.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $2f04cbc44ee30ce0$export$53a0910f038337bd(scrollView, element) {\n let offsetX = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'left');\n let offsetY = $2f04cbc44ee30ce0$var$relativeOffset(scrollView, element, 'top');\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n let x = scrollView.scrollLeft;\n let y = scrollView.scrollTop;\n // Account for top/left border offsetting the scroll top/Left\n let { borderTopWidth: borderTopWidth, borderLeftWidth: borderLeftWidth } = getComputedStyle(scrollView);\n let borderAdjustedX = scrollView.scrollLeft + parseInt(borderLeftWidth, 10);\n let borderAdjustedY = scrollView.scrollTop + parseInt(borderTopWidth, 10);\n // Ignore end/bottom border via clientHeight/Width instead of offsetHeight/Width\n let maxX = borderAdjustedX + scrollView.clientWidth;\n let maxY = borderAdjustedY + scrollView.clientHeight;\n if (offsetX <= x) x = offsetX - parseInt(borderLeftWidth, 10);\n else if (offsetX + width > maxX) x += offsetX + width - maxX;\n if (offsetY <= borderAdjustedY) y = offsetY - parseInt(borderTopWidth, 10);\n else if (offsetY + height > maxY) y += offsetY + height - maxY;\n scrollView.scrollLeft = x;\n scrollView.scrollTop = y;\n}\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */ function $2f04cbc44ee30ce0$var$relativeOffset(ancestor, child, axis) {\n const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n let sum = 0;\n while(child.offsetParent){\n sum += child[prop];\n if (child.offsetParent === ancestor) break;\n else if (child.offsetParent.contains(ancestor)) {\n // If the ancestor is not `position:relative`, then we stop at\n // _its_ offset parent, and we subtract off _its_ offset, so that\n // we end up with the proper offset from child to ancestor.\n sum -= ancestor[prop];\n break;\n }\n child = child.offsetParent;\n }\n return sum;\n}\nfunction $2f04cbc44ee30ce0$export$c826860796309d1b(targetElement, opts) {\n if (targetElement && document.contains(targetElement)) {\n let root = document.scrollingElement || document.documentElement;\n let isScrollPrevented = window.getComputedStyle(root).overflow === 'hidden';\n // If scrolling is not currently prevented then we aren’t in a overlay nor is a overlay open, just use element.scrollIntoView to bring the element into view\n if (!isScrollPrevented) {\n var // use scrollIntoView({block: 'nearest'}) instead of .focus to check if the element is fully in view or not since .focus()\n // won't cause a scroll if the element is already focused and doesn't behave consistently when an element is partially out of view horizontally vs vertically\n _targetElement_scrollIntoView;\n let { left: originalLeft, top: originalTop } = targetElement.getBoundingClientRect();\n targetElement === null || targetElement === void 0 ? void 0 : (_targetElement_scrollIntoView = targetElement.scrollIntoView) === null || _targetElement_scrollIntoView === void 0 ? void 0 : _targetElement_scrollIntoView.call(targetElement, {\n block: 'nearest'\n });\n let { left: newLeft, top: newTop } = targetElement.getBoundingClientRect();\n // Account for sub pixel differences from rounding\n if (Math.abs(originalLeft - newLeft) > 1 || Math.abs(originalTop - newTop) > 1) {\n var _opts_containingElement_scrollIntoView, _opts_containingElement, _targetElement_scrollIntoView1;\n opts === null || opts === void 0 ? void 0 : (_opts_containingElement = opts.containingElement) === null || _opts_containingElement === void 0 ? void 0 : (_opts_containingElement_scrollIntoView = _opts_containingElement.scrollIntoView) === null || _opts_containingElement_scrollIntoView === void 0 ? void 0 : _opts_containingElement_scrollIntoView.call(_opts_containingElement, {\n block: 'center',\n inline: 'center'\n });\n (_targetElement_scrollIntoView1 = targetElement.scrollIntoView) === null || _targetElement_scrollIntoView1 === void 0 ? void 0 : _targetElement_scrollIntoView1.call(targetElement, {\n block: 'nearest'\n });\n }\n } else {\n let scrollParents = (0, $a40c673dc9f6d9c7$export$94ed1c92c7beeb22)(targetElement);\n // If scrolling is prevented, we don't want to scroll the body since it might move the overlay partially offscreen and the user can't scroll it back into view.\n for (let scrollParent of scrollParents)$2f04cbc44ee30ce0$export$53a0910f038337bd(scrollParent, targetElement);\n }\n }\n}\n\n\nexport {$2f04cbc44ee30ce0$export$53a0910f038337bd as scrollIntoView, $2f04cbc44ee30ce0$export$c826860796309d1b as scrollIntoViewport};\n//# sourceMappingURL=scrollIntoView.module.js.map\n","import {isScrollable as $cc38e7bd3fc7b213$export$2bb74740c4e19def} from \"./isScrollable.mjs\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $a40c673dc9f6d9c7$export$94ed1c92c7beeb22(node, checkForOverflow) {\n const scrollParents = [];\n while(node && node !== document.documentElement){\n if ((0, $cc38e7bd3fc7b213$export$2bb74740c4e19def)(node, checkForOverflow)) scrollParents.push(node);\n node = node.parentElement;\n }\n return scrollParents;\n}\n\n\nexport {$a40c673dc9f6d9c7$export$94ed1c92c7beeb22 as getScrollParents};\n//# sourceMappingURL=getScrollParents.module.js.map\n","import {isCtrlKeyPressed as $feb5ffebff200149$export$16792effe837dba3, isNonContiguousSelectionModifier as $feb5ffebff200149$export$d3e3bd3e26688c04} from \"./utils.mjs\";\nimport {useTypeSelect as $fb3050f43d946246$export$e32c88dfddc6e1d8} from \"./useTypeSelect.mjs\";\nimport {flushSync as $3H3GQ$flushSync} from \"react-dom\";\nimport {useRef as $3H3GQ$useRef, useEffect as $3H3GQ$useEffect} from \"react\";\nimport {getFocusableTreeWalker as $3H3GQ$getFocusableTreeWalker, focusSafely as $3H3GQ$focusSafely} from \"@react-aria/focus\";\nimport {useRouter as $3H3GQ$useRouter, focusWithoutScrolling as $3H3GQ$focusWithoutScrolling, useEvent as $3H3GQ$useEvent, scrollIntoViewport as $3H3GQ$scrollIntoViewport, scrollIntoView as $3H3GQ$scrollIntoView, mergeProps as $3H3GQ$mergeProps} from \"@react-aria/utils\";\nimport {getInteractionModality as $3H3GQ$getInteractionModality} from \"@react-aria/interactions\";\nimport {useLocale as $3H3GQ$useLocale} from \"@react-aria/i18n\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\nfunction $ae20dd8cbca75726$export$d6daf82dcd84e87c(options) {\n let { selectionManager: manager, keyboardDelegate: delegate, ref: ref, autoFocus: autoFocus = false, shouldFocusWrap: shouldFocusWrap = false, disallowEmptySelection: disallowEmptySelection = false, disallowSelectAll: disallowSelectAll = false, selectOnFocus: selectOnFocus = manager.selectionBehavior === 'replace', disallowTypeAhead: disallowTypeAhead = false, shouldUseVirtualFocus: shouldUseVirtualFocus, allowsTabNavigation: allowsTabNavigation = false, isVirtualized: isVirtualized, scrollRef: // If no scrollRef is provided, assume the collection ref is the scrollable region\n scrollRef = ref, linkBehavior: linkBehavior = 'action' } = options;\n let { direction: direction } = (0, $3H3GQ$useLocale)();\n let router = (0, $3H3GQ$useRouter)();\n let onKeyDown = (e)=>{\n var _ref_current;\n // Prevent option + tab from doing anything since it doesn't move focus to the cells, only buttons/checkboxes\n if (e.altKey && e.key === 'Tab') e.preventDefault();\n // Keyboard events bubble through portals. Don't handle keyboard events\n // for elements outside the collection (e.g. menus).\n if (!((_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.contains(e.target))) return;\n const navigateToKey = (key, childFocus)=>{\n if (key != null) {\n if (manager.isLink(key) && linkBehavior === 'selection' && selectOnFocus && !(0, $feb5ffebff200149$export$d3e3bd3e26688c04)(e)) {\n var _scrollRef_current;\n // Set focused key and re-render synchronously to bring item into view if needed.\n (0, $3H3GQ$flushSync)(()=>{\n manager.setFocusedKey(key, childFocus);\n });\n let item = (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.querySelector(`[data-key=\"${CSS.escape(key.toString())}\"]`);\n let itemProps = manager.getItemProps(key);\n if (item) router.open(item, e, itemProps.href, itemProps.routerOptions);\n return;\n }\n manager.setFocusedKey(key, childFocus);\n if (manager.isLink(key) && linkBehavior === 'override') return;\n if (e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(key);\n else if (selectOnFocus && !(0, $feb5ffebff200149$export$d3e3bd3e26688c04)(e)) manager.replaceSelection(key);\n }\n };\n switch(e.key){\n case 'ArrowDown':\n if (delegate.getKeyBelow) {\n var _delegate_getKeyBelow, _delegate_getFirstKey, _delegate_getFirstKey1;\n let nextKey = manager.focusedKey != null ? (_delegate_getKeyBelow = delegate.getKeyBelow) === null || _delegate_getKeyBelow === void 0 ? void 0 : _delegate_getKeyBelow.call(delegate, manager.focusedKey) : (_delegate_getFirstKey = delegate.getFirstKey) === null || _delegate_getFirstKey === void 0 ? void 0 : _delegate_getFirstKey.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (_delegate_getFirstKey1 = delegate.getFirstKey) === null || _delegate_getFirstKey1 === void 0 ? void 0 : _delegate_getFirstKey1.call(delegate, manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey);\n }\n }\n break;\n case 'ArrowUp':\n if (delegate.getKeyAbove) {\n var _delegate_getKeyAbove, _delegate_getLastKey, _delegate_getLastKey1;\n let nextKey = manager.focusedKey != null ? (_delegate_getKeyAbove = delegate.getKeyAbove) === null || _delegate_getKeyAbove === void 0 ? void 0 : _delegate_getKeyAbove.call(delegate, manager.focusedKey) : (_delegate_getLastKey = delegate.getLastKey) === null || _delegate_getLastKey === void 0 ? void 0 : _delegate_getLastKey.call(delegate);\n if (nextKey == null && shouldFocusWrap) nextKey = (_delegate_getLastKey1 = delegate.getLastKey) === null || _delegate_getLastKey1 === void 0 ? void 0 : _delegate_getLastKey1.call(delegate, manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey);\n }\n }\n break;\n case 'ArrowLeft':\n if (delegate.getKeyLeftOf) {\n var _delegate_getKeyLeftOf, _delegate_getFirstKey2, _delegate_getLastKey2;\n let nextKey = manager.focusedKey != null ? (_delegate_getKeyLeftOf = delegate.getKeyLeftOf) === null || _delegate_getKeyLeftOf === void 0 ? void 0 : _delegate_getKeyLeftOf.call(delegate, manager.focusedKey) : null;\n if (nextKey == null && shouldFocusWrap) nextKey = direction === 'rtl' ? (_delegate_getFirstKey2 = delegate.getFirstKey) === null || _delegate_getFirstKey2 === void 0 ? void 0 : _delegate_getFirstKey2.call(delegate, manager.focusedKey) : (_delegate_getLastKey2 = delegate.getLastKey) === null || _delegate_getLastKey2 === void 0 ? void 0 : _delegate_getLastKey2.call(delegate, manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey, direction === 'rtl' ? 'first' : 'last');\n }\n }\n break;\n case 'ArrowRight':\n if (delegate.getKeyRightOf) {\n var _delegate_getKeyRightOf, _delegate_getLastKey3, _delegate_getFirstKey3;\n let nextKey = manager.focusedKey != null ? (_delegate_getKeyRightOf = delegate.getKeyRightOf) === null || _delegate_getKeyRightOf === void 0 ? void 0 : _delegate_getKeyRightOf.call(delegate, manager.focusedKey) : null;\n if (nextKey == null && shouldFocusWrap) nextKey = direction === 'rtl' ? (_delegate_getLastKey3 = delegate.getLastKey) === null || _delegate_getLastKey3 === void 0 ? void 0 : _delegate_getLastKey3.call(delegate, manager.focusedKey) : (_delegate_getFirstKey3 = delegate.getFirstKey) === null || _delegate_getFirstKey3 === void 0 ? void 0 : _delegate_getFirstKey3.call(delegate, manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey, direction === 'rtl' ? 'last' : 'first');\n }\n }\n break;\n case 'Home':\n if (delegate.getFirstKey) {\n e.preventDefault();\n let firstKey = delegate.getFirstKey(manager.focusedKey, (0, $feb5ffebff200149$export$16792effe837dba3)(e));\n manager.setFocusedKey(firstKey);\n if (firstKey != null) {\n if ((0, $feb5ffebff200149$export$16792effe837dba3)(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(firstKey);\n else if (selectOnFocus) manager.replaceSelection(firstKey);\n }\n }\n break;\n case 'End':\n if (delegate.getLastKey) {\n e.preventDefault();\n let lastKey = delegate.getLastKey(manager.focusedKey, (0, $feb5ffebff200149$export$16792effe837dba3)(e));\n manager.setFocusedKey(lastKey);\n if (lastKey != null) {\n if ((0, $feb5ffebff200149$export$16792effe837dba3)(e) && e.shiftKey && manager.selectionMode === 'multiple') manager.extendSelection(lastKey);\n else if (selectOnFocus) manager.replaceSelection(lastKey);\n }\n }\n break;\n case 'PageDown':\n if (delegate.getKeyPageBelow && manager.focusedKey != null) {\n let nextKey = delegate.getKeyPageBelow(manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey);\n }\n }\n break;\n case 'PageUp':\n if (delegate.getKeyPageAbove && manager.focusedKey != null) {\n let nextKey = delegate.getKeyPageAbove(manager.focusedKey);\n if (nextKey != null) {\n e.preventDefault();\n navigateToKey(nextKey);\n }\n }\n break;\n case 'a':\n if ((0, $feb5ffebff200149$export$16792effe837dba3)(e) && manager.selectionMode === 'multiple' && disallowSelectAll !== true) {\n e.preventDefault();\n manager.selectAll();\n }\n break;\n case 'Escape':\n if (!disallowEmptySelection && manager.selectedKeys.size !== 0) {\n e.stopPropagation();\n e.preventDefault();\n manager.clearSelection();\n }\n break;\n case 'Tab':\n if (!allowsTabNavigation) {\n // There may be elements that are \"tabbable\" inside a collection (e.g. in a grid cell).\n // However, collections should be treated as a single tab stop, with arrow key navigation internally.\n // We don't control the rendering of these, so we can't override the tabIndex to prevent tabbing.\n // Instead, we handle the Tab key, and move focus manually to the first/last tabbable element\n // in the collection, so that the browser default behavior will apply starting from that element\n // rather than the currently focused one.\n if (e.shiftKey) ref.current.focus();\n else {\n let walker = (0, $3H3GQ$getFocusableTreeWalker)(ref.current, {\n tabbable: true\n });\n let next = undefined;\n let last;\n do {\n last = walker.lastChild();\n if (last) next = last;\n }while (last);\n if (next && !next.contains(document.activeElement)) (0, $3H3GQ$focusWithoutScrolling)(next);\n }\n break;\n }\n }\n };\n // Store the scroll position so we can restore it later.\n /// TODO: should this happen all the time??\n let scrollPos = (0, $3H3GQ$useRef)({\n top: 0,\n left: 0\n });\n (0, $3H3GQ$useEvent)(scrollRef, 'scroll', isVirtualized ? undefined : ()=>{\n var _scrollRef_current, _scrollRef_current1;\n var _scrollRef_current_scrollTop, _scrollRef_current_scrollLeft;\n scrollPos.current = {\n top: (_scrollRef_current_scrollTop = (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.scrollTop) !== null && _scrollRef_current_scrollTop !== void 0 ? _scrollRef_current_scrollTop : 0,\n left: (_scrollRef_current_scrollLeft = (_scrollRef_current1 = scrollRef.current) === null || _scrollRef_current1 === void 0 ? void 0 : _scrollRef_current1.scrollLeft) !== null && _scrollRef_current_scrollLeft !== void 0 ? _scrollRef_current_scrollLeft : 0\n };\n });\n let onFocus = (e)=>{\n if (manager.isFocused) {\n // If a focus event bubbled through a portal, reset focus state.\n if (!e.currentTarget.contains(e.target)) manager.setFocused(false);\n return;\n }\n // Focus events can bubble through portals. Ignore these events.\n if (!e.currentTarget.contains(e.target)) return;\n manager.setFocused(true);\n if (manager.focusedKey == null) {\n var _delegate_getLastKey, _delegate_getFirstKey;\n let navigateToFirstKey = (key)=>{\n if (key != null) {\n manager.setFocusedKey(key);\n if (selectOnFocus) manager.replaceSelection(key);\n }\n };\n // If the user hasn't yet interacted with the collection, there will be no focusedKey set.\n // Attempt to detect whether the user is tabbing forward or backward into the collection\n // and either focus the first or last item accordingly.\n let relatedTarget = e.relatedTarget;\n var _manager_lastSelectedKey, _manager_firstSelectedKey;\n if (relatedTarget && e.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING) navigateToFirstKey((_manager_lastSelectedKey = manager.lastSelectedKey) !== null && _manager_lastSelectedKey !== void 0 ? _manager_lastSelectedKey : (_delegate_getLastKey = delegate.getLastKey) === null || _delegate_getLastKey === void 0 ? void 0 : _delegate_getLastKey.call(delegate));\n else navigateToFirstKey((_manager_firstSelectedKey = manager.firstSelectedKey) !== null && _manager_firstSelectedKey !== void 0 ? _manager_firstSelectedKey : (_delegate_getFirstKey = delegate.getFirstKey) === null || _delegate_getFirstKey === void 0 ? void 0 : _delegate_getFirstKey.call(delegate));\n } else if (!isVirtualized && scrollRef.current) {\n // Restore the scroll position to what it was before.\n scrollRef.current.scrollTop = scrollPos.current.top;\n scrollRef.current.scrollLeft = scrollPos.current.left;\n }\n if (manager.focusedKey != null && scrollRef.current) {\n // Refocus and scroll the focused item into view if it exists within the scrollable region.\n let element = scrollRef.current.querySelector(`[data-key=\"${CSS.escape(manager.focusedKey.toString())}\"]`);\n if (element) {\n // This prevents a flash of focus on the first/last element in the collection, or the collection itself.\n if (!element.contains(document.activeElement)) (0, $3H3GQ$focusWithoutScrolling)(element);\n let modality = (0, $3H3GQ$getInteractionModality)();\n if (modality === 'keyboard') (0, $3H3GQ$scrollIntoViewport)(element, {\n containingElement: ref.current\n });\n }\n }\n };\n let onBlur = (e)=>{\n // Don't set blurred and then focused again if moving focus within the collection.\n if (!e.currentTarget.contains(e.relatedTarget)) manager.setFocused(false);\n };\n const autoFocusRef = (0, $3H3GQ$useRef)(autoFocus);\n (0, $3H3GQ$useEffect)(()=>{\n if (autoFocusRef.current) {\n var _delegate_getFirstKey, _delegate_getLastKey;\n let focusedKey = null;\n var _delegate_getFirstKey1;\n // Check focus strategy to determine which item to focus\n if (autoFocus === 'first') focusedKey = (_delegate_getFirstKey1 = (_delegate_getFirstKey = delegate.getFirstKey) === null || _delegate_getFirstKey === void 0 ? void 0 : _delegate_getFirstKey.call(delegate)) !== null && _delegate_getFirstKey1 !== void 0 ? _delegate_getFirstKey1 : null;\n var _delegate_getLastKey1;\n if (autoFocus === 'last') focusedKey = (_delegate_getLastKey1 = (_delegate_getLastKey = delegate.getLastKey) === null || _delegate_getLastKey === void 0 ? void 0 : _delegate_getLastKey.call(delegate)) !== null && _delegate_getLastKey1 !== void 0 ? _delegate_getLastKey1 : null;\n // If there are any selected keys, make the first one the new focus target\n let selectedKeys = manager.selectedKeys;\n if (selectedKeys.size) {\n for (let key of selectedKeys)if (manager.canSelectItem(key)) {\n focusedKey = key;\n break;\n }\n }\n manager.setFocused(true);\n manager.setFocusedKey(focusedKey);\n // If no default focus key is selected, focus the collection itself.\n if (focusedKey == null && !shouldUseVirtualFocus && ref.current) (0, $3H3GQ$focusSafely)(ref.current);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n // Scroll the focused element into view when the focusedKey changes.\n let lastFocusedKey = (0, $3H3GQ$useRef)(manager.focusedKey);\n (0, $3H3GQ$useEffect)(()=>{\n if (manager.isFocused && manager.focusedKey != null && (manager.focusedKey !== lastFocusedKey.current || autoFocusRef.current) && scrollRef.current && ref.current) {\n let modality = (0, $3H3GQ$getInteractionModality)();\n let element = ref.current.querySelector(`[data-key=\"${CSS.escape(manager.focusedKey.toString())}\"]`);\n if (!element) // If item element wasn't found, return early (don't update autoFocusRef and lastFocusedKey).\n // The collection may initially be empty (e.g. virtualizer), so wait until the element exists.\n return;\n if (modality === 'keyboard' || autoFocusRef.current) {\n (0, $3H3GQ$scrollIntoView)(scrollRef.current, element);\n // Avoid scroll in iOS VO, since it may cause overlay to close (i.e. RAC submenu)\n if (modality !== 'virtual') (0, $3H3GQ$scrollIntoViewport)(element, {\n containingElement: ref.current\n });\n }\n }\n // If the focused key becomes null (e.g. the last item is deleted), focus the whole collection.\n if (!shouldUseVirtualFocus && manager.isFocused && manager.focusedKey == null && lastFocusedKey.current != null && ref.current) (0, $3H3GQ$focusSafely)(ref.current);\n lastFocusedKey.current = manager.focusedKey;\n autoFocusRef.current = false;\n });\n // Intercept FocusScope restoration since virtualized collections can reuse DOM nodes.\n (0, $3H3GQ$useEvent)(ref, 'react-aria-focus-scope-restore', (e)=>{\n e.preventDefault();\n manager.setFocused(true);\n });\n let handlers = {\n onKeyDown: onKeyDown,\n onFocus: onFocus,\n onBlur: onBlur,\n onMouseDown (e) {\n // Ignore events that bubbled through portals.\n if (scrollRef.current === e.target) // Prevent focus going to the collection when clicking on the scrollbar.\n e.preventDefault();\n }\n };\n let { typeSelectProps: typeSelectProps } = (0, $fb3050f43d946246$export$e32c88dfddc6e1d8)({\n keyboardDelegate: delegate,\n selectionManager: manager\n });\n if (!disallowTypeAhead) handlers = (0, $3H3GQ$mergeProps)(typeSelectProps, handlers);\n // If nothing is focused within the collection, make the collection itself tabbable.\n // This will be marshalled to either the first or last item depending on where focus came from.\n // If using virtual focus, don't set a tabIndex at all so that VoiceOver on iOS 14 doesn't try\n // to move real DOM focus to the element anyway.\n let tabIndex = undefined;\n if (!shouldUseVirtualFocus) tabIndex = manager.focusedKey == null ? 0 : -1;\n return {\n collectionProps: {\n ...handlers,\n tabIndex: tabIndex\n }\n };\n}\n\n\nexport {$ae20dd8cbca75726$export$d6daf82dcd84e87c as useSelectableCollection};\n//# sourceMappingURL=useSelectableCollection.module.js.map\n","import {useRef as $dAE4Y$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n/**\n * Controls how long to wait before clearing the typeahead buffer.\n */ const $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS = 1000; // 1 second\nfunction $fb3050f43d946246$export$e32c88dfddc6e1d8(options) {\n let { keyboardDelegate: keyboardDelegate, selectionManager: selectionManager, onTypeSelect: onTypeSelect } = options;\n let state = (0, $dAE4Y$useRef)({\n search: '',\n timeout: undefined\n }).current;\n let onKeyDown = (e)=>{\n let character = $fb3050f43d946246$var$getStringForKey(e.key);\n if (!character || e.ctrlKey || e.metaKey || !e.currentTarget.contains(e.target)) return;\n // Do not propagate the Spacebar event if it's meant to be part of the search.\n // When we time out, the search term becomes empty, hence the check on length.\n // Trimming is to account for the case of pressing the Spacebar more than once,\n // which should cycle through the selection/deselection of the focused item.\n if (character === ' ' && state.search.trim().length > 0) {\n e.preventDefault();\n if (!('continuePropagation' in e)) e.stopPropagation();\n }\n state.search += character;\n if (keyboardDelegate.getKeyForSearch != null) {\n // Use the delegate to find a key to focus.\n // Prioritize items after the currently focused item, falling back to searching the whole list.\n let key = keyboardDelegate.getKeyForSearch(state.search, selectionManager.focusedKey);\n // If no key found, search from the top.\n if (key == null) key = keyboardDelegate.getKeyForSearch(state.search);\n if (key != null) {\n selectionManager.setFocusedKey(key);\n if (onTypeSelect) onTypeSelect(key);\n }\n }\n clearTimeout(state.timeout);\n state.timeout = setTimeout(()=>{\n state.search = '';\n }, $fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS);\n };\n return {\n typeSelectProps: {\n // Using a capturing listener to catch the keydown event before\n // other hooks in order to handle the Spacebar event.\n onKeyDownCapture: keyboardDelegate.getKeyForSearch ? onKeyDown : undefined\n }\n };\n}\nfunction $fb3050f43d946246$var$getStringForKey(key) {\n // If the key is of length 1, it is an ASCII value.\n // Otherwise, if there are no ASCII characters in the key name,\n // it is a Unicode character.\n // See https://www.w3.org/TR/uievents-key/\n if (key.length === 1 || !/^[A-Z]/i.test(key)) return key;\n return '';\n}\n\n\nexport {$fb3050f43d946246$export$e32c88dfddc6e1d8 as useTypeSelect};\n//# sourceMappingURL=useTypeSelect.module.js.map\n","import {isAppleDevice as $jUnAJ$isAppleDevice, isMac as $jUnAJ$isMac} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $feb5ffebff200149$export$d3e3bd3e26688c04(e) {\n // Ctrl + Arrow Up/Arrow Down has a system wide meaning on macOS, so use Alt instead.\n // On Windows and Ubuntu, Alt + Space has a system wide meaning.\n return (0, $jUnAJ$isAppleDevice)() ? e.altKey : e.ctrlKey;\n}\nfunction $feb5ffebff200149$export$16792effe837dba3(e) {\n if ((0, $jUnAJ$isMac)()) return e.metaKey;\n return e.ctrlKey;\n}\n\n\nexport {$feb5ffebff200149$export$d3e3bd3e26688c04 as isNonContiguousSelectionModifier, $feb5ffebff200149$export$16792effe837dba3 as isCtrlKeyPressed};\n//# sourceMappingURL=utils.module.js.map\n","import $670gB$react, {useContext as $670gB$useContext, useState as $670gB$useState, useMemo as $670gB$useMemo, useLayoutEffect as $670gB$useLayoutEffect, useRef as $670gB$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst $b5e257d569688ac6$var$defaultContext = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\nconst $b5e257d569688ac6$var$SSRContext = /*#__PURE__*/ (0, $670gB$react).createContext($b5e257d569688ac6$var$defaultContext);\nconst $b5e257d569688ac6$var$IsSSRContext = /*#__PURE__*/ (0, $670gB$react).createContext(false);\n// This is only used in React < 18.\nfunction $b5e257d569688ac6$var$LegacySSRProvider(props) {\n let cur = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let counter = $b5e257d569688ac6$var$useCounter(cur === $b5e257d569688ac6$var$defaultContext);\n let [isSSR, setIsSSR] = (0, $670gB$useState)(true);\n let value = (0, $670gB$useMemo)(()=>({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === $b5e257d569688ac6$var$defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [\n cur,\n counter\n ]);\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, $670gB$useLayoutEffect)(()=>{\n setIsSSR(false);\n }, []);\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$SSRContext.Provider, {\n value: value\n }, /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$IsSSRContext.Provider, {\n value: isSSR\n }, props.children));\n}\nlet $b5e257d569688ac6$var$warnedAboutSSRProvider = false;\nfunction $b5e257d569688ac6$export$9f8ac96af4b1b2ae(props) {\n if (typeof (0, $670gB$react)['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && !$b5e257d569688ac6$var$warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n $b5e257d569688ac6$var$warnedAboutSSRProvider = true;\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement((0, $670gB$react).Fragment, null, props.children);\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$LegacySSRProvider, props);\n}\nlet $b5e257d569688ac6$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $b5e257d569688ac6$var$componentIds = new WeakMap();\nfunction $b5e257d569688ac6$var$useCounter(isDisabled = false) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let ref = (0, $670gB$useRef)(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n var _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner, _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = (0, $670gB$react).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === void 0 ? void 0 : (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner = _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner === void 0 ? void 0 : _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner.current;\n if (currentOwner) {\n let prevComponentValue = $b5e257d569688ac6$var$componentIds.get(currentOwner);\n if (prevComponentValue == null) // On the first render, and first call to useId, store the id and state in our weak map.\n $b5e257d569688ac6$var$componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n $b5e257d569688ac6$var$componentIds.delete(currentOwner);\n }\n }\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\nfunction $b5e257d569688ac6$var$useLegacySSRSafeId(defaultId) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === $b5e257d569688ac6$var$defaultContext && !$b5e257d569688ac6$var$canUseDOM) console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n let counter = $b5e257d569688ac6$var$useCounter(!!defaultId);\n let prefix = ctx === $b5e257d569688ac6$var$defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\nfunction $b5e257d569688ac6$var$useModernSSRSafeId(defaultId) {\n let id = (0, $670gB$react).useId();\n let [didSSR] = (0, $670gB$useState)($b5e257d569688ac6$export$535bd6ca7f90a273());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${$b5e257d569688ac6$var$defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\nconst $b5e257d569688ac6$export$619500959fc48b26 = typeof (0, $670gB$react)['useId'] === 'function' ? $b5e257d569688ac6$var$useModernSSRSafeId : $b5e257d569688ac6$var$useLegacySSRSafeId;\nfunction $b5e257d569688ac6$var$getSnapshot() {\n return false;\n}\nfunction $b5e257d569688ac6$var$getServerSnapshot() {\n return true;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction $b5e257d569688ac6$var$subscribe(onStoreChange) {\n // noop\n return ()=>{};\n}\nfunction $b5e257d569688ac6$export$535bd6ca7f90a273() {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof (0, $670gB$react)['useSyncExternalStore'] === 'function') return (0, $670gB$react)['useSyncExternalStore']($b5e257d569688ac6$var$subscribe, $b5e257d569688ac6$var$getSnapshot, $b5e257d569688ac6$var$getServerSnapshot);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, $670gB$useContext)($b5e257d569688ac6$var$IsSSRContext);\n}\n\n\nexport {$b5e257d569688ac6$export$9f8ac96af4b1b2ae as SSRProvider, $b5e257d569688ac6$export$535bd6ca7f90a273 as useIsSSR, $b5e257d569688ac6$export$619500959fc48b26 as useSSRSafeId};\n//# sourceMappingURL=SSRProvider.module.js.map\n","import {useEffect as $ig234$useEffect} from \"react\";\nimport {filterDOMProps as $ig234$filterDOMProps, useFormReset as $ig234$useFormReset, getOwnerWindow as $ig234$getOwnerWindow, mergeProps as $ig234$mergeProps} from \"@react-aria/utils\";\nimport {useControlledState as $ig234$useControlledState} from \"@react-stately/utils\";\nimport {useField as $ig234$useField} from \"@react-aria/label\";\nimport {useFocusable as $ig234$useFocusable} from \"@react-aria/focus\";\nimport {useFormValidation as $ig234$useFormValidation} from \"@react-aria/form\";\nimport {useFormValidationState as $ig234$useFormValidationState} from \"@react-stately/form\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\nfunction $2d73ec29415bd339$export$712718f7aec83d5(props, ref) {\n let { inputElementType: inputElementType = 'input', isDisabled: isDisabled = false, isRequired: isRequired = false, isReadOnly: isReadOnly = false, type: type = 'text', validationBehavior: validationBehavior = 'aria' } = props;\n let [value, setValue] = (0, $ig234$useControlledState)(props.value, props.defaultValue || '', props.onChange);\n let { focusableProps: focusableProps } = (0, $ig234$useFocusable)(props, ref);\n let validationState = (0, $ig234$useFormValidationState)({\n ...props,\n value: value\n });\n let { isInvalid: isInvalid, validationErrors: validationErrors, validationDetails: validationDetails } = validationState.displayValidation;\n let { labelProps: labelProps, fieldProps: fieldProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps } = (0, $ig234$useField)({\n ...props,\n isInvalid: isInvalid,\n errorMessage: props.errorMessage || validationErrors\n });\n let domProps = (0, $ig234$filterDOMProps)(props, {\n labelable: true\n });\n const inputOnlyProps = {\n type: type,\n pattern: props.pattern\n };\n (0, $ig234$useFormReset)(ref, value, setValue);\n (0, $ig234$useFormValidation)(props, validationState, ref);\n (0, $ig234$useEffect)(()=>{\n // This works around a React/Chrome bug that prevents textarea elements from validating when controlled.\n // We prevent React from updating defaultValue (i.e. children) of textarea when `value` changes,\n // which causes Chrome to skip validation. Only updating `value` is ok in our case since our\n // textareas are always controlled. React is planning on removing this synchronization in a\n // future major version.\n // https://github.com/facebook/react/issues/19474\n // https://github.com/facebook/react/issues/11896\n if (ref.current instanceof (0, $ig234$getOwnerWindow)(ref.current).HTMLTextAreaElement) {\n let input = ref.current;\n Object.defineProperty(input, 'defaultValue', {\n get: ()=>input.value,\n set: ()=>{},\n configurable: true\n });\n }\n }, [\n ref\n ]);\n return {\n labelProps: labelProps,\n inputProps: (0, $ig234$mergeProps)(domProps, inputElementType === 'input' ? inputOnlyProps : undefined, {\n disabled: isDisabled,\n readOnly: isReadOnly,\n required: isRequired && validationBehavior === 'native',\n 'aria-required': isRequired && validationBehavior === 'aria' || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-errormessage': props['aria-errormessage'],\n 'aria-activedescendant': props['aria-activedescendant'],\n 'aria-autocomplete': props['aria-autocomplete'],\n 'aria-haspopup': props['aria-haspopup'],\n value: value,\n onChange: (e)=>setValue(e.target.value),\n autoComplete: props.autoComplete,\n autoCapitalize: props.autoCapitalize,\n maxLength: props.maxLength,\n minLength: props.minLength,\n name: props.name,\n placeholder: props.placeholder,\n inputMode: props.inputMode,\n // Clipboard events\n onCopy: props.onCopy,\n onCut: props.onCut,\n onPaste: props.onPaste,\n // Composition events\n onCompositionEnd: props.onCompositionEnd,\n onCompositionStart: props.onCompositionStart,\n onCompositionUpdate: props.onCompositionUpdate,\n // Selection events\n onSelect: props.onSelect,\n // Input events\n onBeforeInput: props.onBeforeInput,\n onInput: props.onInput,\n ...focusableProps,\n ...fieldProps\n }),\n descriptionProps: descriptionProps,\n errorMessageProps: errorMessageProps,\n isInvalid: isInvalid,\n validationErrors: validationErrors,\n validationDetails: validationDetails\n };\n}\n\n\nexport {$2d73ec29415bd339$export$712718f7aec83d5 as useTextField};\n//# sourceMappingURL=useTextField.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Calls all functions in the order they were chained with the same arguments.\n */ function $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\nexport {$ff5963eb1fccf552$export$e08e3b67e392101e as chain};\n//# sourceMappingURL=chain.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n var _el_ownerDocument;\n return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n if (el && 'window' in el && el.window === el) return el;\n const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n return doc.defaultView || window;\n};\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow};\n//# sourceMappingURL=domHelpers.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ const $65484d02dcb7eb3e$var$DOMPropNames = new Set([\n 'id'\n]);\nconst $65484d02dcb7eb3e$var$labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\n// See LinkDOMProps in dom.d.ts.\nconst $65484d02dcb7eb3e$var$linkPropNames = new Set([\n 'href',\n 'hrefLang',\n 'target',\n 'rel',\n 'download',\n 'ping',\n 'referrerPolicy'\n]);\nconst $65484d02dcb7eb3e$var$propRe = /^(data-.*)$/;\nfunction $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props, opts = {}) {\n let { labelable: labelable, isLink: isLink, propNames: propNames } = opts;\n let filteredProps = {};\n for(const prop in props)if (Object.prototype.hasOwnProperty.call(props, prop) && ($65484d02dcb7eb3e$var$DOMPropNames.has(prop) || labelable && $65484d02dcb7eb3e$var$labelablePropNames.has(prop) || isLink && $65484d02dcb7eb3e$var$linkPropNames.has(prop) || (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) || $65484d02dcb7eb3e$var$propRe.test(prop))) filteredProps[prop] = props[prop];\n return filteredProps;\n}\n\n\nexport {$65484d02dcb7eb3e$export$457c3d6518dd4c6f as filterDOMProps};\n//# sourceMappingURL=filterDOMProps.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n let parent = element.parentNode;\n let scrollableElements = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element, scrollTop: scrollTop, scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nexport {$7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling};\n//# sourceMappingURL=focusWithoutScrolling.module.js.map\n","/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $cc38e7bd3fc7b213$export$2bb74740c4e19def(node, checkForOverflow) {\n if (!node) return false;\n let style = window.getComputedStyle(node);\n let isScrollable = /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n if (isScrollable && checkForOverflow) isScrollable = node.scrollHeight !== node.clientHeight || node.scrollWidth !== node.clientWidth;\n return isScrollable;\n}\n\n\nexport {$cc38e7bd3fc7b213$export$2bb74740c4e19def as isScrollable};\n//# sourceMappingURL=isScrollable.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {chain as $ff5963eb1fccf552$export$e08e3b67e392101e} from \"./chain.mjs\";\nimport {mergeIds as $bdb11010cef70236$export$cd8c9cb68f842629} from \"./useId.mjs\";\nimport $7jXr9$clsx from \"clsx\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = (0, $ff5963eb1fccf552$export$e08e3b67e392101e)(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = (0, $7jXr9$clsx)(a, b);\n else if (key === 'id' && a && b) result.id = (0, $bdb11010cef70236$export$cd8c9cb68f842629)(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nexport {$3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps};\n//# sourceMappingURL=mergeProps.module.js.map\n","import {focusWithoutScrolling as $7215afc6de606d6b$export$de79e2c695e052f3} from \"./focusWithoutScrolling.mjs\";\nimport {isMac as $c87311424ea30a05$export$9ac100e40613ea10, isWebKit as $c87311424ea30a05$export$78551043582a6a98, isFirefox as $c87311424ea30a05$export$b7d78993b74f766d, isIPad as $c87311424ea30a05$export$7bef049ce92e4224} from \"./platform.mjs\";\nimport $g3jFn$react, {createContext as $g3jFn$createContext, useMemo as $g3jFn$useMemo, useContext as $g3jFn$useContext} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $ea8dcbcb9ea1b556$var$RouterContext = /*#__PURE__*/ (0, $g3jFn$createContext)({\n isNative: true,\n open: $ea8dcbcb9ea1b556$var$openSyntheticLink,\n useHref: (href)=>href\n});\nfunction $ea8dcbcb9ea1b556$export$323e4fc2fa4753fb(props) {\n let { children: children, navigate: navigate, useHref: useHref } = props;\n let ctx = (0, $g3jFn$useMemo)(()=>({\n isNative: false,\n open: (target, modifiers, href, routerOptions)=>{\n $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link)=>{\n if ($ea8dcbcb9ea1b556$export$efa8c9099e530235(link, modifiers)) navigate(href, routerOptions);\n else $ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers);\n });\n },\n useHref: useHref || ((href)=>href)\n }), [\n navigate,\n useHref\n ]);\n return /*#__PURE__*/ (0, $g3jFn$react).createElement($ea8dcbcb9ea1b556$var$RouterContext.Provider, {\n value: ctx\n }, children);\n}\nfunction $ea8dcbcb9ea1b556$export$9a302a45f65d0572() {\n return (0, $g3jFn$useContext)($ea8dcbcb9ea1b556$var$RouterContext);\n}\nfunction $ea8dcbcb9ea1b556$export$efa8c9099e530235(link, modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (!target || target === '_self') && link.origin === location.origin && !link.hasAttribute('download') && !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey;\n}\nfunction $ea8dcbcb9ea1b556$export$95185d699e05d4d7(target, modifiers, setOpening = true) {\n var _window_event_type, _window_event;\n let { metaKey: metaKey, ctrlKey: ctrlKey, altKey: altKey, shiftKey: shiftKey } = modifiers;\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if ((0, $c87311424ea30a05$export$b7d78993b74f766d)() && ((_window_event = window.event) === null || _window_event === void 0 ? void 0 : (_window_event_type = _window_event.type) === null || _window_event_type === void 0 ? void 0 : _window_event_type.startsWith('key')) && target.target === '_blank') {\n if ((0, $c87311424ea30a05$export$9ac100e40613ea10)()) metaKey = true;\n else ctrlKey = true;\n }\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event = (0, $c87311424ea30a05$export$78551043582a6a98)() && (0, $c87311424ea30a05$export$9ac100e40613ea10)() && !(0, $c87311424ea30a05$export$7bef049ce92e4224)() && true ? new KeyboardEvent('keydown', {\n keyIdentifier: 'Enter',\n metaKey: metaKey,\n ctrlKey: ctrlKey,\n altKey: altKey,\n shiftKey: shiftKey\n }) : new MouseEvent('click', {\n metaKey: metaKey,\n ctrlKey: ctrlKey,\n altKey: altKey,\n shiftKey: shiftKey,\n bubbles: true,\n cancelable: true\n });\n $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = setOpening;\n (0, $7215afc6de606d6b$export$de79e2c695e052f3)(target);\n target.dispatchEvent(event);\n $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n$ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;\nfunction $ea8dcbcb9ea1b556$var$getSyntheticLink(target, open) {\n if (target instanceof HTMLAnchorElement) open(target);\n else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href');\n if (target.hasAttribute('data-target')) link.target = target.getAttribute('data-target');\n if (target.hasAttribute('data-rel')) link.rel = target.getAttribute('data-rel');\n if (target.hasAttribute('data-download')) link.download = target.getAttribute('data-download');\n if (target.hasAttribute('data-ping')) link.ping = target.getAttribute('data-ping');\n if (target.hasAttribute('data-referrer-policy')) link.referrerPolicy = target.getAttribute('data-referrer-policy');\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\nfunction $ea8dcbcb9ea1b556$var$openSyntheticLink(target, modifiers) {\n $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link)=>$ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers));\n}\nfunction $ea8dcbcb9ea1b556$export$bdc77b0c0a3a85d6(props) {\n let router = $ea8dcbcb9ea1b556$export$9a302a45f65d0572();\n var _props_href;\n const href = router.useHref((_props_href = props.href) !== null && _props_href !== void 0 ? _props_href : '');\n return {\n 'data-href': props.href ? href : undefined,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\nfunction $ea8dcbcb9ea1b556$export$51437d503373d223(props) {\n return {\n 'data-href': props.href,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\nfunction $ea8dcbcb9ea1b556$export$7e924b3091a3bd18(props) {\n let router = $ea8dcbcb9ea1b556$export$9a302a45f65d0572();\n var _props_href;\n const href = router.useHref((_props_href = props === null || props === void 0 ? void 0 : props.href) !== null && _props_href !== void 0 ? _props_href : '');\n return {\n href: (props === null || props === void 0 ? void 0 : props.href) ? href : undefined,\n target: props === null || props === void 0 ? void 0 : props.target,\n rel: props === null || props === void 0 ? void 0 : props.rel,\n download: props === null || props === void 0 ? void 0 : props.download,\n ping: props === null || props === void 0 ? void 0 : props.ping,\n referrerPolicy: props === null || props === void 0 ? void 0 : props.referrerPolicy\n };\n}\n\n\nexport {$ea8dcbcb9ea1b556$export$323e4fc2fa4753fb as RouterProvider, $ea8dcbcb9ea1b556$export$efa8c9099e530235 as shouldClientNavigate, $ea8dcbcb9ea1b556$export$95185d699e05d4d7 as openLink, $ea8dcbcb9ea1b556$export$9a302a45f65d0572 as useRouter, $ea8dcbcb9ea1b556$export$bdc77b0c0a3a85d6 as useSyntheticLinkProps, $ea8dcbcb9ea1b556$export$51437d503373d223 as getSyntheticLinkProps, $ea8dcbcb9ea1b556$export$7e924b3091a3bd18 as useLinkProps};\n//# sourceMappingURL=openLink.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var _window_navigator_userAgentData;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var _window_navigator_userAgentData;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n let res = null;\n return ()=>{\n if (res == null) res = fn();\n return res;\n };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet $bbed8b41f857bcc0$var$transitionsByElement = new Map();\n// A list of callbacks to call once there are no transitioning elements.\nlet $bbed8b41f857bcc0$var$transitionCallbacks = new Set();\nfunction $bbed8b41f857bcc0$var$setupGlobalEvents() {\n if (typeof window === 'undefined') return;\n function isTransitionEvent(event) {\n return 'propertyName' in event;\n }\n let onTransitionStart = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Add the transitioning property to the list for this element.\n let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n $bbed8b41f857bcc0$var$transitionsByElement.set(e.target, transitions);\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd, {\n once: true\n });\n }\n transitions.add(e.propertyName);\n };\n let onTransitionEnd = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Remove property from list of transitioning properties.\n let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!properties) return;\n properties.delete(e.propertyName);\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n $bbed8b41f857bcc0$var$transitionsByElement.delete(e.target);\n }\n // If no transitioning elements, call all of the queued callbacks.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) {\n for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks)cb();\n $bbed8b41f857bcc0$var$transitionCallbacks.clear();\n }\n };\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') $bbed8b41f857bcc0$var$setupGlobalEvents();\n else document.addEventListener('DOMContentLoaded', $bbed8b41f857bcc0$var$setupGlobalEvents);\n}\nfunction $bbed8b41f857bcc0$export$24490316f764c430(fn) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(()=>{\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) fn();\n else $bbed8b41f857bcc0$var$transitionCallbacks.add(fn);\n });\n}\n\n\nexport {$bbed8b41f857bcc0$export$24490316f764c430 as runAfterTransition};\n//# sourceMappingURL=runAfterTransition.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n const ref = (0, $lmaYr$useRef)(null);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n ref.current = fn;\n }, [\n fn\n ]);\n // @ts-ignore\n return (0, $lmaYr$useCallback)((...args)=>{\n const f = ref.current;\n return f === null || f === void 0 ? void 0 : f(...args);\n }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","import {useEffectEvent as $8ae05eaa5c114e9c$export$7f54fc3180508a52} from \"./useEffectEvent.mjs\";\nimport {useRef as $8rM3G$useRef, useEffect as $8rM3G$useEffect} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $99facab73266f662$export$5add1d006293d136(ref, initialValue, onReset) {\n let resetValue = (0, $8rM3G$useRef)(initialValue);\n let handleReset = (0, $8ae05eaa5c114e9c$export$7f54fc3180508a52)(()=>{\n if (onReset) onReset(resetValue.current);\n });\n (0, $8rM3G$useEffect)(()=>{\n var _ref_current;\n let form = ref === null || ref === void 0 ? void 0 : (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.form;\n form === null || form === void 0 ? void 0 : form.addEventListener('reset', handleReset);\n return ()=>{\n form === null || form === void 0 ? void 0 : form.removeEventListener('reset', handleReset);\n };\n }, [\n ref,\n handleReset\n ]);\n}\n\n\nexport {$99facab73266f662$export$5add1d006293d136 as useFormReset};\n//# sourceMappingURL=useFormReset.module.js.map\n","import {useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = (0, $lPAwt$useRef)(new Map());\n let addGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n var _globalListeners_current_get;\n let fn = ((_globalListeners_current_get = globalListeners.current.get(listener)) === null || _globalListeners_current_get === void 0 ? void 0 : _globalListeners_current_get.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = (0, $lPAwt$useCallback)(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n (0, $lPAwt$useEffect)(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\nexport {$03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners};\n//# sourceMappingURL=useGlobalListeners.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useValueEffect as $1dbecbe27a04f9af$export$14d238f342723f25} from \"./useValueEffect.mjs\";\nimport {useState as $eKkEp$useState, useRef as $eKkEp$useRef, useCallback as $eKkEp$useCallback, useEffect as $eKkEp$useEffect} from \"react\";\nimport {useSSRSafeId as $eKkEp$useSSRSafeId} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet $bdb11010cef70236$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $bdb11010cef70236$var$idsUpdaterMap = new Map();\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = (0, $eKkEp$useState)(defaultId);\n let nextId = (0, $eKkEp$useRef)(null);\n let res = (0, $eKkEp$useSSRSafeId)(value);\n let updateValue = (0, $eKkEp$useCallback)((val)=>{\n nextId.current = val;\n }, []);\n if ($bdb11010cef70236$var$canUseDOM) {\n // TS not smart enough to know that `has` means the value exists\n if ($bdb11010cef70236$var$idsUpdaterMap.has(res) && !$bdb11010cef70236$var$idsUpdaterMap.get(res).includes(updateValue)) $bdb11010cef70236$var$idsUpdaterMap.set(res, [\n ...$bdb11010cef70236$var$idsUpdaterMap.get(res),\n updateValue\n ]);\n else $bdb11010cef70236$var$idsUpdaterMap.set(res, [\n updateValue\n ]);\n }\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n let r = res;\n return ()=>{\n $bdb11010cef70236$var$idsUpdaterMap.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n (0, $eKkEp$useEffect)(()=>{\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdsA = $bdb11010cef70236$var$idsUpdaterMap.get(idA);\n if (setIdsA) {\n setIdsA.forEach((fn)=>fn(idB));\n return idB;\n }\n let setIdsB = $bdb11010cef70236$var$idsUpdaterMap.get(idB);\n if (setIdsB) {\n setIdsB.forEach((fn)=>fn(idA));\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = (0, $1dbecbe27a04f9af$export$14d238f342723f25)(id);\n let updateId = (0, $eKkEp$useCallback)(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nexport {$bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId};\n//# sourceMappingURL=useId.module.js.map\n","import {useEffectEvent as $8ae05eaa5c114e9c$export$7f54fc3180508a52} from \"./useEffectEvent.mjs\";\nimport {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useState as $fCAlL$useState, useRef as $fCAlL$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $1dbecbe27a04f9af$export$14d238f342723f25(defaultValue) {\n let [value, setValue] = (0, $fCAlL$useState)(defaultValue);\n let effect = (0, $fCAlL$useRef)(null);\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n let nextRef = (0, $8ae05eaa5c114e9c$export$7f54fc3180508a52)(()=>{\n if (!effect.current) return;\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) nextRef();\n else setValue(newValue.value);\n });\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) nextRef();\n });\n let queue = (0, $8ae05eaa5c114e9c$export$7f54fc3180508a52)((fn)=>{\n effect.current = fn(value);\n nextRef();\n });\n return [\n value,\n queue\n ];\n}\n\n\nexport {$1dbecbe27a04f9af$export$14d238f342723f25 as useValueEffect};\n//# sourceMappingURL=useValueEffect.module.js.map\n","import {useId as $bdb11010cef70236$export$f680877a34711e37} from \"./useId.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $313b98861ee5dd6c$export$d6875122194c7b44(props, defaultLabel) {\n let { id: id, 'aria-label': label, 'aria-labelledby': labelledBy } = props;\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = (0, $bdb11010cef70236$export$f680877a34711e37)(id);\n if (labelledBy && label) {\n let ids = new Set([\n id,\n ...labelledBy.trim().split(/\\s+/)\n ]);\n labelledBy = [\n ...ids\n ].join(' ');\n } else if (labelledBy) labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) label = defaultLabel;\n return {\n id: id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy\n };\n}\n\n\nexport {$313b98861ee5dd6c$export$d6875122194c7b44 as useLabels};\n//# sourceMappingURL=useLabels.module.js.map\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useRef as $gbmns$useRef, useMemo as $gbmns$useMemo} from \"react\";\n\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $df56164dff5785e2$export$4338b53315abf666(forwardedRef) {\n const objRef = (0, $gbmns$useRef)(null);\n return (0, $gbmns$useMemo)(()=>({\n get current () {\n return objRef.current;\n },\n set current (value){\n objRef.current = value;\n if (typeof forwardedRef === 'function') forwardedRef(value);\n else if (forwardedRef) forwardedRef.current = value;\n }\n }), [\n forwardedRef\n ]);\n}\n\n\nexport {$df56164dff5785e2$export$4338b53315abf666 as useObjectRef};\n//# sourceMappingURL=useObjectRef.module.js.map\n","import {useEffect as $Vsl8o$useEffect} from \"react\";\n\n\nfunction $9daab02d461809db$var$hasResizeObserver() {\n return typeof window.ResizeObserver !== 'undefined';\n}\nfunction $9daab02d461809db$export$683480f191c0e3ea(options) {\n const { ref: ref, box: box, onResize: onResize } = options;\n (0, $Vsl8o$useEffect)(()=>{\n let element = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!element) return;\n if (!$9daab02d461809db$var$hasResizeObserver()) {\n window.addEventListener('resize', onResize, false);\n return ()=>{\n window.removeEventListener('resize', onResize, false);\n };\n } else {\n const resizeObserverInstance = new window.ResizeObserver((entries)=>{\n if (!entries.length) return;\n onResize();\n });\n resizeObserverInstance.observe(element, {\n box: box\n });\n return ()=>{\n if (element) resizeObserverInstance.unobserve(element);\n };\n }\n }, [\n onResize,\n ref,\n box\n ]);\n}\n\n\nexport {$9daab02d461809db$export$683480f191c0e3ea as useResizeObserver};\n//# sourceMappingURL=useResizeObserver.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $e7801be82b4b2a53$export$4debdb1a3f0fa79e(context, ref) {\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return ()=>{\n if (context.ref) context.ref.current = null;\n };\n }\n });\n}\n\n\nexport {$e7801be82b4b2a53$export$4debdb1a3f0fa79e as useSyncRef};\n//# sourceMappingURL=useSyncRef.module.js.map\n","import {mergeProps as $7JYt2$mergeProps} from \"@react-aria/utils\";\nimport $7JYt2$react, {useState as $7JYt2$useState, useMemo as $7JYt2$useMemo} from \"react\";\nimport {useFocusWithin as $7JYt2$useFocusWithin} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $5c3e21d68f1c4674$var$styles = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n width: '1px',\n whiteSpace: 'nowrap'\n};\nfunction $5c3e21d68f1c4674$export$a966af930f325cab(props = {}) {\n let { style: style, isFocusable: isFocusable } = props;\n let [isFocused, setFocused] = (0, $7JYt2$useState)(false);\n let { focusWithinProps: focusWithinProps } = (0, $7JYt2$useFocusWithin)({\n isDisabled: !isFocusable,\n onFocusWithinChange: (val)=>setFocused(val)\n });\n // If focused, don't hide the element.\n let combinedStyles = (0, $7JYt2$useMemo)(()=>{\n if (isFocused) return style;\n else if (style) return {\n ...$5c3e21d68f1c4674$var$styles,\n ...style\n };\n else return $5c3e21d68f1c4674$var$styles;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isFocused\n ]);\n return {\n visuallyHiddenProps: {\n ...focusWithinProps,\n style: combinedStyles\n }\n };\n}\nfunction $5c3e21d68f1c4674$export$439d29a4e110a164(props) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let { children: children, elementType: Element = 'div', isFocusable: isFocusable, style: style, ...otherProps } = props;\n let { visuallyHiddenProps: visuallyHiddenProps } = $5c3e21d68f1c4674$export$a966af930f325cab(props);\n return /*#__PURE__*/ (0, $7JYt2$react).createElement(Element, (0, $7JYt2$mergeProps)(otherProps, visuallyHiddenProps), children);\n}\n\n\nexport {$5c3e21d68f1c4674$export$a966af930f325cab as useVisuallyHidden, $5c3e21d68f1c4674$export$439d29a4e110a164 as VisuallyHidden};\n//# sourceMappingURL=VisuallyHidden.module.js.map\n","import $6Fm0V$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $c1d7fb2ec91bae71$var$Item(props) {\n return null;\n}\n$c1d7fb2ec91bae71$var$Item.getCollectionNode = function* getCollectionNode(props, context) {\n let { childItems: childItems, title: title, children: children } = props;\n let rendered = props.title || props.children;\n let textValue = props.textValue || (typeof rendered === 'string' ? rendered : '') || props['aria-label'] || '';\n // suppressTextValueWarning is used in components like Tabs, which don't have type to select support.\n if (!textValue && !(context === null || context === void 0 ? void 0 : context.suppressTextValueWarning)) console.warn('<Item> with non-plain text contents is unsupported by type to select for accessibility. Please add a `textValue` prop.');\n yield {\n type: 'item',\n props: props,\n rendered: rendered,\n textValue: textValue,\n 'aria-label': props['aria-label'],\n hasChildNodes: $c1d7fb2ec91bae71$var$hasChildItems(props),\n *childNodes () {\n if (childItems) for (let child of childItems)yield {\n type: 'item',\n value: child\n };\n else if (title) {\n let items = [];\n (0, $6Fm0V$react).Children.forEach(children, (child)=>{\n items.push({\n type: 'item',\n element: child\n });\n });\n yield* items;\n }\n }\n };\n};\nfunction $c1d7fb2ec91bae71$var$hasChildItems(props) {\n if (props.hasChildItems != null) return props.hasChildItems;\n if (props.childItems) return true;\n if (props.title && (0, $6Fm0V$react).Children.count(props.children) > 0) return true;\n return false;\n}\n// We don't want getCollectionNode to show up in the type definition\nlet $c1d7fb2ec91bae71$export$6d08773d2e66f8f2 = $c1d7fb2ec91bae71$var$Item;\n\n\nexport {$c1d7fb2ec91bae71$export$6d08773d2e66f8f2 as Item};\n//# sourceMappingURL=Item.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c5a24bc478652b5f$export$1005530eda016c13(node, collection) {\n // New API: call collection.getChildren with the node key.\n if (typeof collection.getChildren === 'function') return collection.getChildren(node.key);\n // Old API: access childNodes directly.\n return node.childNodes;\n}\nfunction $c5a24bc478652b5f$export$fbdeaa6a76694f71(iterable) {\n return $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, 0);\n}\nfunction $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, index) {\n if (index < 0) return undefined;\n let i = 0;\n for (let item of iterable){\n if (i === index) return item;\n i++;\n }\n}\nfunction $c5a24bc478652b5f$export$7475b2c64539e4cf(iterable) {\n let lastItem = undefined;\n for (let value of iterable)lastItem = value;\n return lastItem;\n}\nfunction $c5a24bc478652b5f$export$8c434b3a7a4dad6(collection, a, b) {\n // If the two nodes have the same parent, compare their indices.\n if (a.parentKey === b.parentKey) return a.index - b.index;\n // Otherwise, collect all of the ancestors from each node, and find the first one that doesn't match starting from the root.\n // Include the base nodes in case we are comparing nodes of different levels so that we can compare the higher node to the lower level node's\n // ancestor of the same level\n let aAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, a),\n a\n ];\n let bAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, b),\n b\n ];\n let firstNonMatchingAncestor = aAncestors.slice(0, bAncestors.length).findIndex((a, i)=>a !== bAncestors[i]);\n if (firstNonMatchingAncestor !== -1) {\n // Compare the indices of two children within the common ancestor.\n a = aAncestors[firstNonMatchingAncestor];\n b = bAncestors[firstNonMatchingAncestor];\n return a.index - b.index;\n }\n // If there isn't a non matching ancestor, we might be in a case where one of the nodes is the ancestor of the other.\n if (aAncestors.findIndex((node)=>node === b) >= 0) return 1;\n else if (bAncestors.findIndex((node)=>node === a) >= 0) return -1;\n // 🤷\n return -1;\n}\nfunction $c5a24bc478652b5f$var$getAncestors(collection, node) {\n let parents = [];\n let currNode = node;\n while((currNode === null || currNode === void 0 ? void 0 : currNode.parentKey) != null){\n currNode = collection.getItem(currNode.parentKey);\n if (currNode) parents.unshift(currNode);\n }\n return parents;\n}\n\n\nexport {$c5a24bc478652b5f$export$1005530eda016c13 as getChildNodes, $c5a24bc478652b5f$export$fbdeaa6a76694f71 as getFirstItem, $c5a24bc478652b5f$export$5f3398f8733f90e2 as getNthItem, $c5a24bc478652b5f$export$7475b2c64539e4cf as getLastItem, $c5a24bc478652b5f$export$8c434b3a7a4dad6 as compareNodeOrder};\n//# sourceMappingURL=getChildNodes.module.js.map\n","import {getChildNodes as $c5a24bc478652b5f$export$1005530eda016c13} from \"./getChildNodes.mjs\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $453cc9f0df89c0a5$var$cache = new WeakMap();\nfunction $453cc9f0df89c0a5$export$77d5aafae4e095b2(collection) {\n let count = $453cc9f0df89c0a5$var$cache.get(collection);\n if (count != null) return count;\n // TS isn't smart enough to know we've ensured count is a number, so use a new variable\n let counter = 0;\n let countItems = (items)=>{\n for (let item of items)if (item.type === 'section') countItems((0, $c5a24bc478652b5f$export$1005530eda016c13)(item, collection));\n else counter++;\n };\n countItems(collection);\n $453cc9f0df89c0a5$var$cache.set(collection, counter);\n return counter;\n}\n\n\nexport {$453cc9f0df89c0a5$export$77d5aafae4e095b2 as getItemCount};\n//# sourceMappingURL=getItemCount.module.js.map\n","import {useFormValidationState as $49BJP$useFormValidationState} from \"@react-stately/form\";\nimport {getChildNodes as $49BJP$getChildNodes} from \"@react-stately/collections\";\nimport {useSingleSelectListState as $49BJP$useSingleSelectListState, ListCollection as $49BJP$ListCollection} from \"@react-stately/list\";\nimport {useState as $49BJP$useState, useMemo as $49BJP$useMemo, useRef as $49BJP$useRef, useCallback as $49BJP$useCallback, useEffect as $49BJP$useEffect} from \"react\";\nimport {useControlledState as $49BJP$useControlledState} from \"@react-stately/utils\";\nimport {useOverlayTriggerState as $49BJP$useOverlayTriggerState} from \"@react-stately/overlays\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\nfunction $a9e7382a7d111cb5$export$b453a3bfd4a5fa9e(props) {\n var _collection_getItem;\n let { defaultFilter: defaultFilter, menuTrigger: menuTrigger = 'input', allowsEmptyCollection: allowsEmptyCollection = false, allowsCustomValue: allowsCustomValue, shouldCloseOnBlur: shouldCloseOnBlur = true } = props;\n let [showAllItems, setShowAllItems] = (0, $49BJP$useState)(false);\n let [isFocused, setFocusedState] = (0, $49BJP$useState)(false);\n let [focusStrategy, setFocusStrategy] = (0, $49BJP$useState)(null);\n let onSelectionChange = (key)=>{\n if (props.onSelectionChange) props.onSelectionChange(key);\n // If key is the same, reset the inputValue and close the menu\n // (scenario: user clicks on already selected option)\n if (key === selectedKey) {\n resetInputValue();\n closeMenu();\n }\n };\n var _props_items;\n let { collection: collection, selectionManager: selectionManager, selectedKey: selectedKey, setSelectedKey: setSelectedKey, selectedItem: selectedItem, disabledKeys: disabledKeys } = (0, $49BJP$useSingleSelectListState)({\n ...props,\n onSelectionChange: onSelectionChange,\n items: (_props_items = props.items) !== null && _props_items !== void 0 ? _props_items : props.defaultItems\n });\n let defaultInputValue = props.defaultInputValue;\n if (defaultInputValue == null) {\n var _collection_getItem1;\n var _collection_getItem_textValue;\n if (selectedKey == null) defaultInputValue = '';\n else defaultInputValue = (_collection_getItem_textValue = (_collection_getItem1 = collection.getItem(selectedKey)) === null || _collection_getItem1 === void 0 ? void 0 : _collection_getItem1.textValue) !== null && _collection_getItem_textValue !== void 0 ? _collection_getItem_textValue : '';\n }\n let [inputValue, setInputValue] = (0, $49BJP$useControlledState)(props.inputValue, defaultInputValue, props.onInputChange);\n // Preserve original collection so we can show all items on demand\n let originalCollection = collection;\n let filteredCollection = (0, $49BJP$useMemo)(()=>// No default filter if items are controlled.\n props.items != null || !defaultFilter ? collection : $a9e7382a7d111cb5$var$filterCollection(collection, inputValue, defaultFilter), [\n collection,\n inputValue,\n defaultFilter,\n props.items\n ]);\n let [lastCollection, setLastCollection] = (0, $49BJP$useState)(filteredCollection);\n // Track what action is attempting to open the menu\n let menuOpenTrigger = (0, $49BJP$useRef)('focus');\n let onOpenChange = (open)=>{\n if (props.onOpenChange) props.onOpenChange(open, open ? menuOpenTrigger.current : undefined);\n selectionManager.setFocused(open);\n if (!open) selectionManager.setFocusedKey(null);\n };\n let triggerState = (0, $49BJP$useOverlayTriggerState)({\n ...props,\n onOpenChange: onOpenChange,\n isOpen: undefined,\n defaultOpen: undefined\n });\n let open = (focusStrategy = null, trigger)=>{\n let displayAllItems = trigger === 'manual' || trigger === 'focus' && menuTrigger === 'focus';\n // Prevent open operations from triggering if there is nothing to display\n // Also prevent open operations from triggering if items are uncontrolled but defaultItems is empty, even if displayAllItems is true.\n // This is to prevent comboboxes with empty defaultItems from opening but allow controlled items comboboxes to open even if the inital list is empty (assumption is user will provide swap the empty list with a base list via onOpenChange returning `menuTrigger` manual)\n if (allowsEmptyCollection || filteredCollection.size > 0 || displayAllItems && originalCollection.size > 0 || props.items) {\n if (displayAllItems && !triggerState.isOpen && props.items === undefined) // Show all items if menu is manually opened. Only care about this if items are undefined\n setShowAllItems(true);\n menuOpenTrigger.current = trigger;\n setFocusStrategy(focusStrategy);\n triggerState.open();\n }\n };\n let toggle = (focusStrategy = null, trigger)=>{\n let displayAllItems = trigger === 'manual' || trigger === 'focus' && menuTrigger === 'focus';\n // If the menu is closed and there is nothing to display, early return so toggle isn't called to prevent extraneous onOpenChange\n if (!(allowsEmptyCollection || filteredCollection.size > 0 || displayAllItems && originalCollection.size > 0 || props.items) && !triggerState.isOpen) return;\n if (displayAllItems && !triggerState.isOpen && props.items === undefined) // Show all items if menu is toggled open. Only care about this if items are undefined\n setShowAllItems(true);\n // Only update the menuOpenTrigger if menu is currently closed\n if (!triggerState.isOpen) menuOpenTrigger.current = trigger;\n toggleMenu(focusStrategy);\n };\n let updateLastCollection = (0, $49BJP$useCallback)(()=>{\n setLastCollection(showAllItems ? originalCollection : filteredCollection);\n }, [\n showAllItems,\n originalCollection,\n filteredCollection\n ]);\n // If menu is going to close, save the current collection so we can freeze the displayed collection when the\n // user clicks outside the popover to close the menu. Prevents the menu contents from updating as the menu closes.\n let toggleMenu = (0, $49BJP$useCallback)((focusStrategy = null)=>{\n if (triggerState.isOpen) updateLastCollection();\n setFocusStrategy(focusStrategy);\n triggerState.toggle();\n }, [\n triggerState,\n updateLastCollection\n ]);\n let closeMenu = (0, $49BJP$useCallback)(()=>{\n if (triggerState.isOpen) {\n updateLastCollection();\n triggerState.close();\n }\n }, [\n triggerState,\n updateLastCollection\n ]);\n let [lastValue, setLastValue] = (0, $49BJP$useState)(inputValue);\n let resetInputValue = ()=>{\n var _collection_getItem;\n var _collection_getItem_textValue;\n let itemText = selectedKey != null ? (_collection_getItem_textValue = (_collection_getItem = collection.getItem(selectedKey)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.textValue) !== null && _collection_getItem_textValue !== void 0 ? _collection_getItem_textValue : '' : '';\n setLastValue(itemText);\n setInputValue(itemText);\n };\n var _props_selectedKey, _ref;\n let lastSelectedKey = (0, $49BJP$useRef)((_ref = (_props_selectedKey = props.selectedKey) !== null && _props_selectedKey !== void 0 ? _props_selectedKey : props.defaultSelectedKey) !== null && _ref !== void 0 ? _ref : null);\n var _collection_getItem_textValue1;\n let lastSelectedKeyText = (0, $49BJP$useRef)(selectedKey != null ? (_collection_getItem_textValue1 = (_collection_getItem = collection.getItem(selectedKey)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.textValue) !== null && _collection_getItem_textValue1 !== void 0 ? _collection_getItem_textValue1 : '' : '');\n // intentional omit dependency array, want this to happen on every render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n (0, $49BJP$useEffect)(()=>{\n var _collection_getItem;\n // Open and close menu automatically when the input value changes if the input is focused,\n // and there are items in the collection or allowEmptyCollection is true.\n if (isFocused && (filteredCollection.size > 0 || allowsEmptyCollection) && !triggerState.isOpen && inputValue !== lastValue && menuTrigger !== 'manual') open(null, 'input');\n // Close the menu if the collection is empty. Don't close menu if filtered collection size is 0\n // but we are currently showing all items via button press\n if (!showAllItems && !allowsEmptyCollection && triggerState.isOpen && filteredCollection.size === 0) closeMenu();\n // Close when an item is selected.\n if (selectedKey != null && selectedKey !== lastSelectedKey.current) closeMenu();\n // Clear focused key when input value changes and display filtered collection again.\n if (inputValue !== lastValue) {\n selectionManager.setFocusedKey(null);\n setShowAllItems(false);\n // Set selectedKey to null when the user clears the input.\n // If controlled, this is the application developer's responsibility.\n if (inputValue === '' && (props.inputValue === undefined || props.selectedKey === undefined)) setSelectedKey(null);\n }\n // If the selectedKey changed, update the input value.\n // Do nothing if both inputValue and selectedKey are controlled.\n // In this case, it's the user's responsibility to update inputValue in onSelectionChange.\n if (selectedKey !== lastSelectedKey.current && (props.inputValue === undefined || props.selectedKey === undefined)) resetInputValue();\n else if (lastValue !== inputValue) setLastValue(inputValue);\n var _collection_getItem_textValue;\n // Update the inputValue if the selected item's text changes from its last tracked value.\n // This is to handle cases where a selectedKey is specified but the items aren't available (async loading) or the selected item's text value updates.\n // Only reset if the user isn't currently within the field so we don't erroneously modify user input.\n // If inputValue is controlled, it is the user's responsibility to update the inputValue when items change.\n let selectedItemText = selectedKey != null ? (_collection_getItem_textValue = (_collection_getItem = collection.getItem(selectedKey)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.textValue) !== null && _collection_getItem_textValue !== void 0 ? _collection_getItem_textValue : '' : '';\n if (!isFocused && selectedKey != null && props.inputValue === undefined && selectedKey === lastSelectedKey.current) {\n if (lastSelectedKeyText.current !== selectedItemText) {\n setLastValue(selectedItemText);\n setInputValue(selectedItemText);\n }\n }\n lastSelectedKey.current = selectedKey;\n lastSelectedKeyText.current = selectedItemText;\n });\n let validation = (0, $49BJP$useFormValidationState)({\n ...props,\n value: (0, $49BJP$useMemo)(()=>({\n inputValue: inputValue,\n selectedKey: selectedKey\n }), [\n inputValue,\n selectedKey\n ])\n });\n // Revert input value and close menu\n let revert = ()=>{\n if (allowsCustomValue && selectedKey == null) commitCustomValue();\n else commitSelection();\n };\n let commitCustomValue = ()=>{\n lastSelectedKey.current = null;\n setSelectedKey(null);\n closeMenu();\n };\n let commitSelection = ()=>{\n // If multiple things are controlled, call onSelectionChange\n if (props.selectedKey !== undefined && props.inputValue !== undefined) {\n var _props_onSelectionChange, _collection_getItem;\n (_props_onSelectionChange = props.onSelectionChange) === null || _props_onSelectionChange === void 0 ? void 0 : _props_onSelectionChange.call(props, selectedKey);\n var _collection_getItem_textValue;\n // Stop menu from reopening from useEffect\n let itemText = selectedKey != null ? (_collection_getItem_textValue = (_collection_getItem = collection.getItem(selectedKey)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.textValue) !== null && _collection_getItem_textValue !== void 0 ? _collection_getItem_textValue : '' : '';\n setLastValue(itemText);\n closeMenu();\n } else {\n // If only a single aspect of combobox is controlled, reset input value and close menu for the user\n resetInputValue();\n closeMenu();\n }\n };\n const commitValue = ()=>{\n if (allowsCustomValue) {\n var _collection_getItem;\n var _collection_getItem_textValue;\n const itemText = selectedKey != null ? (_collection_getItem_textValue = (_collection_getItem = collection.getItem(selectedKey)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.textValue) !== null && _collection_getItem_textValue !== void 0 ? _collection_getItem_textValue : '' : '';\n inputValue === itemText ? commitSelection() : commitCustomValue();\n } else // Reset inputValue and close menu\n commitSelection();\n };\n let commit = ()=>{\n if (triggerState.isOpen && selectionManager.focusedKey != null) {\n // Reset inputValue and close menu here if the selected key is already the focused key. Otherwise\n // fire onSelectionChange to allow the application to control the closing.\n if (selectedKey === selectionManager.focusedKey) commitSelection();\n else setSelectedKey(selectionManager.focusedKey);\n } else commitValue();\n };\n let valueOnFocus = (0, $49BJP$useRef)(inputValue);\n let setFocused = (isFocused)=>{\n if (isFocused) {\n valueOnFocus.current = inputValue;\n if (menuTrigger === 'focus' && !props.isReadOnly) open(null, 'focus');\n } else {\n if (shouldCloseOnBlur) commitValue();\n if (inputValue !== valueOnFocus.current) validation.commitValidation();\n }\n setFocusedState(isFocused);\n };\n let displayedCollection = (0, $49BJP$useMemo)(()=>{\n if (triggerState.isOpen) {\n if (showAllItems) return originalCollection;\n else return filteredCollection;\n } else return lastCollection;\n }, [\n triggerState.isOpen,\n originalCollection,\n filteredCollection,\n showAllItems,\n lastCollection\n ]);\n return {\n ...validation,\n ...triggerState,\n focusStrategy: focusStrategy,\n toggle: toggle,\n open: open,\n close: commitValue,\n selectionManager: selectionManager,\n selectedKey: selectedKey,\n setSelectedKey: setSelectedKey,\n disabledKeys: disabledKeys,\n isFocused: isFocused,\n setFocused: setFocused,\n selectedItem: selectedItem,\n collection: displayedCollection,\n inputValue: inputValue,\n setInputValue: setInputValue,\n commit: commit,\n revert: revert\n };\n}\nfunction $a9e7382a7d111cb5$var$filterCollection(collection, inputValue, filter) {\n return new (0, $49BJP$ListCollection)($a9e7382a7d111cb5$var$filterNodes(collection, collection, inputValue, filter));\n}\nfunction $a9e7382a7d111cb5$var$filterNodes(collection, nodes, inputValue, filter) {\n let filteredNode = [];\n for (let node of nodes){\n if (node.type === 'section' && node.hasChildNodes) {\n let filtered = $a9e7382a7d111cb5$var$filterNodes(collection, (0, $49BJP$getChildNodes)(node, collection), inputValue, filter);\n if ([\n ...filtered\n ].some((node)=>node.type === 'item')) filteredNode.push({\n ...node,\n childNodes: filtered\n });\n } else if (node.type === 'item' && filter(node.textValue, inputValue)) filteredNode.push({\n ...node\n });\n else if (node.type !== 'item') filteredNode.push({\n ...node\n });\n }\n return filteredNode;\n}\n\n\nexport {$a9e7382a7d111cb5$export$b453a3bfd4a5fa9e as useComboBoxState};\n//# sourceMappingURL=useComboBoxState.module.js.map\n","import {createContext as $69F46$createContext, useMemo as $69F46$useMemo, useContext as $69F46$useContext, useState as $69F46$useState, useRef as $69F46$useRef, useEffect as $69F46$useEffect} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $e5be200c675c3b3a$export$aca958c65c314e6c = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true\n};\nconst $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c,\n customError: true,\n valid: false\n};\nconst $e5be200c675c3b3a$export$dad6ae84456c676a = {\n isInvalid: false,\n validationDetails: $e5be200c675c3b3a$export$aca958c65c314e6c,\n validationErrors: []\n};\nconst $e5be200c675c3b3a$export$571b5131b7e65c11 = (0, $69F46$createContext)({});\nconst $e5be200c675c3b3a$export$a763b9476acd3eb = '__formValidationState' + Date.now();\nfunction $e5be200c675c3b3a$export$fc1a364ae1f3ff10(props) {\n // Private prop for parent components to pass state to children.\n if (props[$e5be200c675c3b3a$export$a763b9476acd3eb]) {\n let { realtimeValidation: realtimeValidation, displayValidation: displayValidation, updateValidation: updateValidation, resetValidation: resetValidation, commitValidation: commitValidation } = props[$e5be200c675c3b3a$export$a763b9476acd3eb];\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation: updateValidation,\n resetValidation: resetValidation,\n commitValidation: commitValidation\n };\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return $e5be200c675c3b3a$var$useFormValidationStateImpl(props);\n}\nfunction $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {\n let { isInvalid: isInvalid, validationState: validationState, name: name, value: value, builtinValidation: builtinValidation, validate: validate, validationBehavior: validationBehavior = 'aria' } = props;\n // backward compatibility.\n if (validationState) isInvalid || (isInvalid = validationState === 'invalid');\n // If the isInvalid prop is controlled, update validation result in realtime.\n let controlledError = isInvalid !== undefined ? {\n isInvalid: isInvalid,\n validationErrors: [],\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n // Perform custom client side validation.\n let clientError = (0, $69F46$useMemo)(()=>{\n if (!validate || value == null) return null;\n let validateErrors = $e5be200c675c3b3a$var$runValidate(validate, value);\n return $e5be200c675c3b3a$var$getValidationResult(validateErrors);\n }, [\n validate,\n value\n ]);\n if (builtinValidation === null || builtinValidation === void 0 ? void 0 : builtinValidation.validationDetails.valid) builtinValidation = undefined;\n // Get relevant server errors from the form.\n let serverErrors = (0, $69F46$useContext)($e5be200c675c3b3a$export$571b5131b7e65c11);\n let serverErrorMessages = (0, $69F46$useMemo)(()=>{\n if (name) return Array.isArray(name) ? name.flatMap((name)=>$e5be200c675c3b3a$var$asArray(serverErrors[name])) : $e5be200c675c3b3a$var$asArray(serverErrors[name]);\n return [];\n }, [\n serverErrors,\n name\n ]);\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = (0, $69F46$useState)(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = (0, $69F46$useState)(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n let serverError = (0, $69F46$useMemo)(()=>$e5be200c675c3b3a$var$getValidationResult(isServerErrorCleared ? [] : serverErrorMessages), [\n isServerErrorCleared,\n serverErrorMessages\n ]);\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let [currentValidity, setCurrentValidity] = (0, $69F46$useState)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let lastError = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let commitValidation = ()=>{\n if (!commitQueued) return;\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n let [commitQueued, setCommitQueued] = (0, $69F46$useState)(false);\n (0, $69F46$useEffect)(commitValidation);\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation = controlledError || serverError || clientError || builtinValidation || $e5be200c675c3b3a$export$dad6ae84456c676a;\n let displayValidation = validationBehavior === 'native' ? controlledError || serverError || currentValidity : controlledError || serverError || clientError || builtinValidation || currentValidity;\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation (value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !$e5be200c675c3b3a$var$isEqualValidation(currentValidity, value)) setCurrentValidity(value);\n else nextValidation.current = value;\n },\n resetValidation () {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = $e5be200c675c3b3a$export$dad6ae84456c676a;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') setCommitQueued(false);\n setServerErrorCleared(true);\n },\n commitValidation () {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') setCommitQueued(true);\n setServerErrorCleared(true);\n }\n };\n}\nfunction $e5be200c675c3b3a$var$asArray(v) {\n if (!v) return [];\n return Array.isArray(v) ? v : [\n v\n ];\n}\nfunction $e5be200c675c3b3a$var$runValidate(validate, value) {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') return $e5be200c675c3b3a$var$asArray(e);\n }\n return [];\n}\nfunction $e5be200c675c3b3a$var$getValidationResult(errors) {\n return errors.length ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n}\nfunction $e5be200c675c3b3a$var$isEqualValidation(a, b) {\n if (a === b) return true;\n return !!a && !!b && a.isInvalid === b.isInvalid && a.validationErrors.length === b.validationErrors.length && a.validationErrors.every((a, i)=>a === b.validationErrors[i]) && Object.entries(a.validationDetails).every(([k, v])=>b.validationDetails[k] === v);\n}\nfunction $e5be200c675c3b3a$export$75ee7c75d68f5b0e(...results) {\n let errors = new Set();\n let isInvalid = false;\n let validationDetails = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c\n };\n for (let v of results){\n var _validationDetails, _key;\n for (let e of v.validationErrors)errors.add(e);\n // Only these properties apply for checkboxes.\n isInvalid || (isInvalid = v.isInvalid);\n for(let key in validationDetails)(_validationDetails = validationDetails)[_key = key] || (_validationDetails[_key] = v.validationDetails[key]);\n }\n validationDetails.valid = !isInvalid;\n return {\n isInvalid: isInvalid,\n validationErrors: [\n ...errors\n ],\n validationDetails: validationDetails\n };\n}\n\n\nexport {$e5be200c675c3b3a$export$aca958c65c314e6c as VALID_VALIDITY_STATE, $e5be200c675c3b3a$export$dad6ae84456c676a as DEFAULT_VALIDATION_RESULT, $e5be200c675c3b3a$export$571b5131b7e65c11 as FormValidationContext, $e5be200c675c3b3a$export$a763b9476acd3eb as privateValidationStateProp, $e5be200c675c3b3a$export$fc1a364ae1f3ff10 as useFormValidationState, $e5be200c675c3b3a$export$75ee7c75d68f5b0e as mergeValidation};\n//# sourceMappingURL=useFormValidationState.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $a02d57049d202695$export$d085fb9e920b5ca7 {\n *[Symbol.iterator]() {\n yield* this.iterable;\n }\n get size() {\n return this.keyMap.size;\n }\n getKeys() {\n return this.keyMap.keys();\n }\n getKeyBefore(key) {\n let node = this.keyMap.get(key);\n var _node_prevKey;\n return node ? (_node_prevKey = node.prevKey) !== null && _node_prevKey !== void 0 ? _node_prevKey : null : null;\n }\n getKeyAfter(key) {\n let node = this.keyMap.get(key);\n var _node_nextKey;\n return node ? (_node_nextKey = node.nextKey) !== null && _node_nextKey !== void 0 ? _node_nextKey : null : null;\n }\n getFirstKey() {\n return this.firstKey;\n }\n getLastKey() {\n return this.lastKey;\n }\n getItem(key) {\n var _this_keyMap_get;\n return (_this_keyMap_get = this.keyMap.get(key)) !== null && _this_keyMap_get !== void 0 ? _this_keyMap_get : null;\n }\n at(idx) {\n const keys = [\n ...this.getKeys()\n ];\n return this.getItem(keys[idx]);\n }\n getChildren(key) {\n let node = this.keyMap.get(key);\n return (node === null || node === void 0 ? void 0 : node.childNodes) || [];\n }\n constructor(nodes){\n this.keyMap = new Map();\n this.firstKey = null;\n this.lastKey = null;\n this.iterable = nodes;\n let visit = (node)=>{\n this.keyMap.set(node.key, node);\n if (node.childNodes && node.type === 'section') for (let child of node.childNodes)visit(child);\n };\n for (let node of nodes)visit(node);\n let last = null;\n let index = 0;\n for (let [key, node] of this.keyMap){\n if (last) {\n last.nextKey = key;\n node.prevKey = last.key;\n } else {\n this.firstKey = key;\n node.prevKey = undefined;\n }\n if (node.type === 'item') node.index = index++;\n last = node;\n // Set nextKey as undefined since this might be the last node\n // If it isn't the last node, last.nextKey will properly set at start of new loop\n last.nextKey = undefined;\n }\n var _last_key;\n this.lastKey = (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n}\n\n\nexport {$a02d57049d202695$export$d085fb9e920b5ca7 as ListCollection};\n//# sourceMappingURL=ListCollection.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {useControlledState as $6tM1y$useControlledState} from \"@react-stately/utils\";\nimport {useRef as $6tM1y$useRef, useState as $6tM1y$useState, useMemo as $6tM1y$useMemo, useEffect as $6tM1y$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $7af3f5b51489e0b5$var$equalSets(setA, setB) {\n if (setA.size !== setB.size) return false;\n for (let item of setA){\n if (!setB.has(item)) return false;\n }\n return true;\n}\nfunction $7af3f5b51489e0b5$export$253fe78d46329472(props) {\n let { selectionMode: selectionMode = 'none', disallowEmptySelection: disallowEmptySelection = false, allowDuplicateSelectionEvents: allowDuplicateSelectionEvents, selectionBehavior: selectionBehaviorProp = 'toggle', disabledBehavior: disabledBehavior = 'all' } = props;\n // We want synchronous updates to `isFocused` and `focusedKey` after their setters are called.\n // But we also need to trigger a react re-render. So, we have both a ref (sync) and state (async).\n let isFocusedRef = (0, $6tM1y$useRef)(false);\n let [, setFocused] = (0, $6tM1y$useState)(false);\n let focusedKeyRef = (0, $6tM1y$useRef)(null);\n let childFocusStrategyRef = (0, $6tM1y$useRef)(null);\n let [, setFocusedKey] = (0, $6tM1y$useState)(null);\n let selectedKeysProp = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.selectedKeys), [\n props.selectedKeys\n ]);\n let defaultSelectedKeys = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.defaultSelectedKeys, new (0, $e40ea825a81a3709$export$52baac22726c72bf)()), [\n props.defaultSelectedKeys\n ]);\n let [selectedKeys, setSelectedKeys] = (0, $6tM1y$useControlledState)(selectedKeysProp, defaultSelectedKeys, props.onSelectionChange);\n let disabledKeysProp = (0, $6tM1y$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let [selectionBehavior, setSelectionBehavior] = (0, $6tM1y$useState)(selectionBehaviorProp);\n // If the selectionBehavior prop is set to replace, but the current state is toggle (e.g. due to long press\n // to enter selection mode on touch), and the selection becomes empty, reset the selection behavior.\n if (selectionBehaviorProp === 'replace' && selectionBehavior === 'toggle' && typeof selectedKeys === 'object' && selectedKeys.size === 0) setSelectionBehavior('replace');\n // If the selectionBehavior prop changes, update the state as well.\n let lastSelectionBehavior = (0, $6tM1y$useRef)(selectionBehaviorProp);\n (0, $6tM1y$useEffect)(()=>{\n if (selectionBehaviorProp !== lastSelectionBehavior.current) {\n setSelectionBehavior(selectionBehaviorProp);\n lastSelectionBehavior.current = selectionBehaviorProp;\n }\n }, [\n selectionBehaviorProp\n ]);\n return {\n selectionMode: selectionMode,\n disallowEmptySelection: disallowEmptySelection,\n selectionBehavior: selectionBehavior,\n setSelectionBehavior: setSelectionBehavior,\n get isFocused () {\n return isFocusedRef.current;\n },\n setFocused (f) {\n isFocusedRef.current = f;\n setFocused(f);\n },\n get focusedKey () {\n return focusedKeyRef.current;\n },\n get childFocusStrategy () {\n return childFocusStrategyRef.current;\n },\n setFocusedKey (k, childFocusStrategy = 'first') {\n focusedKeyRef.current = k;\n childFocusStrategyRef.current = childFocusStrategy;\n setFocusedKey(k);\n },\n selectedKeys: selectedKeys,\n setSelectedKeys (keys) {\n if (allowDuplicateSelectionEvents || !$7af3f5b51489e0b5$var$equalSets(keys, selectedKeys)) setSelectedKeys(keys);\n },\n disabledKeys: disabledKeysProp,\n disabledBehavior: disabledBehavior\n };\n}\nfunction $7af3f5b51489e0b5$var$convertSelection(selection, defaultValue) {\n if (!selection) return defaultValue;\n return selection === 'all' ? 'all' : new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selection);\n}\n\n\nexport {$7af3f5b51489e0b5$export$253fe78d46329472 as useMultipleSelectionState};\n//# sourceMappingURL=useMultipleSelectionState.module.js.map\n","import $fzaAv$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nclass $eb2240fc39a57fa5$export$bf788dd355e3a401 {\n build(props, context) {\n this.context = context;\n return $eb2240fc39a57fa5$var$iterable(()=>this.iterateCollection(props));\n }\n *iterateCollection(props) {\n let { children: children, items: items } = props;\n if ((0, $fzaAv$react).isValidElement(children) && children.type === (0, $fzaAv$react).Fragment) yield* this.iterateCollection({\n children: children.props.children,\n items: items\n });\n else if (typeof children === 'function') {\n if (!items) throw new Error('props.children was a function but props.items is missing');\n let index = 0;\n for (let item of items){\n yield* this.getFullNode({\n value: item,\n index: index\n }, {\n renderer: children\n });\n index++;\n }\n } else {\n let items = [];\n (0, $fzaAv$react).Children.forEach(children, (child)=>{\n if (child) items.push(child);\n });\n let index = 0;\n for (let item of items){\n let nodes = this.getFullNode({\n element: item,\n index: index\n }, {});\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n }\n }\n getKey(item, partialNode, state, parentKey) {\n if (item.key != null) return item.key;\n if (partialNode.type === 'cell' && partialNode.key != null) return `${parentKey}${partialNode.key}`;\n let v = partialNode.value;\n if (v != null) {\n var _v_key;\n let key = (_v_key = v.key) !== null && _v_key !== void 0 ? _v_key : v.id;\n if (key == null) throw new Error('No key found for item');\n return key;\n }\n return parentKey ? `${parentKey}.${partialNode.index}` : `$.${partialNode.index}`;\n }\n getChildState(state, partialNode) {\n return {\n renderer: partialNode.renderer || state.renderer\n };\n }\n *getFullNode(partialNode, state, parentKey, parentNode) {\n if ((0, $fzaAv$react).isValidElement(partialNode.element) && partialNode.element.type === (0, $fzaAv$react).Fragment) {\n let children = [];\n (0, $fzaAv$react).Children.forEach(partialNode.element.props.children, (child)=>{\n children.push(child);\n });\n var _partialNode_index;\n let index = (_partialNode_index = partialNode.index) !== null && _partialNode_index !== void 0 ? _partialNode_index : 0;\n for (const child of children)yield* this.getFullNode({\n element: child,\n index: index++\n }, state, parentKey, parentNode);\n return;\n }\n // If there's a value instead of an element on the node, and a parent renderer function is available,\n // use it to render an element for the value.\n let element = partialNode.element;\n if (!element && partialNode.value && state && state.renderer) {\n let cached = this.cache.get(partialNode.value);\n if (cached && (!cached.shouldInvalidate || !cached.shouldInvalidate(this.context))) {\n cached.index = partialNode.index;\n cached.parentKey = parentNode ? parentNode.key : null;\n yield cached;\n return;\n }\n element = state.renderer(partialNode.value);\n }\n // If there's an element with a getCollectionNode function on its type, then it's a supported component.\n // Call this function to get a partial node, and recursively build a full node from there.\n if ((0, $fzaAv$react).isValidElement(element)) {\n let type = element.type;\n if (typeof type !== 'function' && typeof type.getCollectionNode !== 'function') {\n let name = element.type;\n throw new Error(`Unknown element <${name}> in collection.`);\n }\n let childNodes = type.getCollectionNode(element.props, this.context);\n var _partialNode_index1;\n let index = (_partialNode_index1 = partialNode.index) !== null && _partialNode_index1 !== void 0 ? _partialNode_index1 : 0;\n let result = childNodes.next();\n while(!result.done && result.value){\n let childNode = result.value;\n partialNode.index = index;\n var _childNode_key;\n let nodeKey = (_childNode_key = childNode.key) !== null && _childNode_key !== void 0 ? _childNode_key : null;\n if (nodeKey == null) nodeKey = childNode.element ? null : this.getKey(element, partialNode, state, parentKey);\n let nodes = this.getFullNode({\n ...childNode,\n key: nodeKey,\n index: index,\n wrapper: $eb2240fc39a57fa5$var$compose(partialNode.wrapper, childNode.wrapper)\n }, this.getChildState(state, childNode), parentKey ? `${parentKey}${element.key}` : element.key, parentNode);\n let children = [\n ...nodes\n ];\n for (let node of children){\n var _childNode_value, _ref;\n // Cache the node based on its value\n node.value = (_ref = (_childNode_value = childNode.value) !== null && _childNode_value !== void 0 ? _childNode_value : partialNode.value) !== null && _ref !== void 0 ? _ref : null;\n if (node.value) this.cache.set(node.value, node);\n var _parentNode_type;\n // The partial node may have specified a type for the child in order to specify a constraint.\n // Verify that the full node that was built recursively matches this type.\n if (partialNode.type && node.type !== partialNode.type) throw new Error(`Unsupported type <${$eb2240fc39a57fa5$var$capitalize(node.type)}> in <${$eb2240fc39a57fa5$var$capitalize((_parentNode_type = parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) !== null && _parentNode_type !== void 0 ? _parentNode_type : 'unknown parent type')}>. Only <${$eb2240fc39a57fa5$var$capitalize(partialNode.type)}> is supported.`);\n index++;\n yield node;\n }\n result = childNodes.next(children);\n }\n return;\n }\n // Ignore invalid elements\n if (partialNode.key == null || partialNode.type == null) return;\n // Create full node\n let builder = this;\n var _partialNode_value, _partialNode_textValue;\n let node = {\n type: partialNode.type,\n props: partialNode.props,\n key: partialNode.key,\n parentKey: parentNode ? parentNode.key : null,\n value: (_partialNode_value = partialNode.value) !== null && _partialNode_value !== void 0 ? _partialNode_value : null,\n level: parentNode ? parentNode.level + 1 : 0,\n index: partialNode.index,\n rendered: partialNode.rendered,\n textValue: (_partialNode_textValue = partialNode.textValue) !== null && _partialNode_textValue !== void 0 ? _partialNode_textValue : '',\n 'aria-label': partialNode['aria-label'],\n wrapper: partialNode.wrapper,\n shouldInvalidate: partialNode.shouldInvalidate,\n hasChildNodes: partialNode.hasChildNodes || false,\n childNodes: $eb2240fc39a57fa5$var$iterable(function*() {\n if (!partialNode.hasChildNodes || !partialNode.childNodes) return;\n let index = 0;\n for (let child of partialNode.childNodes()){\n // Ensure child keys are globally unique by prepending the parent node's key\n if (child.key != null) // TODO: Remove this line entirely and enforce that users always provide unique keys.\n // Currently this line will have issues when a parent has a key `a` and a child with key `bc`\n // but another parent has key `ab` and its child has a key `c`. The combined keys would result in both\n // children having a key of `abc`.\n child.key = `${node.key}${child.key}`;\n let nodes = builder.getFullNode({\n ...child,\n index: index\n }, builder.getChildState(state, child), node.key, node);\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n })\n };\n yield node;\n }\n constructor(){\n this.cache = new WeakMap();\n }\n}\n// Wraps an iterator function as an iterable object, and caches the results.\nfunction $eb2240fc39a57fa5$var$iterable(iterator) {\n let cache = [];\n let iterable = null;\n return {\n *[Symbol.iterator] () {\n for (let item of cache)yield item;\n if (!iterable) iterable = iterator();\n for (let item of iterable){\n cache.push(item);\n yield item;\n }\n }\n };\n}\nfunction $eb2240fc39a57fa5$var$compose(outer, inner) {\n if (outer && inner) return (element)=>outer(inner(element));\n if (outer) return outer;\n if (inner) return inner;\n}\nfunction $eb2240fc39a57fa5$var$capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\n\nexport {$eb2240fc39a57fa5$export$bf788dd355e3a401 as CollectionBuilder};\n//# sourceMappingURL=CollectionBuilder.module.js.map\n","import {ListCollection as $a02d57049d202695$export$d085fb9e920b5ca7} from \"./ListCollection.mjs\";\nimport {useMultipleSelectionState as $d5vlZ$useMultipleSelectionState, SelectionManager as $d5vlZ$SelectionManager} from \"@react-stately/selection\";\nimport {useMemo as $d5vlZ$useMemo, useCallback as $d5vlZ$useCallback, useRef as $d5vlZ$useRef, useEffect as $d5vlZ$useEffect} from \"react\";\nimport {useCollection as $d5vlZ$useCollection} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $e72dd72e1c76a225$export$2f645645f7bca764(props) {\n let { filter: filter, layoutDelegate: layoutDelegate } = props;\n let selectionState = (0, $d5vlZ$useMultipleSelectionState)(props);\n let disabledKeys = (0, $d5vlZ$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let factory = (0, $d5vlZ$useCallback)((nodes)=>filter ? new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(filter(nodes)) : new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(nodes), [\n filter\n ]);\n let context = (0, $d5vlZ$useMemo)(()=>({\n suppressTextValueWarning: props.suppressTextValueWarning\n }), [\n props.suppressTextValueWarning\n ]);\n let collection = (0, $d5vlZ$useCollection)(props, factory, context);\n let selectionManager = (0, $d5vlZ$useMemo)(()=>new (0, $d5vlZ$SelectionManager)(collection, selectionState, {\n layoutDelegate: layoutDelegate\n }), [\n collection,\n selectionState,\n layoutDelegate\n ]);\n // Reset focused key if that item is deleted from the collection.\n const cachedCollection = (0, $d5vlZ$useRef)(null);\n (0, $d5vlZ$useEffect)(()=>{\n if (selectionState.focusedKey != null && !collection.getItem(selectionState.focusedKey) && cachedCollection.current) {\n const startItem = cachedCollection.current.getItem(selectionState.focusedKey);\n const cachedItemNodes = [\n ...cachedCollection.current.getKeys()\n ].map((key)=>{\n const itemNode = cachedCollection.current.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n const itemNodes = [\n ...collection.getKeys()\n ].map((key)=>{\n const itemNode = collection.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n var _cachedItemNodes_length, _itemNodes_length;\n const diff = ((_cachedItemNodes_length = cachedItemNodes === null || cachedItemNodes === void 0 ? void 0 : cachedItemNodes.length) !== null && _cachedItemNodes_length !== void 0 ? _cachedItemNodes_length : 0) - ((_itemNodes_length = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length !== void 0 ? _itemNodes_length : 0);\n var _startItem_index, _startItem_index1, _itemNodes_length1;\n let index = Math.min(diff > 1 ? Math.max(((_startItem_index = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index !== void 0 ? _startItem_index : 0) - diff + 1, 0) : (_startItem_index1 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index1 !== void 0 ? _startItem_index1 : 0, ((_itemNodes_length1 = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length1 !== void 0 ? _itemNodes_length1 : 0) - 1);\n let newNode = null;\n let isReverseSearching = false;\n while(index >= 0){\n if (!selectionManager.isDisabled(itemNodes[index].key)) {\n newNode = itemNodes[index];\n break;\n }\n // Find next, not disabled item.\n if (index < itemNodes.length - 1 && !isReverseSearching) index++;\n else {\n isReverseSearching = true;\n var _startItem_index2, _startItem_index3;\n if (index > ((_startItem_index2 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index2 !== void 0 ? _startItem_index2 : 0)) index = (_startItem_index3 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index3 !== void 0 ? _startItem_index3 : 0;\n index--;\n }\n }\n selectionState.setFocusedKey(newNode ? newNode.key : null);\n }\n cachedCollection.current = collection;\n }, [\n collection,\n selectionManager,\n selectionState,\n selectionState.focusedKey\n ]);\n return {\n collection: collection,\n disabledKeys: disabledKeys,\n selectionManager: selectionManager\n };\n}\n\n\nexport {$e72dd72e1c76a225$export$2f645645f7bca764 as useListState};\n//# sourceMappingURL=useListState.module.js.map\n","import {CollectionBuilder as $eb2240fc39a57fa5$export$bf788dd355e3a401} from \"./CollectionBuilder.mjs\";\nimport {useMemo as $lbNth$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $7613b1592d41b092$export$6cd28814d92fa9c9(props, factory, context) {\n let builder = (0, $lbNth$useMemo)(()=>new (0, $eb2240fc39a57fa5$export$bf788dd355e3a401)(), []);\n let { children: children, items: items, collection: collection } = props;\n let result = (0, $lbNth$useMemo)(()=>{\n if (collection) return collection;\n let nodes = builder.build({\n children: children,\n items: items\n }, context);\n return factory(nodes);\n }, [\n builder,\n children,\n items,\n collection,\n context,\n factory\n ]);\n return result;\n}\n\n\nexport {$7613b1592d41b092$export$6cd28814d92fa9c9 as useCollection};\n//# sourceMappingURL=useCollection.module.js.map\n","import {useListState as $e72dd72e1c76a225$export$2f645645f7bca764} from \"./useListState.mjs\";\nimport {useControlledState as $eBozH$useControlledState} from \"@react-stately/utils\";\nimport {useMemo as $eBozH$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $a0d645289fe9b86b$export$e7f05e985daf4b5f(props) {\n var _props_defaultSelectedKey;\n let [selectedKey, setSelectedKey] = (0, $eBozH$useControlledState)(props.selectedKey, (_props_defaultSelectedKey = props.defaultSelectedKey) !== null && _props_defaultSelectedKey !== void 0 ? _props_defaultSelectedKey : null, props.onSelectionChange);\n let selectedKeys = (0, $eBozH$useMemo)(()=>selectedKey != null ? [\n selectedKey\n ] : [], [\n selectedKey\n ]);\n let { collection: collection, disabledKeys: disabledKeys, selectionManager: selectionManager } = (0, $e72dd72e1c76a225$export$2f645645f7bca764)({\n ...props,\n selectionMode: 'single',\n disallowEmptySelection: true,\n allowDuplicateSelectionEvents: true,\n selectedKeys: selectedKeys,\n onSelectionChange: (keys)=>{\n // impossible, but TS doesn't know that\n if (keys === 'all') return;\n var _keys_values_next_value;\n let key = (_keys_values_next_value = keys.values().next().value) !== null && _keys_values_next_value !== void 0 ? _keys_values_next_value : null;\n // Always fire onSelectionChange, even if the key is the same\n // as the current key (useControlledState does not).\n if (key === selectedKey && props.onSelectionChange) props.onSelectionChange(key);\n setSelectedKey(key);\n }\n });\n let selectedItem = selectedKey != null ? collection.getItem(selectedKey) : null;\n return {\n collection: collection,\n disabledKeys: disabledKeys,\n selectionManager: selectionManager,\n selectedKey: selectedKey,\n setSelectedKey: setSelectedKey,\n selectedItem: selectedItem\n };\n}\n\n\nexport {$a0d645289fe9b86b$export$e7f05e985daf4b5f as useSingleSelectListState};\n//# sourceMappingURL=useSingleSelectListState.module.js.map\n","import {useCallback as $hnMvi$useCallback} from \"react\";\nimport {useControlledState as $hnMvi$useControlledState} from \"@react-stately/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $fc909762b330b746$export$61c6a8c84e605fb6(props) {\n let [isOpen, setOpen] = (0, $hnMvi$useControlledState)(props.isOpen, props.defaultOpen || false, props.onOpenChange);\n const open = (0, $hnMvi$useCallback)(()=>{\n setOpen(true);\n }, [\n setOpen\n ]);\n const close = (0, $hnMvi$useCallback)(()=>{\n setOpen(false);\n }, [\n setOpen\n ]);\n const toggle = (0, $hnMvi$useCallback)(()=>{\n setOpen(!isOpen);\n }, [\n setOpen,\n isOpen\n ]);\n return {\n isOpen: isOpen,\n setOpen: setOpen,\n open: open,\n close: close,\n toggle: toggle\n };\n}\n\n\nexport {$fc909762b330b746$export$61c6a8c84e605fb6 as useOverlayTriggerState};\n//# sourceMappingURL=useOverlayTriggerState.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $e40ea825a81a3709$export$52baac22726c72bf extends Set {\n constructor(keys, anchorKey, currentKey){\n super(keys);\n if (keys instanceof $e40ea825a81a3709$export$52baac22726c72bf) {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : keys.anchorKey;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : keys.currentKey;\n } else {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : null;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : null;\n }\n }\n}\n\n\nexport {$e40ea825a81a3709$export$52baac22726c72bf as Selection};\n//# sourceMappingURL=Selection.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {compareNodeOrder as $jkhUT$compareNodeOrder, getFirstItem as $jkhUT$getFirstItem, getChildNodes as $jkhUT$getChildNodes} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $d496c0a20b6e58ec$export$6c8a5aaad13c9852 {\n /**\n * The type of selection that is allowed in the collection.\n */ get selectionMode() {\n return this.state.selectionMode;\n }\n /**\n * Whether the collection allows empty selection.\n */ get disallowEmptySelection() {\n return this.state.disallowEmptySelection;\n }\n /**\n * The selection behavior for the collection.\n */ get selectionBehavior() {\n return this.state.selectionBehavior;\n }\n /**\n * Sets the selection behavior for the collection.\n */ setSelectionBehavior(selectionBehavior) {\n this.state.setSelectionBehavior(selectionBehavior);\n }\n /**\n * Whether the collection is currently focused.\n */ get isFocused() {\n return this.state.isFocused;\n }\n /**\n * Sets whether the collection is focused.\n */ setFocused(isFocused) {\n this.state.setFocused(isFocused);\n }\n /**\n * The current focused key in the collection.\n */ get focusedKey() {\n return this.state.focusedKey;\n }\n /** Whether the first or last child of the focused key should receive focus. */ get childFocusStrategy() {\n return this.state.childFocusStrategy;\n }\n /**\n * Sets the focused key.\n */ setFocusedKey(key, childFocusStrategy) {\n if (key == null || this.collection.getItem(key)) this.state.setFocusedKey(key, childFocusStrategy);\n }\n /**\n * The currently selected keys in the collection.\n */ get selectedKeys() {\n return this.state.selectedKeys === 'all' ? new Set(this.getSelectAllKeys()) : this.state.selectedKeys;\n }\n /**\n * The raw selection value for the collection.\n * Either 'all' for select all, or a set of keys.\n */ get rawSelection() {\n return this.state.selectedKeys;\n }\n /**\n * Returns whether a key is selected.\n */ isSelected(key) {\n if (this.state.selectionMode === 'none') return false;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return false;\n return this.state.selectedKeys === 'all' ? this.canSelectItem(mappedKey) : this.state.selectedKeys.has(mappedKey);\n }\n /**\n * Whether the selection is empty.\n */ get isEmpty() {\n return this.state.selectedKeys !== 'all' && this.state.selectedKeys.size === 0;\n }\n /**\n * Whether all items in the collection are selected.\n */ get isSelectAll() {\n if (this.isEmpty) return false;\n if (this.state.selectedKeys === 'all') return true;\n if (this._isSelectAll != null) return this._isSelectAll;\n let allKeys = this.getSelectAllKeys();\n let selectedKeys = this.state.selectedKeys;\n this._isSelectAll = allKeys.every((k)=>selectedKeys.has(k));\n return this._isSelectAll;\n }\n get firstSelectedKey() {\n let first = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!first || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, first) < 0) first = item;\n }\n var _first_key;\n return (_first_key = first === null || first === void 0 ? void 0 : first.key) !== null && _first_key !== void 0 ? _first_key : null;\n }\n get lastSelectedKey() {\n let last = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!last || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, last) > 0) last = item;\n }\n var _last_key;\n return (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n get disabledKeys() {\n return this.state.disabledKeys;\n }\n get disabledBehavior() {\n return this.state.disabledBehavior;\n }\n /**\n * Extends the selection to the given key.\n */ extendSelection(toKey) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n this.replaceSelection(toKey);\n return;\n }\n let mappedToKey = this.getKey(toKey);\n if (mappedToKey == null) return;\n let selection;\n // Only select the one key if coming from a select all.\n if (this.state.selectedKeys === 'all') selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedToKey\n ], mappedToKey, mappedToKey);\n else {\n let selectedKeys = this.state.selectedKeys;\n var _selectedKeys_anchorKey;\n let anchorKey = (_selectedKeys_anchorKey = selectedKeys.anchorKey) !== null && _selectedKeys_anchorKey !== void 0 ? _selectedKeys_anchorKey : mappedToKey;\n selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selectedKeys, anchorKey, mappedToKey);\n var _selectedKeys_currentKey;\n for (let key of this.getKeyRange(anchorKey, (_selectedKeys_currentKey = selectedKeys.currentKey) !== null && _selectedKeys_currentKey !== void 0 ? _selectedKeys_currentKey : mappedToKey))selection.delete(key);\n for (let key of this.getKeyRange(mappedToKey, anchorKey))if (this.canSelectItem(key)) selection.add(key);\n }\n this.state.setSelectedKeys(selection);\n }\n getKeyRange(from, to) {\n let fromItem = this.collection.getItem(from);\n let toItem = this.collection.getItem(to);\n if (fromItem && toItem) {\n if ((0, $jkhUT$compareNodeOrder)(this.collection, fromItem, toItem) <= 0) return this.getKeyRangeInternal(from, to);\n return this.getKeyRangeInternal(to, from);\n }\n return [];\n }\n getKeyRangeInternal(from, to) {\n var _this_layoutDelegate;\n if ((_this_layoutDelegate = this.layoutDelegate) === null || _this_layoutDelegate === void 0 ? void 0 : _this_layoutDelegate.getKeyRange) return this.layoutDelegate.getKeyRange(from, to);\n let keys = [];\n let key = from;\n while(key != null){\n let item = this.collection.getItem(key);\n if (item && (item.type === 'item' || item.type === 'cell' && this.allowsCellSelection)) keys.push(key);\n if (key === to) return keys;\n key = this.collection.getKeyAfter(key);\n }\n return [];\n }\n getKey(key) {\n let item = this.collection.getItem(key);\n if (!item) // ¯\\_(ツ)_/¯\n return key;\n // If cell selection is allowed, just return the key.\n if (item.type === 'cell' && this.allowsCellSelection) return key;\n // Find a parent item to select\n while(item && item.type !== 'item' && item.parentKey != null)item = this.collection.getItem(item.parentKey);\n if (!item || item.type !== 'item') return null;\n return item.key;\n }\n /**\n * Toggles whether the given key is selected.\n */ toggleSelection(key) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single' && !this.isSelected(key)) {\n this.replaceSelection(key);\n return;\n }\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let keys = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(this.state.selectedKeys === 'all' ? this.getSelectAllKeys() : this.state.selectedKeys);\n if (keys.has(mappedKey)) keys.delete(mappedKey);\n else if (this.canSelectItem(mappedKey)) {\n keys.add(mappedKey);\n keys.anchorKey = mappedKey;\n keys.currentKey = mappedKey;\n }\n if (this.disallowEmptySelection && keys.size === 0) return;\n this.state.setSelectedKeys(keys);\n }\n /**\n * Replaces the selection with only the given key.\n */ replaceSelection(key) {\n if (this.selectionMode === 'none') return;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let selection = this.canSelectItem(mappedKey) ? new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedKey\n ], mappedKey, mappedKey) : new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n this.state.setSelectedKeys(selection);\n }\n /**\n * Replaces the selection with the given keys.\n */ setSelectedKeys(keys) {\n if (this.selectionMode === 'none') return;\n let selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n for (let key of keys){\n let mappedKey = this.getKey(key);\n if (mappedKey != null) {\n selection.add(mappedKey);\n if (this.selectionMode === 'single') break;\n }\n }\n this.state.setSelectedKeys(selection);\n }\n getSelectAllKeys() {\n let keys = [];\n let addKeys = (key)=>{\n while(key != null){\n if (this.canSelectItem(key)) {\n var _getFirstItem;\n let item = this.collection.getItem(key);\n if ((item === null || item === void 0 ? void 0 : item.type) === 'item') keys.push(key);\n var _getFirstItem_key;\n // Add child keys. If cell selection is allowed, then include item children too.\n if ((item === null || item === void 0 ? void 0 : item.hasChildNodes) && (this.allowsCellSelection || item.type !== 'item')) addKeys((_getFirstItem_key = (_getFirstItem = (0, $jkhUT$getFirstItem)((0, $jkhUT$getChildNodes)(item, this.collection))) === null || _getFirstItem === void 0 ? void 0 : _getFirstItem.key) !== null && _getFirstItem_key !== void 0 ? _getFirstItem_key : null);\n }\n key = this.collection.getKeyAfter(key);\n }\n };\n addKeys(this.collection.getFirstKey());\n return keys;\n }\n /**\n * Selects all items in the collection.\n */ selectAll() {\n if (!this.isSelectAll && this.selectionMode === 'multiple') this.state.setSelectedKeys('all');\n }\n /**\n * Removes all keys from the selection.\n */ clearSelection() {\n if (!this.disallowEmptySelection && (this.state.selectedKeys === 'all' || this.state.selectedKeys.size > 0)) this.state.setSelectedKeys(new (0, $e40ea825a81a3709$export$52baac22726c72bf)());\n }\n /**\n * Toggles between select all and an empty selection.\n */ toggleSelectAll() {\n if (this.isSelectAll) this.clearSelection();\n else this.selectAll();\n }\n select(key, e) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n if (this.isSelected(key) && !this.disallowEmptySelection) this.toggleSelection(key);\n else this.replaceSelection(key);\n } else if (this.selectionBehavior === 'toggle' || e && (e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n this.toggleSelection(key);\n else this.replaceSelection(key);\n }\n /**\n * Returns whether the current selection is equal to the given selection.\n */ isSelectionEqual(selection) {\n if (selection === this.state.selectedKeys) return true;\n // Check if the set of keys match.\n let selectedKeys = this.selectedKeys;\n if (selection.size !== selectedKeys.size) return false;\n for (let key of selection){\n if (!selectedKeys.has(key)) return false;\n }\n for (let key of selectedKeys){\n if (!selection.has(key)) return false;\n }\n return true;\n }\n canSelectItem(key) {\n var _item_props;\n if (this.state.selectionMode === 'none' || this.state.disabledKeys.has(key)) return false;\n let item = this.collection.getItem(key);\n if (!item || (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.isDisabled) || item.type === 'cell' && !this.allowsCellSelection) return false;\n return true;\n }\n isDisabled(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return this.state.disabledBehavior === 'all' && (this.state.disabledKeys.has(key) || !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.isDisabled));\n }\n isLink(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.href);\n }\n getItemProps(key) {\n var _this_collection_getItem;\n return (_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : _this_collection_getItem.props;\n }\n constructor(collection, state, options){\n this.collection = collection;\n this.state = state;\n var _options_allowsCellSelection;\n this.allowsCellSelection = (_options_allowsCellSelection = options === null || options === void 0 ? void 0 : options.allowsCellSelection) !== null && _options_allowsCellSelection !== void 0 ? _options_allowsCellSelection : false;\n this._isSelectAll = null;\n this.layoutDelegate = (options === null || options === void 0 ? void 0 : options.layoutDelegate) || null;\n }\n}\n\n\nexport {$d496c0a20b6e58ec$export$6c8a5aaad13c9852 as SelectionManager};\n//# sourceMappingURL=SelectionManager.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */ function $9446cca9a3875146$export$7d15b64cf5a3a4c4(value, min = -Infinity, max = Infinity) {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\nfunction $9446cca9a3875146$export$e1a7b8e69ef6c52f(value, step) {\n let roundedValue = value;\n let stepString = step.toString();\n let pointIndex = stepString.indexOf('.');\n let precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\nfunction $9446cca9a3875146$export$cb6e0bb50bc19463(value, min, max, step) {\n min = Number(min);\n max = Number(max);\n let remainder = (value - (isNaN(min) ? 0 : min)) % step;\n let snappedValue = $9446cca9a3875146$export$e1a7b8e69ef6c52f(Math.abs(remainder) * 2 >= step ? value + Math.sign(remainder) * (step - Math.abs(remainder)) : value - remainder, step);\n if (!isNaN(min)) {\n if (snappedValue < min) snappedValue = min;\n else if (!isNaN(max) && snappedValue > max) snappedValue = min + Math.floor($9446cca9a3875146$export$e1a7b8e69ef6c52f((max - min) / step, step)) * step;\n } else if (!isNaN(max) && snappedValue > max) snappedValue = Math.floor($9446cca9a3875146$export$e1a7b8e69ef6c52f(max / step, step)) * step;\n // correct floating point behavior by rounding to step precision\n snappedValue = $9446cca9a3875146$export$e1a7b8e69ef6c52f(snappedValue, step);\n return snappedValue;\n}\nfunction $9446cca9a3875146$export$b6268554fba451f(value, digits, base = 10) {\n const pow = Math.pow(base, digits);\n return Math.round(value * pow) / pow;\n}\n\n\nexport {$9446cca9a3875146$export$7d15b64cf5a3a4c4 as clamp, $9446cca9a3875146$export$e1a7b8e69ef6c52f as roundToStepPrecision, $9446cca9a3875146$export$cb6e0bb50bc19463 as snapValueToStep, $9446cca9a3875146$export$b6268554fba451f as toFixedNumber};\n//# sourceMappingURL=number.module.js.map\n","import {useState as $3whtM$useState, useRef as $3whtM$useRef, useEffect as $3whtM$useEffect, useCallback as $3whtM$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange) {\n let [stateValue, setStateValue] = (0, $3whtM$useState)(value || defaultValue);\n let isControlledRef = (0, $3whtM$useRef)(value !== undefined);\n let isControlled = value !== undefined;\n (0, $3whtM$useEffect)(()=>{\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n isControlledRef.current = isControlled;\n }, [\n isControlled\n ]);\n let currentValue = isControlled ? value : stateValue;\n let setValue = (0, $3whtM$useCallback)((value, ...args)=>{\n let onChangeCaller = (value, ...onChangeArgs)=>{\n if (onChange) {\n if (!Object.is(currentValue, value)) onChange(value, ...onChangeArgs);\n }\n if (!isControlled) // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n };\n if (typeof value === 'function') {\n console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs)=>{\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) return interceptedValue;\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) setStateValue(value);\n onChangeCaller(value, ...args);\n }\n }, [\n isControlled,\n currentValue,\n onChange\n ]);\n return [\n currentValue,\n setValue\n ];\n}\n\n\nexport {$458b0a5536c1a7cf$export$40bfa8c7b0832715 as useControlledState};\n//# sourceMappingURL=useControlledState.module.js.map\n","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = (cb) => setTimeout(cb, 0);\n const setScheduler = (fn) => {\n scheduleFn = fn;\n };\n const batch = (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n };\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const batchCalls = (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n const setNotifyFunction = (fn) => {\n notifyFn = fn;\n };\n const setBatchNotifyFunction = (fn) => {\n batchNotifyFn = fn;\n };\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = getDefaultState(this.options);\n this.state = config.state ?? this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n isStale() {\n if (this.state.isInvalidated) {\n return true;\n }\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0;\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const queryFnContext = {\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext);\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n }\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n };\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n try {\n this.setData(data);\n } catch (error) {\n onError(error);\n return;\n }\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n if (!this.isFetchingOptimistic) {\n this.scheduleGc();\n }\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n return this.#retryer.start();\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n constructor(options) {\n super(\"CancelledError\");\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n promiseResolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\n continueFn?.();\n promiseReject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.();\n return promise;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return promise;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n return void 0;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n JSON.stringify(prevData);\n JSON.stringify(data);\n } catch (error) {\n console.error(\n `StructuralSharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n );\n }\n }\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n}\nexport {\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport { MutationObserver, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { noop, shouldThrowError } from \"./utils.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","// src/queryObserver.ts\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { fetchState } from \"./query.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult(notifyOptions);\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key);\n onPropTracked?.(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n if (options.select && newState.data !== void 0) {\n if (prevResult && newState.data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(newState.data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n } else {\n data = newState.data;\n }\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n if (options.select && placeholderData !== void 0) {\n try {\n placeholderData = options.select(placeholderData);\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch\n };\n return result;\n }\n updateResult(notifyOptions) {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const defaultNotifyOptions = {};\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveEnabled(options.enabled, query) !== false) {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/isRestoring.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=isRestoring.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"./utils.js\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && shouldThrowError(throwOnError, [result.error, query]);\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n if (typeof defaultedOptions.staleTime !== \"number\") {\n defaultedOptions.staleTime = 1e3;\n }\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1e3);\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { notifyManager } from \"@tanstack/query-core\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./isRestoring.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n observer.updateResult();\n return unsubscribe;\n },\n [observer, isRestoring]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions, { listeners: false });\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client.getQueryCache().get(defaultedOptions.queryHash)\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","// src/utils.ts\nfunction shouldThrowError(throwError, params) {\n if (typeof throwError === \"function\") {\n return throwError(...params);\n }\n return !!throwError;\n}\nfunction noop() {\n}\nexport {\n noop,\n shouldThrowError\n};\n//# sourceMappingURL=utils.js.map","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8} from \"./utils.mjs\";\nimport {LabelContext as $01b77f81d0f07f68$export$75b6ee27786ba447} from \"./Label.mjs\";\nimport {useProgressBar as $hU2kz$useProgressBar} from \"react-aria\";\nimport {clamp as $hU2kz$clamp} from \"@react-stately/utils\";\nimport $hU2kz$react, {createContext as $hU2kz$createContext, forwardRef as $hU2kz$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nconst $0393f8ab869a0f1a$export$e9f3bf65a26ce129 = /*#__PURE__*/ (0, $hU2kz$createContext)(null);\nfunction $0393f8ab869a0f1a$var$ProgressBar(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $0393f8ab869a0f1a$export$e9f3bf65a26ce129);\n let { value: value = 0, minValue: minValue = 0, maxValue: maxValue = 100, isIndeterminate: isIndeterminate = false } = props;\n value = (0, $hU2kz$clamp)(value, minValue, maxValue);\n let [labelRef, label] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n let { progressBarProps: progressBarProps, labelProps: labelProps } = (0, $hU2kz$useProgressBar)({\n ...props,\n label: label\n });\n // Calculate the width of the progress bar as a percentage\n let percentage = isIndeterminate ? undefined : (value - minValue) / (maxValue - minValue) * 100;\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultClassName: 'react-aria-ProgressBar',\n values: {\n percentage: percentage,\n valueText: progressBarProps['aria-valuetext'],\n isIndeterminate: isIndeterminate\n }\n });\n return /*#__PURE__*/ (0, $hU2kz$react).createElement(\"div\", {\n ...progressBarProps,\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined\n }, /*#__PURE__*/ (0, $hU2kz$react).createElement((0, $01b77f81d0f07f68$export$75b6ee27786ba447).Provider, {\n value: {\n ...labelProps,\n ref: labelRef,\n elementType: 'span'\n }\n }, renderProps.children));\n}\n/**\n * Progress bars show either determinate or indeterminate progress of an operation\n * over time.\n */ const $0393f8ab869a0f1a$export$c17561cb55d4db30 = /*#__PURE__*/ (0, $hU2kz$forwardRef)($0393f8ab869a0f1a$var$ProgressBar);\n\n\nexport {$0393f8ab869a0f1a$export$e9f3bf65a26ce129 as ProgressBarContext, $0393f8ab869a0f1a$export$c17561cb55d4db30 as ProgressBar};\n//# sourceMappingURL=ProgressBar.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {ProgressBarContext as $0393f8ab869a0f1a$export$e9f3bf65a26ce129} from \"./ProgressBar.mjs\";\nimport {announce as $fM325$announce} from \"@react-aria/live-announcer\";\nimport {useButton as $fM325$useButton, useFocusRing as $fM325$useFocusRing, useHover as $fM325$useHover, useId as $fM325$useId, mergeProps as $fM325$mergeProps} from \"react-aria\";\nimport {createHideableComponent as $fM325$createHideableComponent} from \"@react-aria/collections\";\nimport {filterDOMProps as $fM325$filterDOMProps} from \"@react-aria/utils\";\nimport $fM325$react, {createContext as $fM325$createContext, useRef as $fM325$useRef, useEffect as $fM325$useEffect} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\nconst $d2b4bc8c273e7be6$var$additionalButtonHTMLAttributes = new Set([\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'name',\n 'value'\n]);\nconst $d2b4bc8c273e7be6$export$24d547caef80ccd1 = /*#__PURE__*/ (0, $fM325$createContext)({});\nfunction $d2b4bc8c273e7be6$var$Button(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $d2b4bc8c273e7be6$export$24d547caef80ccd1);\n props = $d2b4bc8c273e7be6$var$disablePendingProps(props);\n let ctx = props;\n let { isPending: isPending } = ctx;\n let { buttonProps: buttonProps, isPressed: isPressed } = (0, $fM325$useButton)(props, ref);\n let { focusProps: focusProps, isFocused: isFocused, isFocusVisible: isFocusVisible } = (0, $fM325$useFocusRing)(props);\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $fM325$useHover)({\n ...props,\n isDisabled: props.isDisabled || isPending\n });\n let renderValues = {\n isHovered: isHovered,\n isPressed: (ctx.isPressed || isPressed) && !isPending,\n isFocused: isFocused,\n isFocusVisible: isFocusVisible,\n isDisabled: props.isDisabled || false,\n isPending: isPending !== null && isPending !== void 0 ? isPending : false\n };\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: renderValues,\n defaultClassName: 'react-aria-Button'\n });\n let buttonId = (0, $fM325$useId)(buttonProps.id);\n let progressId = (0, $fM325$useId)();\n let ariaLabelledby = buttonProps['aria-labelledby'];\n if (isPending) {\n // aria-labelledby wins over aria-label\n // https://www.w3.org/TR/accname-1.2/#computation-steps\n if (ariaLabelledby) ariaLabelledby = `${ariaLabelledby} ${progressId}`;\n else if (buttonProps['aria-label']) ariaLabelledby = `${buttonId} ${progressId}`;\n }\n let wasPending = (0, $fM325$useRef)(isPending);\n (0, $fM325$useEffect)(()=>{\n let message = {\n 'aria-labelledby': ariaLabelledby || buttonId\n };\n if (!wasPending.current && isFocused && isPending) (0, $fM325$announce)(message, 'assertive');\n else if (wasPending.current && isFocused && !isPending) (0, $fM325$announce)(message, 'assertive');\n wasPending.current = isPending;\n }, [\n isPending,\n isFocused,\n ariaLabelledby,\n buttonId\n ]);\n return /*#__PURE__*/ (0, $fM325$react).createElement(\"button\", {\n ...(0, $fM325$filterDOMProps)(props, {\n propNames: $d2b4bc8c273e7be6$var$additionalButtonHTMLAttributes\n }),\n ...(0, $fM325$mergeProps)(buttonProps, focusProps, hoverProps),\n ...renderProps,\n id: buttonId,\n ref: ref,\n \"aria-labelledby\": ariaLabelledby,\n slot: props.slot || undefined,\n \"aria-disabled\": isPending ? 'true' : buttonProps['aria-disabled'],\n \"data-disabled\": props.isDisabled || undefined,\n \"data-pressed\": renderValues.isPressed || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-focused\": isFocused || undefined,\n \"data-pending\": isPending || undefined,\n \"data-focus-visible\": isFocusVisible || undefined\n }, /*#__PURE__*/ (0, $fM325$react).createElement((0, $0393f8ab869a0f1a$export$e9f3bf65a26ce129).Provider, {\n value: {\n id: progressId\n }\n }, renderProps.children));\n}\nfunction $d2b4bc8c273e7be6$var$disablePendingProps(props) {\n // Don't allow interaction while isPending is true\n if (props.isPending) {\n props.onPress = undefined;\n props.onPressStart = undefined;\n props.onPressEnd = undefined;\n props.onPressChange = undefined;\n props.onPressUp = undefined;\n props.onKeyDown = undefined;\n props.onKeyUp = undefined;\n props.onClick = undefined;\n props.href = undefined;\n }\n return props;\n}\n/**\n * A button allows a user to perform an action, with mouse, touch, and keyboard interactions.\n */ const $d2b4bc8c273e7be6$export$353f5b6fc5456de1 = /*#__PURE__*/ (0, $fM325$createHideableComponent)($d2b4bc8c273e7be6$var$Button);\n\n\nexport {$d2b4bc8c273e7be6$export$24d547caef80ccd1 as ButtonContext, $d2b4bc8c273e7be6$export$353f5b6fc5456de1 as Button};\n//# sourceMappingURL=Button.module.js.map\n","import {ButtonContext as $d2b4bc8c273e7be6$export$24d547caef80ccd1} from \"./Button.mjs\";\nimport {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, removeDataAttributes as $64fa3d84918910a7$export$ef03459518577ad4, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, useSlottedContext as $64fa3d84918910a7$export$fabf2dc03a41866e} from \"./utils.mjs\";\nimport {FieldErrorContext as $ee014567cb39d3f0$export$ff05c3ac10437e03} from \"./FieldError.mjs\";\nimport {FormContext as $d3e0e05bdfcf66bd$export$c24727297075ec6a} from \"./Form.mjs\";\nimport {GroupContext as $a049562f99e7db0e$export$f9c6924e160136d1} from \"./Group.mjs\";\nimport {InputContext as $3985021b0ad6602f$export$37fb8590cf2c088c} from \"./Input.mjs\";\nimport {LabelContext as $01b77f81d0f07f68$export$75b6ee27786ba447} from \"./Label.mjs\";\nimport {ListBoxContext as $eed445e0843c11d0$export$7ff8f37d2d81a48d, ListStateContext as $eed445e0843c11d0$export$7c5906fe4f1f2af2} from \"./ListBox.mjs\";\nimport {OverlayTriggerStateContext as $de32f1b87079253c$export$d2f961adcb0afbe} from \"./Dialog.mjs\";\nimport {PopoverContext as $07b14b47974efb58$export$9b9a0cd73afb7ca4} from \"./Popover.mjs\";\nimport {TextContext as $514c0188e459b4c0$export$9afb8bc826b033ea} from \"./Text.mjs\";\nimport {useFilter as $cP7hC$useFilter, useComboBox as $cP7hC$useComboBox} from \"react-aria\";\nimport {useComboBoxState as $cP7hC$useComboBoxState} from \"react-stately\";\nimport {CollectionBuilder as $cP7hC$CollectionBuilder} from \"@react-aria/collections\";\nimport {useResizeObserver as $cP7hC$useResizeObserver, filterDOMProps as $cP7hC$filterDOMProps} from \"@react-aria/utils\";\nimport $cP7hC$react, {createContext as $cP7hC$createContext, useMemo as $cP7hC$useMemo, useRef as $cP7hC$useRef, useState as $cP7hC$useState, useCallback as $cP7hC$useCallback, forwardRef as $cP7hC$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst $d01f2c01039c0eec$export$d414ccceff7063c3 = /*#__PURE__*/ (0, $cP7hC$createContext)(null);\nconst $d01f2c01039c0eec$export$c02625b26074192c = /*#__PURE__*/ (0, $cP7hC$createContext)(null);\nfunction $d01f2c01039c0eec$var$ComboBox(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $d01f2c01039c0eec$export$d414ccceff7063c3);\n let { children: children, isDisabled: isDisabled = false, isInvalid: isInvalid = false, isRequired: isRequired = false } = props;\n let content = (0, $cP7hC$useMemo)(()=>{\n var _props_items;\n return /*#__PURE__*/ (0, $cP7hC$react).createElement((0, $eed445e0843c11d0$export$7ff8f37d2d81a48d).Provider, {\n value: {\n items: (_props_items = props.items) !== null && _props_items !== void 0 ? _props_items : props.defaultItems\n }\n }, typeof children === 'function' ? children({\n isOpen: false,\n isDisabled: isDisabled,\n isInvalid: isInvalid,\n isRequired: isRequired,\n defaultChildren: null\n }) : children);\n }, [\n children,\n isDisabled,\n isInvalid,\n isRequired,\n props.items,\n props.defaultItems\n ]);\n return /*#__PURE__*/ (0, $cP7hC$react).createElement((0, $cP7hC$CollectionBuilder), {\n content: content\n }, (collection)=>/*#__PURE__*/ (0, $cP7hC$react).createElement($d01f2c01039c0eec$var$ComboBoxInner, {\n props: props,\n collection: collection,\n comboBoxRef: ref\n }));\n}\nfunction $d01f2c01039c0eec$var$ComboBoxInner({ props: props, collection: collection, comboBoxRef: ref }) {\n let { name: name, formValue: formValue = 'key', allowsCustomValue: allowsCustomValue } = props;\n if (allowsCustomValue) formValue = 'text';\n let { validationBehavior: formValidationBehavior } = (0, $64fa3d84918910a7$export$fabf2dc03a41866e)((0, $d3e0e05bdfcf66bd$export$c24727297075ec6a)) || {};\n var _props_validationBehavior, _ref;\n let validationBehavior = (_ref = (_props_validationBehavior = props.validationBehavior) !== null && _props_validationBehavior !== void 0 ? _props_validationBehavior : formValidationBehavior) !== null && _ref !== void 0 ? _ref : 'native';\n let { contains: contains } = (0, $cP7hC$useFilter)({\n sensitivity: 'base'\n });\n let state = (0, $cP7hC$useComboBoxState)({\n defaultFilter: props.defaultFilter || contains,\n ...props,\n // If props.items isn't provided, rely on collection filtering (aka listbox.items is provided or defaultItems provided to Combobox)\n items: props.items,\n children: undefined,\n collection: collection,\n validationBehavior: validationBehavior\n });\n let buttonRef = (0, $cP7hC$useRef)(null);\n let inputRef = (0, $cP7hC$useRef)(null);\n let listBoxRef = (0, $cP7hC$useRef)(null);\n let popoverRef = (0, $cP7hC$useRef)(null);\n let [labelRef, label] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n let { buttonProps: buttonProps, inputProps: inputProps, listBoxProps: listBoxProps, labelProps: labelProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps, ...validation } = (0, $cP7hC$useComboBox)({\n ...(0, $64fa3d84918910a7$export$ef03459518577ad4)(props),\n label: label,\n inputRef: inputRef,\n buttonRef: buttonRef,\n listBoxRef: listBoxRef,\n popoverRef: popoverRef,\n name: formValue === 'text' ? name : undefined,\n validationBehavior: validationBehavior\n }, state);\n // Make menu width match input + button\n let [menuWidth, setMenuWidth] = (0, $cP7hC$useState)(null);\n let onResize = (0, $cP7hC$useCallback)(()=>{\n if (inputRef.current) {\n var _buttonRef_current;\n let buttonRect = (_buttonRef_current = buttonRef.current) === null || _buttonRef_current === void 0 ? void 0 : _buttonRef_current.getBoundingClientRect();\n let inputRect = inputRef.current.getBoundingClientRect();\n let minX = buttonRect ? Math.min(buttonRect.left, inputRect.left) : inputRect.left;\n let maxX = buttonRect ? Math.max(buttonRect.right, inputRect.right) : inputRect.right;\n setMenuWidth(maxX - minX + 'px');\n }\n }, [\n buttonRef,\n inputRef,\n setMenuWidth\n ]);\n (0, $cP7hC$useResizeObserver)({\n ref: inputRef,\n onResize: onResize\n });\n // Only expose a subset of state to renderProps function to avoid infinite render loop\n let renderPropsState = (0, $cP7hC$useMemo)(()=>({\n isOpen: state.isOpen,\n isDisabled: props.isDisabled || false,\n isInvalid: validation.isInvalid || false,\n isRequired: props.isRequired || false\n }), [\n state.isOpen,\n props.isDisabled,\n validation.isInvalid,\n props.isRequired\n ]);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: renderPropsState,\n defaultClassName: 'react-aria-ComboBox'\n });\n let DOMProps = (0, $cP7hC$filterDOMProps)(props);\n delete DOMProps.id;\n var _state_selectedKey;\n return /*#__PURE__*/ (0, $cP7hC$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $d01f2c01039c0eec$export$c02625b26074192c,\n state\n ],\n [\n (0, $01b77f81d0f07f68$export$75b6ee27786ba447),\n {\n ...labelProps,\n ref: labelRef\n }\n ],\n [\n (0, $d2b4bc8c273e7be6$export$24d547caef80ccd1),\n {\n ...buttonProps,\n ref: buttonRef,\n isPressed: state.isOpen\n }\n ],\n [\n (0, $3985021b0ad6602f$export$37fb8590cf2c088c),\n {\n ...inputProps,\n ref: inputRef\n }\n ],\n [\n (0, $de32f1b87079253c$export$d2f961adcb0afbe),\n state\n ],\n [\n (0, $07b14b47974efb58$export$9b9a0cd73afb7ca4),\n {\n ref: popoverRef,\n triggerRef: inputRef,\n scrollRef: listBoxRef,\n placement: 'bottom start',\n isNonModal: true,\n trigger: 'ComboBox',\n style: {\n '--trigger-width': menuWidth\n }\n }\n ],\n [\n (0, $eed445e0843c11d0$export$7ff8f37d2d81a48d),\n {\n ...listBoxProps,\n ref: listBoxRef\n }\n ],\n [\n (0, $eed445e0843c11d0$export$7c5906fe4f1f2af2),\n state\n ],\n [\n (0, $514c0188e459b4c0$export$9afb8bc826b033ea),\n {\n slots: {\n description: descriptionProps,\n errorMessage: errorMessageProps\n }\n }\n ],\n [\n (0, $a049562f99e7db0e$export$f9c6924e160136d1),\n {\n isInvalid: validation.isInvalid,\n isDisabled: props.isDisabled || false\n }\n ],\n [\n (0, $ee014567cb39d3f0$export$ff05c3ac10437e03),\n validation\n ]\n ]\n }, /*#__PURE__*/ (0, $cP7hC$react).createElement(\"div\", {\n ...DOMProps,\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined,\n \"data-focused\": state.isFocused || undefined,\n \"data-open\": state.isOpen || undefined,\n \"data-disabled\": props.isDisabled || undefined,\n \"data-invalid\": validation.isInvalid || undefined,\n \"data-required\": props.isRequired || undefined\n }), name && formValue === 'key' && /*#__PURE__*/ (0, $cP7hC$react).createElement(\"input\", {\n type: \"hidden\",\n name: name,\n value: (_state_selectedKey = state.selectedKey) !== null && _state_selectedKey !== void 0 ? _state_selectedKey : ''\n }));\n}\n/**\n * A combo box combines a text input with a listbox, allowing users to filter a list of options to items matching a query.\n */ const $d01f2c01039c0eec$export$72b9695b8216309a = /*#__PURE__*/ (0, $cP7hC$forwardRef)($d01f2c01039c0eec$var$ComboBox);\n\n\nexport {$d01f2c01039c0eec$export$d414ccceff7063c3 as ComboBoxContext, $d01f2c01039c0eec$export$c02625b26074192c as ComboBoxStateContext, $d01f2c01039c0eec$export$72b9695b8216309a as ComboBox};\n//# sourceMappingURL=ComboBox.module.js.map\n","import {createContext as $95phC$createContext} from \"react\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $4e85f108e88277b8$export$b085522c77523c51 = (0, $95phC$createContext)(null);\nconst $4e85f108e88277b8$export$ebe63fadcdce34ed = (0, $95phC$createContext)(null);\nconst $4e85f108e88277b8$export$44644b8a16031b5b = (0, $95phC$createContext)(null);\nconst $4e85f108e88277b8$export$717b2c0a523a0b53 = (0, $95phC$createContext)(null);\nconst $4e85f108e88277b8$export$265015d6dc85bf21 = (0, $95phC$createContext)(null);\nconst $4e85f108e88277b8$export$d688439359537581 = (0, $95phC$createContext)({});\n\n\nexport {$4e85f108e88277b8$export$b085522c77523c51 as CheckboxContext, $4e85f108e88277b8$export$ebe63fadcdce34ed as ColorAreaContext, $4e85f108e88277b8$export$44644b8a16031b5b as ColorFieldContext, $4e85f108e88277b8$export$717b2c0a523a0b53 as ColorSliderContext, $4e85f108e88277b8$export$265015d6dc85bf21 as ColorWheelContext, $4e85f108e88277b8$export$d688439359537581 as HeadingContext};\n//# sourceMappingURL=RSPContexts.module.js.map\n","import {CollectionRendererContext as $7135fc7d473fd974$export$4feb769f8ddf26c5, SectionContext as $7135fc7d473fd974$export$d40e14dec8b060a8, usePersistedKeys as $7135fc7d473fd974$export$90e00781bc59d8f9} from \"./Collection.mjs\";\nimport {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, useSlottedContext as $64fa3d84918910a7$export$fabf2dc03a41866e} from \"./utils.mjs\";\nimport {HeaderContext as $72a5793c14baf454$export$e0e4026c12a8bdbb} from \"./Header.mjs\";\nimport {KeyboardContext as $63df2425e2108aa8$export$744d98a3b8a94e1c} from \"./Keyboard.mjs\";\nimport {OverlayTriggerStateContext as $de32f1b87079253c$export$d2f961adcb0afbe} from \"./Dialog.mjs\";\nimport {PopoverContext as $07b14b47974efb58$export$9b9a0cd73afb7ca4} from \"./Popover.mjs\";\nimport {SeparatorContext as $431f98aba6844401$export$6615d83f6de245ce} from \"./Separator.mjs\";\nimport {TextContext as $514c0188e459b4c0$export$9afb8bc826b033ea} from \"./Text.mjs\";\nimport {useMenuTrigger as $kM2ZM$useMenuTrigger, useMenu as $kM2ZM$useMenu, FocusScope as $kM2ZM$FocusScope, useMenuSection as $kM2ZM$useMenuSection, useMenuItem as $kM2ZM$useMenuItem, useFocusRing as $kM2ZM$useFocusRing, mergeProps as $kM2ZM$mergeProps} from \"react-aria\";\nimport {useMenuTriggerState as $kM2ZM$useMenuTriggerState, useTreeState as $kM2ZM$useTreeState} from \"react-stately\";\nimport {createBranchComponent as $kM2ZM$createBranchComponent, CollectionBuilder as $kM2ZM$CollectionBuilder, Collection as $kM2ZM$Collection, createLeafComponent as $kM2ZM$createLeafComponent} from \"@react-aria/collections\";\nimport {useResizeObserver as $kM2ZM$useResizeObserver, useObjectRef as $kM2ZM$useObjectRef, filterDOMProps as $kM2ZM$filterDOMProps} from \"@react-aria/utils\";\nimport {SelectionManager as $kM2ZM$SelectionManager, useMultipleSelectionState as $kM2ZM$useMultipleSelectionState} from \"@react-stately/selection\";\nimport {PressResponder as $kM2ZM$PressResponder, useHover as $kM2ZM$useHover} from \"@react-aria/interactions\";\nimport $kM2ZM$react, {createContext as $kM2ZM$createContext, useRef as $kM2ZM$useRef, useState as $kM2ZM$useState, useCallback as $kM2ZM$useCallback, useContext as $kM2ZM$useContext, forwardRef as $kM2ZM$forwardRef} from \"react\";\nimport {useSubmenuTriggerState as $kM2ZM$useSubmenuTriggerState} from \"@react-stately/menu\";\nimport {useSubmenuTrigger as $kM2ZM$useSubmenuTrigger} from \"@react-aria/menu\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst $3674c52c6b3c5bce$export$c7e742effb1c51e2 = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nconst $3674c52c6b3c5bce$export$24aad8519b95b41b = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nconst $3674c52c6b3c5bce$export$795aec4671cbae19 = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nconst $3674c52c6b3c5bce$var$SelectionManagerContext = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nfunction $3674c52c6b3c5bce$export$27d2ad3c5815583e(props) {\n let state = (0, $kM2ZM$useMenuTriggerState)(props);\n let ref = (0, $kM2ZM$useRef)(null);\n let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $kM2ZM$useMenuTrigger)({\n ...props,\n type: 'menu'\n }, state, ref);\n // Allows menu width to match button\n let [buttonWidth, setButtonWidth] = (0, $kM2ZM$useState)(null);\n let onResize = (0, $kM2ZM$useCallback)(()=>{\n if (ref.current) setButtonWidth(ref.current.offsetWidth + 'px');\n }, [\n ref\n ]);\n (0, $kM2ZM$useResizeObserver)({\n ref: ref,\n onResize: onResize\n });\n let scrollRef = (0, $kM2ZM$useRef)(null);\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $3674c52c6b3c5bce$export$c7e742effb1c51e2,\n {\n ...menuProps,\n ref: scrollRef\n }\n ],\n [\n (0, $de32f1b87079253c$export$d2f961adcb0afbe),\n state\n ],\n [\n $3674c52c6b3c5bce$export$795aec4671cbae19,\n state\n ],\n [\n (0, $07b14b47974efb58$export$9b9a0cd73afb7ca4),\n {\n trigger: 'MenuTrigger',\n triggerRef: ref,\n scrollRef: scrollRef,\n placement: 'bottom start',\n style: {\n '--trigger-width': buttonWidth\n }\n }\n ]\n ]\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $kM2ZM$PressResponder), {\n ...menuTriggerProps,\n ref: ref,\n isPressed: state.isOpen\n }, props.children));\n}\nconst $3674c52c6b3c5bce$var$SubmenuTriggerContext = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nconst $3674c52c6b3c5bce$export$ecabc99eeffab7ca = /*#__PURE__*/ (0, $kM2ZM$createBranchComponent)('submenutrigger', (props, ref, item)=>{\n let { CollectionBranch: CollectionBranch } = (0, $kM2ZM$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let state = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$export$24aad8519b95b41b);\n let rootMenuTriggerState = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$export$795aec4671cbae19);\n let submenuTriggerState = (0, $kM2ZM$useSubmenuTriggerState)({\n triggerKey: item.key\n }, rootMenuTriggerState);\n let submenuRef = (0, $kM2ZM$useRef)(null);\n let itemRef = (0, $kM2ZM$useObjectRef)(ref);\n let { parentMenuRef: parentMenuRef } = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$var$SubmenuTriggerContext);\n let { submenuTriggerProps: submenuTriggerProps, submenuProps: submenuProps, popoverProps: popoverProps } = (0, $kM2ZM$useSubmenuTrigger)({\n parentMenuRef: parentMenuRef,\n submenuRef: submenuRef,\n delay: props.delay\n }, submenuTriggerState, itemRef);\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $3674c52c6b3c5bce$var$MenuItemContext,\n {\n ...submenuTriggerProps,\n onAction: undefined,\n ref: itemRef\n }\n ],\n [\n $3674c52c6b3c5bce$export$c7e742effb1c51e2,\n submenuProps\n ],\n [\n (0, $de32f1b87079253c$export$d2f961adcb0afbe),\n submenuTriggerState\n ],\n [\n (0, $07b14b47974efb58$export$9b9a0cd73afb7ca4),\n {\n ref: submenuRef,\n trigger: 'SubmenuTrigger',\n triggerRef: itemRef,\n placement: 'end top',\n // Prevent parent popover from hiding submenu.\n // @ts-ignore\n 'data-react-aria-top-layer': true,\n ...popoverProps\n }\n ]\n ]\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement(CollectionBranch, {\n collection: state.collection,\n parent: item\n }), props.children[1]);\n}, (props)=>props.children[0]);\nfunction $3674c52c6b3c5bce$var$Menu(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $3674c52c6b3c5bce$export$c7e742effb1c51e2);\n // Delay rendering the actual menu until we have the collection so that auto focus works properly.\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $kM2ZM$CollectionBuilder), {\n content: /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $kM2ZM$Collection), props)\n }, (collection)=>collection.size > 0 && /*#__PURE__*/ (0, $kM2ZM$react).createElement($3674c52c6b3c5bce$var$MenuInner, {\n props: props,\n collection: collection,\n menuRef: ref\n }));\n}\nfunction $3674c52c6b3c5bce$var$MenuInner({ props: props, collection: collection, menuRef: ref }) {\n let state = (0, $kM2ZM$useTreeState)({\n ...props,\n collection: collection,\n children: undefined\n });\n let triggerState = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$export$795aec4671cbae19);\n let { isVirtualized: isVirtualized, CollectionRoot: CollectionRoot } = (0, $kM2ZM$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let { menuProps: menuProps } = (0, $kM2ZM$useMenu)({\n ...props,\n isVirtualized: isVirtualized,\n onClose: props.onClose || (triggerState === null || triggerState === void 0 ? void 0 : triggerState.close)\n }, state, ref);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n defaultClassName: 'react-aria-Menu',\n className: props.className,\n style: props.style,\n values: {}\n });\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $kM2ZM$FocusScope), null, /*#__PURE__*/ (0, $kM2ZM$react).createElement(\"div\", {\n ...(0, $kM2ZM$filterDOMProps)(props),\n ...menuProps,\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined,\n onScroll: props.onScroll\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $3674c52c6b3c5bce$export$24aad8519b95b41b,\n state\n ],\n [\n (0, $431f98aba6844401$export$6615d83f6de245ce),\n {\n elementType: 'div'\n }\n ],\n [\n (0, $7135fc7d473fd974$export$d40e14dec8b060a8),\n {\n name: 'MenuSection',\n render: $3674c52c6b3c5bce$var$MenuSection\n }\n ],\n [\n $3674c52c6b3c5bce$var$SubmenuTriggerContext,\n {\n parentMenuRef: ref\n }\n ],\n [\n $3674c52c6b3c5bce$var$MenuItemContext,\n null\n ],\n [\n $3674c52c6b3c5bce$var$SelectionManagerContext,\n state.selectionManager\n ]\n ]\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement(CollectionRoot, {\n collection: collection,\n persistedKeys: (0, $7135fc7d473fd974$export$90e00781bc59d8f9)(state.selectionManager.focusedKey),\n scrollRef: ref\n }))));\n}\n/**\n * A menu displays a list of actions or options that a user can choose.\n */ const $3674c52c6b3c5bce$export$d9b273488cd8ce6f = /*#__PURE__*/ (0, $kM2ZM$forwardRef)($3674c52c6b3c5bce$var$Menu);\n// A subclass of SelectionManager that forwards focus-related properties to the parent,\n// but has its own local selection state.\nclass $3674c52c6b3c5bce$var$GroupSelectionManager extends (0, $kM2ZM$SelectionManager) {\n get focusedKey() {\n return this.parent.focusedKey;\n }\n get isFocused() {\n return this.parent.isFocused;\n }\n setFocusedKey(key, childFocusStrategy) {\n return this.parent.setFocusedKey(key, childFocusStrategy);\n }\n setFocused(isFocused) {\n this.parent.setFocused(isFocused);\n }\n get childFocusStrategy() {\n return this.parent.childFocusStrategy;\n }\n constructor(parent, state){\n super(parent.collection, state);\n this.parent = parent;\n }\n}\nfunction $3674c52c6b3c5bce$var$MenuSection(props, ref, section, className = 'react-aria-MenuSection') {\n var _section_props, _section_props1;\n let state = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$export$24aad8519b95b41b);\n let { CollectionBranch: CollectionBranch } = (0, $kM2ZM$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let [headingRef, heading] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n var _section_props_arialabel;\n let { headingProps: headingProps, groupProps: groupProps } = (0, $kM2ZM$useMenuSection)({\n heading: heading,\n 'aria-label': (_section_props_arialabel = section.props['aria-label']) !== null && _section_props_arialabel !== void 0 ? _section_props_arialabel : undefined\n });\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n defaultClassName: className,\n className: (_section_props = section.props) === null || _section_props === void 0 ? void 0 : _section_props.className,\n style: (_section_props1 = section.props) === null || _section_props1 === void 0 ? void 0 : _section_props1.style,\n values: {}\n });\n let parent = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$var$SelectionManagerContext);\n let selectionState = (0, $kM2ZM$useMultipleSelectionState)(props);\n let manager = props.selectionMode != null ? new $3674c52c6b3c5bce$var$GroupSelectionManager(parent, selectionState) : parent;\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement(\"section\", {\n ...(0, $kM2ZM$filterDOMProps)(props),\n ...groupProps,\n ...renderProps,\n ref: ref\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n (0, $72a5793c14baf454$export$e0e4026c12a8bdbb),\n {\n ...headingProps,\n ref: headingRef\n }\n ],\n [\n $3674c52c6b3c5bce$var$SelectionManagerContext,\n manager\n ]\n ]\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement(CollectionBranch, {\n collection: state.collection,\n parent: section\n })));\n}\n/**\n * A MenuSection represents a section within a Menu.\n */ const $3674c52c6b3c5bce$export$4b1545b4f2016d26 = /*#__PURE__*/ (0, $kM2ZM$createBranchComponent)('section', $3674c52c6b3c5bce$var$MenuSection);\nconst $3674c52c6b3c5bce$var$MenuItemContext = /*#__PURE__*/ (0, $kM2ZM$createContext)(null);\nconst $3674c52c6b3c5bce$export$2ce376c2cc3355c8 = /*#__PURE__*/ (0, $kM2ZM$createLeafComponent)('item', function MenuItem(props, forwardedRef, item) {\n var _useSlottedContext;\n [props, forwardedRef] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, forwardedRef, $3674c52c6b3c5bce$var$MenuItemContext);\n let id = (_useSlottedContext = (0, $64fa3d84918910a7$export$fabf2dc03a41866e)($3674c52c6b3c5bce$var$MenuItemContext)) === null || _useSlottedContext === void 0 ? void 0 : _useSlottedContext.id;\n let state = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$export$24aad8519b95b41b);\n let ref = (0, $kM2ZM$useObjectRef)(forwardedRef);\n let selectionManager = (0, $kM2ZM$useContext)($3674c52c6b3c5bce$var$SelectionManagerContext);\n let { menuItemProps: menuItemProps, labelProps: labelProps, descriptionProps: descriptionProps, keyboardShortcutProps: keyboardShortcutProps, ...states } = (0, $kM2ZM$useMenuItem)({\n ...props,\n id: id,\n key: item.key,\n selectionManager: selectionManager\n }, state, ref);\n let { isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $kM2ZM$useFocusRing)();\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $kM2ZM$useHover)({\n isDisabled: states.isDisabled\n });\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n id: undefined,\n children: item.rendered,\n defaultClassName: 'react-aria-MenuItem',\n values: {\n ...states,\n isHovered: isHovered,\n isFocusVisible: isFocusVisible,\n selectionMode: selectionManager.selectionMode,\n selectionBehavior: selectionManager.selectionBehavior,\n hasSubmenu: !!props['aria-haspopup'],\n isOpen: props['aria-expanded'] === 'true'\n }\n });\n let ElementType = props.href ? 'a' : 'div';\n return /*#__PURE__*/ (0, $kM2ZM$react).createElement(ElementType, {\n ...(0, $kM2ZM$mergeProps)(menuItemProps, focusProps, hoverProps),\n ...renderProps,\n ref: ref,\n \"data-disabled\": states.isDisabled || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-focused\": states.isFocused || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-pressed\": states.isPressed || undefined,\n \"data-selected\": states.isSelected || undefined,\n \"data-selection-mode\": selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode,\n \"data-has-submenu\": !!props['aria-haspopup'] || undefined,\n \"data-open\": props['aria-expanded'] === 'true' || undefined\n }, /*#__PURE__*/ (0, $kM2ZM$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n (0, $514c0188e459b4c0$export$9afb8bc826b033ea),\n {\n slots: {\n label: labelProps,\n description: descriptionProps\n }\n }\n ],\n [\n (0, $63df2425e2108aa8$export$744d98a3b8a94e1c),\n keyboardShortcutProps\n ]\n ]\n }, renderProps.children));\n});\n\n\nexport {$3674c52c6b3c5bce$export$c7e742effb1c51e2 as MenuContext, $3674c52c6b3c5bce$export$24aad8519b95b41b as MenuStateContext, $3674c52c6b3c5bce$export$795aec4671cbae19 as RootMenuTriggerStateContext, $3674c52c6b3c5bce$export$27d2ad3c5815583e as MenuTrigger, $3674c52c6b3c5bce$export$ecabc99eeffab7ca as SubmenuTrigger, $3674c52c6b3c5bce$export$d9b273488cd8ce6f as Menu, $3674c52c6b3c5bce$export$4b1545b4f2016d26 as MenuSection, $3674c52c6b3c5bce$export$2ce376c2cc3355c8 as MenuItem};\n//# sourceMappingURL=Menu.module.js.map\n","import {ButtonContext as $d2b4bc8c273e7be6$export$24d547caef80ccd1} from \"./Button.mjs\";\nimport {DEFAULT_SLOT as $64fa3d84918910a7$export$c62b8e45d58ddad9, Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {HeadingContext as $4e85f108e88277b8$export$d688439359537581} from \"./RSPContexts.mjs\";\nimport {PopoverContext as $07b14b47974efb58$export$9b9a0cd73afb7ca4} from \"./Popover.mjs\";\nimport {RootMenuTriggerStateContext as $3674c52c6b3c5bce$export$795aec4671cbae19} from \"./Menu.mjs\";\nimport {useOverlayTrigger as $6IYYA$useOverlayTrigger, useId as $6IYYA$useId, useDialog as $6IYYA$useDialog} from \"react-aria\";\nimport {filterDOMProps as $6IYYA$filterDOMProps} from \"@react-aria/utils\";\nimport {useMenuTriggerState as $6IYYA$useMenuTriggerState} from \"react-stately\";\nimport {PressResponder as $6IYYA$PressResponder} from \"@react-aria/interactions\";\nimport $6IYYA$react, {createContext as $6IYYA$createContext, useRef as $6IYYA$useRef, useContext as $6IYYA$useContext, forwardRef as $6IYYA$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\nconst $de32f1b87079253c$export$8b93a07348a7730c = /*#__PURE__*/ (0, $6IYYA$createContext)(null);\nconst $de32f1b87079253c$export$d2f961adcb0afbe = /*#__PURE__*/ (0, $6IYYA$createContext)(null);\nfunction $de32f1b87079253c$export$2e1e1122cf0cba88(props) {\n // Use useMenuTriggerState instead of useOverlayTriggerState in case a menu is embedded in the dialog.\n // This is needed to handle submenus.\n let state = (0, $6IYYA$useMenuTriggerState)(props);\n let buttonRef = (0, $6IYYA$useRef)(null);\n let { triggerProps: triggerProps, overlayProps: overlayProps } = (0, $6IYYA$useOverlayTrigger)({\n type: 'dialog'\n }, state, buttonRef);\n // Label dialog by the trigger as a fallback if there is no title slot.\n // This is done in RAC instead of hooks because otherwise we cannot distinguish\n // between context and props. Normally aria-labelledby overrides the title\n // but when sent by context we want the title to win.\n triggerProps.id = (0, $6IYYA$useId)();\n overlayProps['aria-labelledby'] = triggerProps.id;\n return /*#__PURE__*/ (0, $6IYYA$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $de32f1b87079253c$export$d2f961adcb0afbe,\n state\n ],\n [\n (0, $3674c52c6b3c5bce$export$795aec4671cbae19),\n state\n ],\n [\n $de32f1b87079253c$export$8b93a07348a7730c,\n overlayProps\n ],\n [\n (0, $07b14b47974efb58$export$9b9a0cd73afb7ca4),\n {\n trigger: 'DialogTrigger',\n triggerRef: buttonRef\n }\n ]\n ]\n }, /*#__PURE__*/ (0, $6IYYA$react).createElement((0, $6IYYA$PressResponder), {\n ...triggerProps,\n ref: buttonRef,\n isPressed: state.isOpen\n }, props.children));\n}\nfunction $de32f1b87079253c$var$Dialog(props, ref) {\n let originalAriaLabelledby = props['aria-labelledby'];\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $de32f1b87079253c$export$8b93a07348a7730c);\n let { dialogProps: dialogProps, titleProps: titleProps } = (0, $6IYYA$useDialog)({\n ...props,\n // Only pass aria-labelledby from props, not context.\n // Context is used as a fallback below.\n 'aria-labelledby': originalAriaLabelledby\n }, ref);\n let state = (0, $6IYYA$useContext)($de32f1b87079253c$export$d2f961adcb0afbe);\n if (!dialogProps['aria-label'] && !dialogProps['aria-labelledby']) {\n // If aria-labelledby exists on props, we know it came from context.\n // Use that as a fallback in case there is no title slot.\n if (props['aria-labelledby']) dialogProps['aria-labelledby'] = props['aria-labelledby'];\n else console.warn('If a Dialog does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.');\n }\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n defaultClassName: 'react-aria-Dialog',\n className: props.className,\n style: props.style,\n children: props.children,\n values: {\n close: (state === null || state === void 0 ? void 0 : state.close) || (()=>{})\n }\n });\n return /*#__PURE__*/ (0, $6IYYA$react).createElement(\"section\", {\n ...(0, $6IYYA$filterDOMProps)(props),\n ...dialogProps,\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined\n }, /*#__PURE__*/ (0, $6IYYA$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n (0, $4e85f108e88277b8$export$d688439359537581),\n {\n slots: {\n [(0, $64fa3d84918910a7$export$c62b8e45d58ddad9)]: {},\n title: {\n ...titleProps,\n level: 2\n }\n }\n }\n ],\n [\n (0, $d2b4bc8c273e7be6$export$24d547caef80ccd1),\n {\n slots: {\n [(0, $64fa3d84918910a7$export$c62b8e45d58ddad9)]: {},\n close: {\n onPress: ()=>state === null || state === void 0 ? void 0 : state.close()\n }\n }\n }\n ]\n ]\n }, renderProps.children));\n}\n/**\n * A dialog is an overlay shown above other content in an application.\n */ const $de32f1b87079253c$export$3ddf2d174ce01153 = /*#__PURE__*/ (0, $6IYYA$forwardRef)($de32f1b87079253c$var$Dialog);\n\n\nexport {$de32f1b87079253c$export$8b93a07348a7730c as DialogContext, $de32f1b87079253c$export$d2f961adcb0afbe as OverlayTriggerStateContext, $de32f1b87079253c$export$2e1e1122cf0cba88 as DialogTrigger, $de32f1b87079253c$export$3ddf2d174ce01153 as Dialog};\n//# sourceMappingURL=Dialog.module.js.map\n","import {useOverlayTriggerState as $8bn9m$useOverlayTriggerState} from \"@react-stately/overlays\";\nimport {useState as $8bn9m$useState} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $a28c903ee9ad8dc5$export$79fefeb1c2091ac3(props) {\n let overlayTriggerState = (0, $8bn9m$useOverlayTriggerState)(props);\n let [focusStrategy, setFocusStrategy] = (0, $8bn9m$useState)(null);\n let [expandedKeysStack, setExpandedKeysStack] = (0, $8bn9m$useState)([]);\n let closeAll = ()=>{\n setExpandedKeysStack([]);\n overlayTriggerState.close();\n };\n let openSubmenu = (triggerKey, level)=>{\n setExpandedKeysStack((oldStack)=>{\n if (level > oldStack.length) return oldStack;\n return [\n ...oldStack.slice(0, level),\n triggerKey\n ];\n });\n };\n let closeSubmenu = (triggerKey, level)=>{\n setExpandedKeysStack((oldStack)=>{\n let key = oldStack[level];\n if (key === triggerKey) return oldStack.slice(0, level);\n else return oldStack;\n });\n };\n return {\n focusStrategy: focusStrategy,\n ...overlayTriggerState,\n open (focusStrategy = null) {\n setFocusStrategy(focusStrategy);\n overlayTriggerState.open();\n },\n toggle (focusStrategy = null) {\n setFocusStrategy(focusStrategy);\n overlayTriggerState.toggle();\n },\n close () {\n closeAll();\n },\n expandedKeysStack: expandedKeysStack,\n openSubmenu: openSubmenu,\n closeSubmenu: closeSubmenu\n };\n}\n\n\nexport {$a28c903ee9ad8dc5$export$79fefeb1c2091ac3 as useMenuTriggerState};\n//# sourceMappingURL=useMenuTriggerState.module.js.map\n","import {useSlotId as $i6df2$useSlotId, filterDOMProps as $i6df2$filterDOMProps} from \"@react-aria/utils\";\nimport {focusSafely as $i6df2$focusSafely} from \"@react-aria/focus\";\nimport {useRef as $i6df2$useRef, useEffect as $i6df2$useEffect} from \"react\";\nimport {useOverlayFocusContain as $i6df2$useOverlayFocusContain} from \"@react-aria/overlays\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $40df3f8667284809$export$d55e7ee900f34e93(props, ref) {\n let { role: role = 'dialog' } = props;\n let titleId = (0, $i6df2$useSlotId)();\n titleId = props['aria-label'] ? undefined : titleId;\n let isRefocusing = (0, $i6df2$useRef)(false);\n // Focus the dialog itself on mount, unless a child element is already focused.\n (0, $i6df2$useEffect)(()=>{\n if (ref.current && !ref.current.contains(document.activeElement)) {\n (0, $i6df2$focusSafely)(ref.current);\n // Safari on iOS does not move the VoiceOver cursor to the dialog\n // or announce that it has opened until it has rendered. A workaround\n // is to wait for half a second, then blur and re-focus the dialog.\n let timeout = setTimeout(()=>{\n if (document.activeElement === ref.current) {\n isRefocusing.current = true;\n if (ref.current) {\n ref.current.blur();\n (0, $i6df2$focusSafely)(ref.current);\n }\n isRefocusing.current = false;\n }\n }, 500);\n return ()=>{\n clearTimeout(timeout);\n };\n }\n }, [\n ref\n ]);\n (0, $i6df2$useOverlayFocusContain)();\n // We do not use aria-modal due to a Safari bug which forces the first focusable element to be focused\n // on mount when inside an iframe, no matter which element we programmatically focus.\n // See https://bugs.webkit.org/show_bug.cgi?id=211934.\n // useModal sets aria-hidden on all elements outside the dialog, so the dialog will behave as a modal\n // even without aria-modal on the dialog itself.\n return {\n dialogProps: {\n ...(0, $i6df2$filterDOMProps)(props, {\n labelable: true\n }),\n role: role,\n tabIndex: -1,\n 'aria-labelledby': props['aria-labelledby'] || titleId,\n // Prevent blur events from reaching useOverlay, which may cause\n // popovers to close. Since focus is contained within the dialog,\n // we don't want this to occur due to the above useEffect.\n onBlur: (e)=>{\n if (isRefocusing.current) e.stopPropagation();\n }\n },\n titleProps: {\n id: titleId\n }\n };\n}\n\n\nexport {$40df3f8667284809$export$d55e7ee900f34e93 as useDialog};\n//# sourceMappingURL=useDialog.module.js.map\n","import {useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {Text as $514c0188e459b4c0$export$5f1af8db9871e1d6} from \"./Text.mjs\";\nimport {filterDOMProps as $hnYyE$filterDOMProps} from \"@react-aria/utils\";\nimport $hnYyE$react, {createContext as $hnYyE$createContext, useContext as $hnYyE$useContext, forwardRef as $hnYyE$forwardRef} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nconst $ee014567cb39d3f0$export$ff05c3ac10437e03 = /*#__PURE__*/ (0, $hnYyE$createContext)(null);\nfunction $ee014567cb39d3f0$var$FieldError(props, ref) {\n let validation = (0, $hnYyE$useContext)($ee014567cb39d3f0$export$ff05c3ac10437e03);\n if (!(validation === null || validation === void 0 ? void 0 : validation.isInvalid)) return null;\n return /*#__PURE__*/ (0, $hnYyE$react).createElement($ee014567cb39d3f0$var$FieldErrorInner, {\n ...props,\n ref: ref\n });\n}\n/**\n * A FieldError displays validation errors for a form field.\n */ const $ee014567cb39d3f0$export$f551688fc98f2e09 = /*#__PURE__*/ (0, $hnYyE$forwardRef)($ee014567cb39d3f0$var$FieldError);\nconst $ee014567cb39d3f0$var$FieldErrorInner = /*#__PURE__*/ (0, $hnYyE$forwardRef)((props, ref)=>{\n let validation = (0, $hnYyE$useContext)($ee014567cb39d3f0$export$ff05c3ac10437e03);\n let domProps = (0, $hnYyE$filterDOMProps)(props);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultClassName: 'react-aria-FieldError',\n defaultChildren: validation.validationErrors.length === 0 ? undefined : validation.validationErrors.join(' '),\n values: validation\n });\n if (renderProps.children == null) return null;\n return /*#__PURE__*/ (0, $hnYyE$react).createElement((0, $514c0188e459b4c0$export$5f1af8db9871e1d6), {\n slot: \"errorMessage\",\n ...domProps,\n ...renderProps,\n ref: ref\n });\n});\n\n\nexport {$ee014567cb39d3f0$export$ff05c3ac10437e03 as FieldErrorContext, $ee014567cb39d3f0$export$f551688fc98f2e09 as FieldError};\n//# sourceMappingURL=FieldError.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415} from \"./utils.mjs\";\nimport {FormValidationContext as $j6ya4$FormValidationContext} from \"react-stately\";\nimport $j6ya4$react, {createContext as $j6ya4$createContext, forwardRef as $j6ya4$forwardRef} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $d3e0e05bdfcf66bd$export$c24727297075ec6a = /*#__PURE__*/ (0, $j6ya4$createContext)(null);\nfunction $d3e0e05bdfcf66bd$var$Form(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $d3e0e05bdfcf66bd$export$c24727297075ec6a);\n let { validationErrors: validationErrors, validationBehavior: validationBehavior = 'native', children: children, className: className, ...domProps } = props;\n return /*#__PURE__*/ (0, $j6ya4$react).createElement(\"form\", {\n noValidate: validationBehavior !== 'native',\n ...domProps,\n ref: ref,\n className: className || 'react-aria-Form'\n }, /*#__PURE__*/ (0, $j6ya4$react).createElement($d3e0e05bdfcf66bd$export$c24727297075ec6a.Provider, {\n value: {\n ...props,\n validationBehavior: validationBehavior\n }\n }, /*#__PURE__*/ (0, $j6ya4$react).createElement((0, $j6ya4$FormValidationContext).Provider, {\n value: validationErrors !== null && validationErrors !== void 0 ? validationErrors : {}\n }, children)));\n}\n/**\n * A form is a group of inputs that allows users to submit data to a server,\n * with support for providing field validation errors.\n */ const $d3e0e05bdfcf66bd$export$a7fed597f4b8afd8 = /*#__PURE__*/ (0, $j6ya4$forwardRef)($d3e0e05bdfcf66bd$var$Form);\n\n\nexport {$d3e0e05bdfcf66bd$export$c24727297075ec6a as FormContext, $d3e0e05bdfcf66bd$export$a7fed597f4b8afd8 as Form};\n//# sourceMappingURL=Form.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {createHideableComponent as $jMZTB$createHideableComponent} from \"@react-aria/collections\";\nimport {useHover as $jMZTB$useHover, useFocusRing as $jMZTB$useFocusRing, mergeProps as $jMZTB$mergeProps} from \"react-aria\";\nimport $jMZTB$react, {createContext as $jMZTB$createContext} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nconst $3985021b0ad6602f$export$37fb8590cf2c088c = /*#__PURE__*/ (0, $jMZTB$createContext)({});\nlet $3985021b0ad6602f$var$filterHoverProps = (props)=>{\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, ...otherProps } = props;\n return otherProps;\n};\nfunction $3985021b0ad6602f$var$Input(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $3985021b0ad6602f$export$37fb8590cf2c088c);\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $jMZTB$useHover)(props);\n let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $jMZTB$useFocusRing)({\n isTextInput: true,\n autoFocus: props.autoFocus\n });\n let isInvalid = !!props['aria-invalid'] && props['aria-invalid'] !== 'false';\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: {\n isHovered: isHovered,\n isFocused: isFocused,\n isFocusVisible: isFocusVisible,\n isDisabled: props.disabled || false,\n isInvalid: isInvalid\n },\n defaultClassName: 'react-aria-Input'\n });\n return /*#__PURE__*/ (0, $jMZTB$react).createElement(\"input\", {\n ...(0, $jMZTB$mergeProps)($3985021b0ad6602f$var$filterHoverProps(props), focusProps, hoverProps),\n ...renderProps,\n ref: ref,\n \"data-focused\": isFocused || undefined,\n \"data-disabled\": props.disabled || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-invalid\": isInvalid || undefined\n });\n}\n/**\n * An input allows a user to input text.\n */ const $3985021b0ad6602f$export$f5b8910cec6cf069 = /*#__PURE__*/ (0, $jMZTB$createHideableComponent)($3985021b0ad6602f$var$Input);\n\n\nexport {$3985021b0ad6602f$export$37fb8590cf2c088c as InputContext, $3985021b0ad6602f$export$f5b8910cec6cf069 as Input};\n//# sourceMappingURL=Input.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415} from \"./utils.mjs\";\nimport {createHideableComponent as $kc2Tc$createHideableComponent} from \"@react-aria/collections\";\nimport $kc2Tc$react, {createContext as $kc2Tc$createContext} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $01b77f81d0f07f68$export$75b6ee27786ba447 = /*#__PURE__*/ (0, $kc2Tc$createContext)({});\nfunction $01b77f81d0f07f68$var$Label(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $01b77f81d0f07f68$export$75b6ee27786ba447);\n let { elementType: ElementType = 'label', ...labelProps } = props;\n // @ts-ignore\n return /*#__PURE__*/ (0, $kc2Tc$react).createElement(ElementType, {\n className: \"react-aria-Label\",\n ...labelProps,\n ref: ref\n });\n}\nconst $01b77f81d0f07f68$export$b04be29aa201d4f5 = /*#__PURE__*/ (0, $kc2Tc$createHideableComponent)($01b77f81d0f07f68$var$Label);\n\n\nexport {$01b77f81d0f07f68$export$75b6ee27786ba447 as LabelContext, $01b77f81d0f07f68$export$b04be29aa201d4f5 as Label};\n//# sourceMappingURL=Label.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {useLink as $115DY$useLink, useHover as $115DY$useHover, useFocusRing as $115DY$useFocusRing, mergeProps as $115DY$mergeProps} from \"react-aria\";\nimport $115DY$react, {createContext as $115DY$createContext, forwardRef as $115DY$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $4f118338184dc1d9$export$e2509388b49734e7 = /*#__PURE__*/ (0, $115DY$createContext)(null);\nfunction $4f118338184dc1d9$var$Link(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $4f118338184dc1d9$export$e2509388b49734e7);\n let ElementType = props.href && !props.isDisabled ? 'a' : 'span';\n let { linkProps: linkProps, isPressed: isPressed } = (0, $115DY$useLink)({\n ...props,\n elementType: ElementType\n }, ref);\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $115DY$useHover)(props);\n let { focusProps: focusProps, isFocused: isFocused, isFocusVisible: isFocusVisible } = (0, $115DY$useFocusRing)();\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultClassName: 'react-aria-Link',\n values: {\n isCurrent: !!props['aria-current'],\n isDisabled: props.isDisabled || false,\n isPressed: isPressed,\n isHovered: isHovered,\n isFocused: isFocused,\n isFocusVisible: isFocusVisible\n }\n });\n return /*#__PURE__*/ (0, $115DY$react).createElement(ElementType, {\n ref: ref,\n slot: props.slot || undefined,\n ...(0, $115DY$mergeProps)(renderProps, linkProps, hoverProps, focusProps),\n \"data-focused\": isFocused || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-pressed\": isPressed || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-current\": !!props['aria-current'] || undefined,\n \"data-disabled\": props.isDisabled || undefined\n }, renderProps.children);\n}\n/**\n * A link allows a user to navigate to another page or resource within a web page\n * or application.\n */ const $4f118338184dc1d9$export$a6c7ac8248d6e38a = /*#__PURE__*/ (0, $115DY$forwardRef)($4f118338184dc1d9$var$Link);\n\n\nexport {$4f118338184dc1d9$export$e2509388b49734e7 as LinkContext, $4f118338184dc1d9$export$a6c7ac8248d6e38a as Link};\n//# sourceMappingURL=Link.module.js.map\n","import {filterDOMProps as $5Ot33$filterDOMProps, mergeProps as $5Ot33$mergeProps, useRouter as $5Ot33$useRouter, useLinkProps as $5Ot33$useLinkProps, shouldClientNavigate as $5Ot33$shouldClientNavigate} from \"@react-aria/utils\";\nimport {useFocusable as $5Ot33$useFocusable} from \"@react-aria/focus\";\nimport {usePress as $5Ot33$usePress} from \"@react-aria/interactions\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $298d61e98472621b$export$dcf14c9974fe2767(props, ref) {\n let { elementType: elementType = 'a', onPress: onPress, onPressStart: onPressStart, onPressEnd: onPressEnd, // @ts-ignore\n onClick: deprecatedOnClick, isDisabled: isDisabled, ...otherProps } = props;\n let linkProps = {};\n if (elementType !== 'a') linkProps = {\n role: 'link',\n tabIndex: !isDisabled ? 0 : undefined\n };\n let { focusableProps: focusableProps } = (0, $5Ot33$useFocusable)(props, ref);\n let { pressProps: pressProps, isPressed: isPressed } = (0, $5Ot33$usePress)({\n onPress: onPress,\n onPressStart: onPressStart,\n onPressEnd: onPressEnd,\n isDisabled: isDisabled,\n ref: ref\n });\n let domProps = (0, $5Ot33$filterDOMProps)(otherProps, {\n labelable: true\n });\n let interactionHandlers = (0, $5Ot33$mergeProps)(focusableProps, pressProps);\n let router = (0, $5Ot33$useRouter)();\n let routerLinkProps = (0, $5Ot33$useLinkProps)(props);\n return {\n isPressed: isPressed,\n linkProps: (0, $5Ot33$mergeProps)(domProps, routerLinkProps, {\n ...interactionHandlers,\n ...linkProps,\n 'aria-disabled': isDisabled || undefined,\n 'aria-current': props['aria-current'],\n onClick: (e)=>{\n var _pressProps_onClick;\n (_pressProps_onClick = pressProps.onClick) === null || _pressProps_onClick === void 0 ? void 0 : _pressProps_onClick.call(pressProps, e);\n if (deprecatedOnClick) {\n deprecatedOnClick(e);\n console.warn('onClick is deprecated, please use onPress');\n }\n // If a custom router is provided, prevent default and forward if this link should client navigate.\n if (!router.isNative && e.currentTarget instanceof HTMLAnchorElement && e.currentTarget.href && // If props are applied to a router Link component, it may have already prevented default.\n !e.isDefaultPrevented() && (0, $5Ot33$shouldClientNavigate)(e.currentTarget, e) && props.href) {\n e.preventDefault();\n router.open(e.currentTarget, e, props.href, props.routerOptions);\n }\n }\n })\n };\n}\n\n\nexport {$298d61e98472621b$export$dcf14c9974fe2767 as useLink};\n//# sourceMappingURL=useLink.module.js.map\n","import {createBranchComponent as $18I52$createBranchComponent, useCachedChildren as $18I52$useCachedChildren} from \"@react-aria/collections\";\nimport $18I52$react, {createContext as $18I52$createContext, useContext as $18I52$useContext, useMemo as $18I52$useMemo} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nconst $7135fc7d473fd974$export$d40e14dec8b060a8 = /*#__PURE__*/ (0, $18I52$createContext)(null);\nconst $7135fc7d473fd974$export$6e2c8f0811a474ce = /*#__PURE__*/ (0, $18I52$createBranchComponent)('section', (props, ref, section)=>{\n let { name: name, render: render } = (0, $18I52$useContext)($7135fc7d473fd974$export$d40e14dec8b060a8);\n console.warn(`<Section> is deprecated. Please use <${name}> instead.`);\n return render(props, ref, section, 'react-aria-Section');\n});\nconst $7135fc7d473fd974$export$a164736487e3f0ae = {\n CollectionRoot ({ collection: collection, renderDropIndicator: renderDropIndicator }) {\n return $7135fc7d473fd974$var$useCollectionRender(collection, null, renderDropIndicator);\n },\n CollectionBranch ({ collection: collection, parent: parent, renderDropIndicator: renderDropIndicator }) {\n return $7135fc7d473fd974$var$useCollectionRender(collection, parent, renderDropIndicator);\n }\n};\nfunction $7135fc7d473fd974$var$useCollectionRender(collection, parent, renderDropIndicator) {\n return (0, $18I52$useCachedChildren)({\n items: parent ? collection.getChildren(parent.key) : collection,\n dependencies: [\n renderDropIndicator\n ],\n children (node) {\n var _collection_getItem;\n let rendered = node.render(node);\n if (!renderDropIndicator || node.type !== 'item') return rendered;\n let key = node.key;\n let keyAfter = collection.getKeyAfter(key);\n return /*#__PURE__*/ (0, $18I52$react).createElement((0, $18I52$react).Fragment, null, renderDropIndicator({\n type: 'item',\n key: key,\n dropPosition: 'before'\n }), rendered, (keyAfter == null || ((_collection_getItem = collection.getItem(keyAfter)) === null || _collection_getItem === void 0 ? void 0 : _collection_getItem.type) !== 'item') && renderDropIndicator({\n type: 'item',\n key: key,\n dropPosition: 'after'\n }));\n }\n });\n}\nconst $7135fc7d473fd974$export$4feb769f8ddf26c5 = /*#__PURE__*/ (0, $18I52$createContext)($7135fc7d473fd974$export$a164736487e3f0ae);\nfunction $7135fc7d473fd974$export$90e00781bc59d8f9(focusedKey) {\n return (0, $18I52$useMemo)(()=>focusedKey != null ? new Set([\n focusedKey\n ]) : null, [\n focusedKey\n ]);\n}\n\n\nexport {$7135fc7d473fd974$export$d40e14dec8b060a8 as SectionContext, $7135fc7d473fd974$export$6e2c8f0811a474ce as Section, $7135fc7d473fd974$export$a164736487e3f0ae as DefaultCollectionRenderer, $7135fc7d473fd974$export$4feb769f8ddf26c5 as CollectionRendererContext, $7135fc7d473fd974$export$90e00781bc59d8f9 as usePersistedKeys};\n//# sourceMappingURL=Collection.module.js.map\n","import $f3JOg$react, {createContext as $f3JOg$createContext, useContext as $f3JOg$useContext, forwardRef as $f3JOg$forwardRef, useCallback as $f3JOg$useCallback, useMemo as $f3JOg$useMemo} from \"react\";\n\n/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $612b8eb6cb90e02d$export$d188a835a7bc5783 = /*#__PURE__*/ (0, $f3JOg$createContext)({});\nconst $612b8eb6cb90e02d$export$f55761759794cf55 = /*#__PURE__*/ (0, $f3JOg$createContext)(null);\nfunction $612b8eb6cb90e02d$var$DropIndicator(props, ref) {\n let { render: render } = (0, $f3JOg$useContext)($612b8eb6cb90e02d$export$f55761759794cf55);\n return /*#__PURE__*/ (0, $f3JOg$react).createElement((0, $f3JOg$react).Fragment, null, render(props, ref));\n}\n/**\n * A DropIndicator is rendered between items in a collection to indicate where dropped data will be inserted.\n */ const $612b8eb6cb90e02d$export$62ed72bc21f6b8a6 = /*#__PURE__*/ (0, $f3JOg$forwardRef)($612b8eb6cb90e02d$var$DropIndicator);\nfunction $612b8eb6cb90e02d$export$971707d8a129a1f7(dragAndDropHooks, dropState) {\n var _dragAndDropHooks_isVirtualDragging;\n let renderDropIndicator = dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.renderDropIndicator;\n let isVirtualDragging = dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : (_dragAndDropHooks_isVirtualDragging = dragAndDropHooks.isVirtualDragging) === null || _dragAndDropHooks_isVirtualDragging === void 0 ? void 0 : _dragAndDropHooks_isVirtualDragging.call(dragAndDropHooks);\n let fn = (0, $f3JOg$useCallback)((target)=>{\n // Only show drop indicators when virtual dragging or this is the current drop target.\n if (isVirtualDragging || (dropState === null || dropState === void 0 ? void 0 : dropState.isDropTarget(target))) return renderDropIndicator ? renderDropIndicator(target) : /*#__PURE__*/ (0, $f3JOg$react).createElement($612b8eb6cb90e02d$export$62ed72bc21f6b8a6, {\n target: target\n });\n // We invalidate whenever the target changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dropState === null || dropState === void 0 ? void 0 : dropState.target,\n isVirtualDragging,\n renderDropIndicator\n ]);\n return (dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDropIndicator) ? fn : undefined;\n}\nfunction $612b8eb6cb90e02d$export$d1e8e3fbb7461f6(selectionManager, dragAndDropHooks, dropState) {\n var _dragAndDropHooks_isVirtualDragging, _dropState_target;\n // Persist the focused key and the drop target key.\n let focusedKey = selectionManager.focusedKey;\n let dropTargetKey = null;\n if ((dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : (_dragAndDropHooks_isVirtualDragging = dragAndDropHooks.isVirtualDragging) === null || _dragAndDropHooks_isVirtualDragging === void 0 ? void 0 : _dragAndDropHooks_isVirtualDragging.call(dragAndDropHooks)) && (dropState === null || dropState === void 0 ? void 0 : (_dropState_target = dropState.target) === null || _dropState_target === void 0 ? void 0 : _dropState_target.type) === 'item') {\n dropTargetKey = dropState.target.key;\n var _dropState_collection_getKeyAfter;\n if (dropState.target.dropPosition === 'after') // Normalize to the \"before\" drop position since we only render those to the DOM.\n dropTargetKey = (_dropState_collection_getKeyAfter = dropState.collection.getKeyAfter(dropTargetKey)) !== null && _dropState_collection_getKeyAfter !== void 0 ? _dropState_collection_getKeyAfter : dropTargetKey;\n }\n return (0, $f3JOg$useMemo)(()=>{\n return new Set([\n focusedKey,\n dropTargetKey\n ].filter((k)=>k != null));\n }, [\n focusedKey,\n dropTargetKey\n ]);\n}\n\n\nexport {$612b8eb6cb90e02d$export$d188a835a7bc5783 as DragAndDropContext, $612b8eb6cb90e02d$export$f55761759794cf55 as DropIndicatorContext, $612b8eb6cb90e02d$export$62ed72bc21f6b8a6 as DropIndicator, $612b8eb6cb90e02d$export$971707d8a129a1f7 as useRenderDropIndicator, $612b8eb6cb90e02d$export$d1e8e3fbb7461f6 as useDndPersistedKeys};\n//# sourceMappingURL=DragAndDrop.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415} from \"./utils.mjs\";\nimport {createLeafComponent as $i47tY$createLeafComponent} from \"@react-aria/collections\";\nimport $i47tY$react, {createContext as $i47tY$createContext} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $72a5793c14baf454$export$e0e4026c12a8bdbb = /*#__PURE__*/ (0, $i47tY$createContext)({});\nconst $72a5793c14baf454$export$8b251419efc915eb = /*#__PURE__*/ (0, $i47tY$createLeafComponent)('header', function Header(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $72a5793c14baf454$export$e0e4026c12a8bdbb);\n return /*#__PURE__*/ (0, $i47tY$react).createElement(\"header\", {\n className: \"react-aria-Header\",\n ...props,\n ref: ref\n }, props.children);\n});\n\n\nexport {$72a5793c14baf454$export$e0e4026c12a8bdbb as HeaderContext, $72a5793c14baf454$export$8b251419efc915eb as Header};\n//# sourceMappingURL=Header.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415} from \"./utils.mjs\";\nimport {useSeparator as $i9JCE$useSeparator} from \"react-aria\";\nimport {createLeafComponent as $i9JCE$createLeafComponent} from \"@react-aria/collections\";\nimport {filterDOMProps as $i9JCE$filterDOMProps} from \"@react-aria/utils\";\nimport $i9JCE$react, {createContext as $i9JCE$createContext} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nconst $431f98aba6844401$export$6615d83f6de245ce = /*#__PURE__*/ (0, $i9JCE$createContext)({});\nconst $431f98aba6844401$export$1ff3c3f08ae963c0 = /*#__PURE__*/ (0, $i9JCE$createLeafComponent)('separator', function Separator(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $431f98aba6844401$export$6615d83f6de245ce);\n let { elementType: elementType, orientation: orientation, style: style, className: className } = props;\n let Element = elementType || 'hr';\n if (Element === 'hr' && orientation === 'vertical') Element = 'div';\n let { separatorProps: separatorProps } = (0, $i9JCE$useSeparator)({\n elementType: elementType,\n orientation: orientation\n });\n return /*#__PURE__*/ (0, $i9JCE$react).createElement(Element, {\n ...(0, $i9JCE$filterDOMProps)(props),\n ...separatorProps,\n style: style,\n className: className !== null && className !== void 0 ? className : 'react-aria-Separator',\n ref: ref,\n slot: props.slot || undefined\n });\n});\n\n\nexport {$431f98aba6844401$export$6615d83f6de245ce as SeparatorContext, $431f98aba6844401$export$1ff3c3f08ae963c0 as Separator};\n//# sourceMappingURL=Separator.module.js.map\n","import {CollectionRendererContext as $7135fc7d473fd974$export$4feb769f8ddf26c5, SectionContext as $7135fc7d473fd974$export$d40e14dec8b060a8} from \"./Collection.mjs\";\nimport {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8} from \"./utils.mjs\";\nimport {DragAndDropContext as $612b8eb6cb90e02d$export$d188a835a7bc5783, DropIndicatorContext as $612b8eb6cb90e02d$export$f55761759794cf55, useDndPersistedKeys as $612b8eb6cb90e02d$export$d1e8e3fbb7461f6, useRenderDropIndicator as $612b8eb6cb90e02d$export$971707d8a129a1f7} from \"./DragAndDrop.mjs\";\nimport {HeaderContext as $72a5793c14baf454$export$e0e4026c12a8bdbb} from \"./Header.mjs\";\nimport {SeparatorContext as $431f98aba6844401$export$6615d83f6de245ce} from \"./Separator.mjs\";\nimport {TextContext as $514c0188e459b4c0$export$9afb8bc826b033ea} from \"./Text.mjs\";\nimport {useLocale as $e8Bmu$useLocale, useCollator as $e8Bmu$useCollator, ListKeyboardDelegate as $e8Bmu$ListKeyboardDelegate, useListBox as $e8Bmu$useListBox, useFocusRing as $e8Bmu$useFocusRing, FocusScope as $e8Bmu$FocusScope, mergeProps as $e8Bmu$mergeProps, useListBoxSection as $e8Bmu$useListBoxSection, useOption as $e8Bmu$useOption, useHover as $e8Bmu$useHover} from \"react-aria\";\nimport {CollectionBuilder as $e8Bmu$CollectionBuilder, Collection as $e8Bmu$Collection, createBranchComponent as $e8Bmu$createBranchComponent, createLeafComponent as $e8Bmu$createLeafComponent} from \"@react-aria/collections\";\nimport {useListState as $e8Bmu$useListState} from \"react-stately\";\nimport {filterDOMProps as $e8Bmu$filterDOMProps, useObjectRef as $e8Bmu$useObjectRef} from \"@react-aria/utils\";\nimport $e8Bmu$react, {createContext as $e8Bmu$createContext, useContext as $e8Bmu$useContext, forwardRef as $e8Bmu$forwardRef, useMemo as $e8Bmu$useMemo, useRef as $e8Bmu$useRef, useEffect as $e8Bmu$useEffect} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\n\nconst $eed445e0843c11d0$export$7ff8f37d2d81a48d = /*#__PURE__*/ (0, $e8Bmu$createContext)(null);\nconst $eed445e0843c11d0$export$7c5906fe4f1f2af2 = /*#__PURE__*/ (0, $e8Bmu$createContext)(null);\nfunction $eed445e0843c11d0$var$ListBox(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $eed445e0843c11d0$export$7ff8f37d2d81a48d);\n let state = (0, $e8Bmu$useContext)($eed445e0843c11d0$export$7c5906fe4f1f2af2);\n // The structure of ListBox is a bit strange because it needs to work inside other components like ComboBox and Select.\n // Those components render two copies of their children so that the collection can be built even when the popover is closed.\n // The first copy sends a collection document via context which we render the collection portal into.\n // The second copy sends a ListState object via context which we use to render the ListBox without rebuilding the state.\n // Otherwise, we have a standalone ListBox, so we need to create a collection and state ourselves.\n if (state) return /*#__PURE__*/ (0, $e8Bmu$react).createElement($eed445e0843c11d0$var$ListBoxInner, {\n state: state,\n props: props,\n listBoxRef: ref\n });\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $e8Bmu$CollectionBuilder), {\n content: /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $e8Bmu$Collection), props)\n }, (collection)=>/*#__PURE__*/ (0, $e8Bmu$react).createElement($eed445e0843c11d0$var$StandaloneListBox, {\n props: props,\n listBoxRef: ref,\n collection: collection\n }));\n}\nfunction $eed445e0843c11d0$var$StandaloneListBox({ props: props, listBoxRef: listBoxRef, collection: collection }) {\n props = {\n ...props,\n collection: collection,\n children: null,\n items: null\n };\n let { layoutDelegate: layoutDelegate } = (0, $e8Bmu$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let state = (0, $e8Bmu$useListState)({\n ...props,\n layoutDelegate: layoutDelegate\n });\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement($eed445e0843c11d0$var$ListBoxInner, {\n state: state,\n props: props,\n listBoxRef: listBoxRef\n });\n}\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n */ const $eed445e0843c11d0$export$41f133550aa26f48 = /*#__PURE__*/ (0, $e8Bmu$forwardRef)($eed445e0843c11d0$var$ListBox);\nfunction $eed445e0843c11d0$var$ListBoxInner({ state: state, props: props, listBoxRef: listBoxRef }) {\n let { dragAndDropHooks: dragAndDropHooks, layout: layout = 'stack', orientation: orientation = 'vertical' } = props;\n let { collection: collection, selectionManager: selectionManager } = state;\n let isListDraggable = !!(dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDraggableCollectionState);\n let isListDroppable = !!(dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDroppableCollectionState);\n let { direction: direction } = (0, $e8Bmu$useLocale)();\n let { disabledBehavior: disabledBehavior, disabledKeys: disabledKeys } = selectionManager;\n let collator = (0, $e8Bmu$useCollator)({\n usage: 'search',\n sensitivity: 'base'\n });\n let { isVirtualized: isVirtualized, layoutDelegate: layoutDelegate, dropTargetDelegate: ctxDropTargetDelegate, CollectionRoot: CollectionRoot } = (0, $e8Bmu$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let keyboardDelegate = (0, $e8Bmu$useMemo)(()=>props.keyboardDelegate || new (0, $e8Bmu$ListKeyboardDelegate)({\n collection: collection,\n collator: collator,\n ref: listBoxRef,\n disabledKeys: disabledKeys,\n disabledBehavior: disabledBehavior,\n layout: layout,\n orientation: orientation,\n direction: direction,\n layoutDelegate: layoutDelegate\n }), [\n collection,\n collator,\n listBoxRef,\n disabledBehavior,\n disabledKeys,\n orientation,\n direction,\n props.keyboardDelegate,\n layout,\n layoutDelegate\n ]);\n let { listBoxProps: listBoxProps } = (0, $e8Bmu$useListBox)({\n ...props,\n shouldSelectOnPressUp: isListDraggable || props.shouldSelectOnPressUp,\n keyboardDelegate: keyboardDelegate,\n isVirtualized: isVirtualized\n }, state, listBoxRef);\n let dragHooksProvided = (0, $e8Bmu$useRef)(isListDraggable);\n let dropHooksProvided = (0, $e8Bmu$useRef)(isListDroppable);\n (0, $e8Bmu$useEffect)(()=>{\n if (dragHooksProvided.current !== isListDraggable) console.warn('Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n if (dropHooksProvided.current !== isListDroppable) console.warn('Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n }, [\n isListDraggable,\n isListDroppable\n ]);\n let dragState = undefined;\n let dropState = undefined;\n let droppableCollection = undefined;\n let isRootDropTarget = false;\n let dragPreview = null;\n let preview = (0, $e8Bmu$useRef)(null);\n if (isListDraggable && dragAndDropHooks) {\n dragState = dragAndDropHooks.useDraggableCollectionState({\n collection: collection,\n selectionManager: selectionManager,\n preview: dragAndDropHooks.renderDragPreview ? preview : undefined\n });\n dragAndDropHooks.useDraggableCollection({}, dragState, listBoxRef);\n let DragPreview = dragAndDropHooks.DragPreview;\n dragPreview = dragAndDropHooks.renderDragPreview ? /*#__PURE__*/ (0, $e8Bmu$react).createElement(DragPreview, {\n ref: preview\n }, dragAndDropHooks.renderDragPreview) : null;\n }\n if (isListDroppable && dragAndDropHooks) {\n dropState = dragAndDropHooks.useDroppableCollectionState({\n collection: collection,\n selectionManager: selectionManager\n });\n let dropTargetDelegate = dragAndDropHooks.dropTargetDelegate || ctxDropTargetDelegate || new dragAndDropHooks.ListDropTargetDelegate(collection, listBoxRef, {\n orientation: orientation,\n layout: layout,\n direction: direction\n });\n droppableCollection = dragAndDropHooks.useDroppableCollection({\n keyboardDelegate: keyboardDelegate,\n dropTargetDelegate: dropTargetDelegate\n }, dropState, listBoxRef);\n isRootDropTarget = dropState.isDropTarget({\n type: 'root'\n });\n }\n let { focusProps: focusProps, isFocused: isFocused, isFocusVisible: isFocusVisible } = (0, $e8Bmu$useFocusRing)();\n let renderValues = {\n isDropTarget: isRootDropTarget,\n isEmpty: state.collection.size === 0,\n isFocused: isFocused,\n isFocusVisible: isFocusVisible,\n layout: props.layout || 'stack',\n state: state\n };\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n className: props.className,\n style: props.style,\n defaultClassName: 'react-aria-ListBox',\n values: renderValues\n });\n let emptyState = null;\n if (state.collection.size === 0 && props.renderEmptyState) emptyState = /*#__PURE__*/ (0, $e8Bmu$react).createElement(\"div\", {\n // eslint-disable-next-line\n role: \"option\",\n style: {\n display: 'contents'\n }\n }, props.renderEmptyState(renderValues));\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $e8Bmu$FocusScope), null, /*#__PURE__*/ (0, $e8Bmu$react).createElement(\"div\", {\n ...(0, $e8Bmu$filterDOMProps)(props),\n ...(0, $e8Bmu$mergeProps)(listBoxProps, focusProps, droppableCollection === null || droppableCollection === void 0 ? void 0 : droppableCollection.collectionProps),\n ...renderProps,\n ref: listBoxRef,\n slot: props.slot || undefined,\n onScroll: props.onScroll,\n \"data-drop-target\": isRootDropTarget || undefined,\n \"data-empty\": state.collection.size === 0 || undefined,\n \"data-focused\": isFocused || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-layout\": props.layout || 'stack',\n \"data-orientation\": props.orientation || 'vertical'\n }, /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $eed445e0843c11d0$export$7ff8f37d2d81a48d,\n props\n ],\n [\n $eed445e0843c11d0$export$7c5906fe4f1f2af2,\n state\n ],\n [\n (0, $612b8eb6cb90e02d$export$d188a835a7bc5783),\n {\n dragAndDropHooks: dragAndDropHooks,\n dragState: dragState,\n dropState: dropState\n }\n ],\n [\n (0, $431f98aba6844401$export$6615d83f6de245ce),\n {\n elementType: 'div'\n }\n ],\n [\n (0, $612b8eb6cb90e02d$export$f55761759794cf55),\n {\n render: $eed445e0843c11d0$var$ListBoxDropIndicatorWrapper\n }\n ],\n [\n (0, $7135fc7d473fd974$export$d40e14dec8b060a8),\n {\n name: 'ListBoxSection',\n render: $eed445e0843c11d0$var$ListBoxSection\n }\n ]\n ]\n }, /*#__PURE__*/ (0, $e8Bmu$react).createElement(CollectionRoot, {\n collection: collection,\n scrollRef: listBoxRef,\n persistedKeys: (0, $612b8eb6cb90e02d$export$d1e8e3fbb7461f6)(selectionManager, dragAndDropHooks, dropState),\n renderDropIndicator: (0, $612b8eb6cb90e02d$export$971707d8a129a1f7)(dragAndDropHooks, dropState)\n })), emptyState, dragPreview));\n}\nfunction $eed445e0843c11d0$var$ListBoxSection(props, ref, section, className = 'react-aria-ListBoxSection') {\n let state = (0, $e8Bmu$useContext)($eed445e0843c11d0$export$7c5906fe4f1f2af2);\n let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $e8Bmu$useContext)((0, $612b8eb6cb90e02d$export$d188a835a7bc5783));\n let { CollectionBranch: CollectionBranch } = (0, $e8Bmu$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));\n let [headingRef, heading] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n var _props_arialabel;\n let { headingProps: headingProps, groupProps: groupProps } = (0, $e8Bmu$useListBoxSection)({\n heading: heading,\n 'aria-label': (_props_arialabel = props['aria-label']) !== null && _props_arialabel !== void 0 ? _props_arialabel : undefined\n });\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n defaultClassName: className,\n className: props.className,\n style: props.style,\n values: {}\n });\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement(\"section\", {\n ...(0, $e8Bmu$filterDOMProps)(props),\n ...groupProps,\n ...renderProps,\n ref: ref\n }, /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $72a5793c14baf454$export$e0e4026c12a8bdbb).Provider, {\n value: {\n ...headingProps,\n ref: headingRef\n }\n }, /*#__PURE__*/ (0, $e8Bmu$react).createElement(CollectionBranch, {\n collection: state.collection,\n parent: section,\n renderDropIndicator: (0, $612b8eb6cb90e02d$export$971707d8a129a1f7)(dragAndDropHooks, dropState)\n })));\n}\n/**\n * A ListBoxSection represents a section within a ListBox.\n */ const $eed445e0843c11d0$export$dca12b0bb56e4fc = /*#__PURE__*/ (0, $e8Bmu$createBranchComponent)('section', $eed445e0843c11d0$var$ListBoxSection);\nconst $eed445e0843c11d0$export$a11e76429ed99b4 = /*#__PURE__*/ (0, $e8Bmu$createLeafComponent)('item', function ListBoxItem(props, forwardedRef, item) {\n let ref = (0, $e8Bmu$useObjectRef)(forwardedRef);\n let state = (0, $e8Bmu$useContext)($eed445e0843c11d0$export$7c5906fe4f1f2af2);\n let { dragAndDropHooks: dragAndDropHooks, dragState: dragState, dropState: dropState } = (0, $e8Bmu$useContext)((0, $612b8eb6cb90e02d$export$d188a835a7bc5783));\n let { optionProps: optionProps, labelProps: labelProps, descriptionProps: descriptionProps, ...states } = (0, $e8Bmu$useOption)({\n key: item.key,\n 'aria-label': props === null || props === void 0 ? void 0 : props['aria-label']\n }, state, ref);\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $e8Bmu$useHover)({\n isDisabled: !states.allowsSelection && !states.hasAction,\n onHoverStart: item.props.onHoverStart,\n onHoverChange: item.props.onHoverChange,\n onHoverEnd: item.props.onHoverEnd\n });\n let draggableItem = null;\n if (dragState && dragAndDropHooks) draggableItem = dragAndDropHooks.useDraggableItem({\n key: item.key\n }, dragState);\n let droppableItem = null;\n if (dropState && dragAndDropHooks) droppableItem = dragAndDropHooks.useDroppableItem({\n target: {\n type: 'item',\n key: item.key,\n dropPosition: 'on'\n }\n }, dropState, ref);\n let isDragging = dragState && dragState.isDragging(item.key);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n id: undefined,\n children: props.children,\n defaultClassName: 'react-aria-ListBoxItem',\n values: {\n ...states,\n isHovered: isHovered,\n selectionMode: state.selectionManager.selectionMode,\n selectionBehavior: state.selectionManager.selectionBehavior,\n allowsDragging: !!dragState,\n isDragging: isDragging,\n isDropTarget: droppableItem === null || droppableItem === void 0 ? void 0 : droppableItem.isDropTarget\n }\n });\n (0, $e8Bmu$useEffect)(()=>{\n if (!item.textValue) console.warn('A `textValue` prop is required for <ListBoxItem> elements with non-plain text children in order to support accessibility features such as type to select.');\n }, [\n item.textValue\n ]);\n let ElementType = props.href ? 'a' : 'div';\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement(ElementType, {\n ...(0, $e8Bmu$mergeProps)(optionProps, hoverProps, draggableItem === null || draggableItem === void 0 ? void 0 : draggableItem.dragProps, droppableItem === null || droppableItem === void 0 ? void 0 : droppableItem.dropProps),\n ...renderProps,\n ref: ref,\n \"data-allows-dragging\": !!dragState || undefined,\n \"data-selected\": states.isSelected || undefined,\n \"data-disabled\": states.isDisabled || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-focused\": states.isFocused || undefined,\n \"data-focus-visible\": states.isFocusVisible || undefined,\n \"data-pressed\": states.isPressed || undefined,\n \"data-dragging\": isDragging || undefined,\n \"data-drop-target\": (droppableItem === null || droppableItem === void 0 ? void 0 : droppableItem.isDropTarget) || undefined,\n \"data-selection-mode\": state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode\n }, /*#__PURE__*/ (0, $e8Bmu$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n (0, $514c0188e459b4c0$export$9afb8bc826b033ea),\n {\n slots: {\n label: labelProps,\n description: descriptionProps\n }\n }\n ]\n ]\n }, renderProps.children));\n});\nfunction $eed445e0843c11d0$var$ListBoxDropIndicatorWrapper(props, ref) {\n ref = (0, $e8Bmu$useObjectRef)(ref);\n let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $e8Bmu$useContext)((0, $612b8eb6cb90e02d$export$d188a835a7bc5783));\n let { dropIndicatorProps: dropIndicatorProps, isHidden: isHidden, isDropTarget: isDropTarget } = dragAndDropHooks.useDropIndicator(props, dropState, ref);\n if (isHidden) return null;\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement($eed445e0843c11d0$var$ListBoxDropIndicatorForwardRef, {\n ...props,\n dropIndicatorProps: dropIndicatorProps,\n isDropTarget: isDropTarget,\n ref: ref\n });\n}\nfunction $eed445e0843c11d0$var$ListBoxDropIndicator(props, ref) {\n let { dropIndicatorProps: dropIndicatorProps, isDropTarget: isDropTarget, ...otherProps } = props;\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...otherProps,\n defaultClassName: 'react-aria-DropIndicator',\n values: {\n isDropTarget: isDropTarget\n }\n });\n return /*#__PURE__*/ (0, $e8Bmu$react).createElement(\"div\", {\n ...dropIndicatorProps,\n ...renderProps,\n // eslint-disable-next-line\n role: \"option\",\n ref: ref,\n \"data-drop-target\": isDropTarget || undefined\n });\n}\nconst $eed445e0843c11d0$var$ListBoxDropIndicatorForwardRef = /*#__PURE__*/ (0, $e8Bmu$forwardRef)($eed445e0843c11d0$var$ListBoxDropIndicator);\n\n\nexport {$eed445e0843c11d0$export$7ff8f37d2d81a48d as ListBoxContext, $eed445e0843c11d0$export$7c5906fe4f1f2af2 as ListStateContext, $eed445e0843c11d0$export$41f133550aa26f48 as ListBox, $eed445e0843c11d0$export$dca12b0bb56e4fc as ListBoxSection, $eed445e0843c11d0$export$a11e76429ed99b4 as ListBoxItem};\n//# sourceMappingURL=ListBox.module.js.map\n","import {useId as $8pE4M$useId} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $af383d3bef1cfdc9$export$c3f9f39876e4bc7(props) {\n let { heading: heading, 'aria-label': ariaLabel } = props;\n let headingId = (0, $8pE4M$useId)();\n return {\n itemProps: {\n role: 'presentation'\n },\n headingProps: heading ? {\n // Techincally, listbox cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, using role=\"presentation\",\n // and only use it as a visual label for the nested group.\n id: headingId,\n role: 'presentation'\n } : {},\n groupProps: {\n role: 'group',\n 'aria-label': ariaLabel,\n 'aria-labelledby': heading ? headingId : undefined\n }\n };\n}\n\n\nexport {$af383d3bef1cfdc9$export$c3f9f39876e4bc7 as useListBoxSection};\n//# sourceMappingURL=useListBoxSection.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport $8wt2Z$react, {createContext as $8wt2Z$createContext, forwardRef as $8wt2Z$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nconst $44f671af83e7d9e0$export$2de4954e8ae13b9f = /*#__PURE__*/ (0, $8wt2Z$createContext)({\n placement: 'bottom'\n});\nfunction $44f671af83e7d9e0$var$OverlayArrow(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $44f671af83e7d9e0$export$2de4954e8ae13b9f);\n let placement = props.placement;\n let style = {\n position: 'absolute',\n transform: placement === 'top' || placement === 'bottom' ? 'translateX(-50%)' : 'translateY(-50%)'\n };\n if (placement != null) style[placement] = '100%';\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultClassName: 'react-aria-OverlayArrow',\n values: {\n placement: placement\n }\n });\n // remove undefined values from renderProps.style object so that it can be\n // spread merged with the other style object\n if (renderProps.style) Object.keys(renderProps.style).forEach((key)=>renderProps.style[key] === undefined && delete renderProps.style[key]);\n return /*#__PURE__*/ (0, $8wt2Z$react).createElement(\"div\", {\n ...props,\n ...renderProps,\n style: {\n ...style,\n ...renderProps.style\n },\n ref: ref,\n \"data-placement\": placement\n });\n}\n/**\n * An OverlayArrow renders a custom arrow element relative to an overlay element\n * such as a popover or tooltip such that it aligns with a trigger element.\n */ const $44f671af83e7d9e0$export$746d02f47f4d381 = /*#__PURE__*/ (0, $8wt2Z$forwardRef)($44f671af83e7d9e0$var$OverlayArrow);\n\n\nexport {$44f671af83e7d9e0$export$2de4954e8ae13b9f as OverlayArrowContext, $44f671af83e7d9e0$export$746d02f47f4d381 as OverlayArrow};\n//# sourceMappingURL=OverlayArrow.module.js.map\n","import $k51So$arAEmodulejs from \"./ar-AE.mjs\";\nimport $k51So$bgBGmodulejs from \"./bg-BG.mjs\";\nimport $k51So$csCZmodulejs from \"./cs-CZ.mjs\";\nimport $k51So$daDKmodulejs from \"./da-DK.mjs\";\nimport $k51So$deDEmodulejs from \"./de-DE.mjs\";\nimport $k51So$elGRmodulejs from \"./el-GR.mjs\";\nimport $k51So$enUSmodulejs from \"./en-US.mjs\";\nimport $k51So$esESmodulejs from \"./es-ES.mjs\";\nimport $k51So$etEEmodulejs from \"./et-EE.mjs\";\nimport $k51So$fiFImodulejs from \"./fi-FI.mjs\";\nimport $k51So$frFRmodulejs from \"./fr-FR.mjs\";\nimport $k51So$heILmodulejs from \"./he-IL.mjs\";\nimport $k51So$hrHRmodulejs from \"./hr-HR.mjs\";\nimport $k51So$huHUmodulejs from \"./hu-HU.mjs\";\nimport $k51So$itITmodulejs from \"./it-IT.mjs\";\nimport $k51So$jaJPmodulejs from \"./ja-JP.mjs\";\nimport $k51So$koKRmodulejs from \"./ko-KR.mjs\";\nimport $k51So$ltLTmodulejs from \"./lt-LT.mjs\";\nimport $k51So$lvLVmodulejs from \"./lv-LV.mjs\";\nimport $k51So$nbNOmodulejs from \"./nb-NO.mjs\";\nimport $k51So$nlNLmodulejs from \"./nl-NL.mjs\";\nimport $k51So$plPLmodulejs from \"./pl-PL.mjs\";\nimport $k51So$ptBRmodulejs from \"./pt-BR.mjs\";\nimport $k51So$ptPTmodulejs from \"./pt-PT.mjs\";\nimport $k51So$roROmodulejs from \"./ro-RO.mjs\";\nimport $k51So$ruRUmodulejs from \"./ru-RU.mjs\";\nimport $k51So$skSKmodulejs from \"./sk-SK.mjs\";\nimport $k51So$slSImodulejs from \"./sl-SI.mjs\";\nimport $k51So$srSPmodulejs from \"./sr-SP.mjs\";\nimport $k51So$svSEmodulejs from \"./sv-SE.mjs\";\nimport $k51So$trTRmodulejs from \"./tr-TR.mjs\";\nimport $k51So$ukUAmodulejs from \"./uk-UA.mjs\";\nimport $k51So$zhCNmodulejs from \"./zh-CN.mjs\";\nimport $k51So$zhTWmodulejs from \"./zh-TW.mjs\";\n\nvar $a2f21f5f14f60553$exports = {};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$a2f21f5f14f60553$exports = {\n \"ar-AE\": $k51So$arAEmodulejs,\n \"bg-BG\": $k51So$bgBGmodulejs,\n \"cs-CZ\": $k51So$csCZmodulejs,\n \"da-DK\": $k51So$daDKmodulejs,\n \"de-DE\": $k51So$deDEmodulejs,\n \"el-GR\": $k51So$elGRmodulejs,\n \"en-US\": $k51So$enUSmodulejs,\n \"es-ES\": $k51So$esESmodulejs,\n \"et-EE\": $k51So$etEEmodulejs,\n \"fi-FI\": $k51So$fiFImodulejs,\n \"fr-FR\": $k51So$frFRmodulejs,\n \"he-IL\": $k51So$heILmodulejs,\n \"hr-HR\": $k51So$hrHRmodulejs,\n \"hu-HU\": $k51So$huHUmodulejs,\n \"it-IT\": $k51So$itITmodulejs,\n \"ja-JP\": $k51So$jaJPmodulejs,\n \"ko-KR\": $k51So$koKRmodulejs,\n \"lt-LT\": $k51So$ltLTmodulejs,\n \"lv-LV\": $k51So$lvLVmodulejs,\n \"nb-NO\": $k51So$nbNOmodulejs,\n \"nl-NL\": $k51So$nlNLmodulejs,\n \"pl-PL\": $k51So$plPLmodulejs,\n \"pt-BR\": $k51So$ptBRmodulejs,\n \"pt-PT\": $k51So$ptPTmodulejs,\n \"ro-RO\": $k51So$roROmodulejs,\n \"ru-RU\": $k51So$ruRUmodulejs,\n \"sk-SK\": $k51So$skSKmodulejs,\n \"sl-SI\": $k51So$slSImodulejs,\n \"sr-SP\": $k51So$srSPmodulejs,\n \"sv-SE\": $k51So$svSEmodulejs,\n \"tr-TR\": $k51So$trTRmodulejs,\n \"uk-UA\": $k51So$ukUAmodulejs,\n \"zh-CN\": $k51So$zhCNmodulejs,\n \"zh-TW\": $k51So$zhTWmodulejs\n};\n\n\nexport {$a2f21f5f14f60553$exports as default};\n//# sourceMappingURL=intlStrings.module.js.map\n","var $773d5888b972f1cf$exports = {};\n$773d5888b972f1cf$exports = {\n \"dismiss\": `\\u{62A}\\u{62C}\\u{627}\\u{647}\\u{644}`\n};\n\n\nexport {$773d5888b972f1cf$exports as default};\n//# sourceMappingURL=ar-AE.module.js.map\n","var $d11f19852b941573$exports = {};\n$d11f19852b941573$exports = {\n \"dismiss\": `\\u{41E}\\u{442}\\u{445}\\u{432}\\u{44A}\\u{440}\\u{43B}\\u{44F}\\u{43D}\\u{435}`\n};\n\n\nexport {$d11f19852b941573$exports as default};\n//# sourceMappingURL=bg-BG.module.js.map\n","var $b983974c2ee1efb3$exports = {};\n$b983974c2ee1efb3$exports = {\n \"dismiss\": `Odstranit`\n};\n\n\nexport {$b983974c2ee1efb3$exports as default};\n//# sourceMappingURL=cs-CZ.module.js.map\n","var $5809cc9d4e92de73$exports = {};\n$5809cc9d4e92de73$exports = {\n \"dismiss\": `Luk`\n};\n\n\nexport {$5809cc9d4e92de73$exports as default};\n//# sourceMappingURL=da-DK.module.js.map\n","var $c68c2e4fc74398d1$exports = {};\n$c68c2e4fc74398d1$exports = {\n \"dismiss\": `Schlie\\xdfen`\n};\n\n\nexport {$c68c2e4fc74398d1$exports as default};\n//# sourceMappingURL=de-DE.module.js.map\n","var $0898b4c153db2b77$exports = {};\n$0898b4c153db2b77$exports = {\n \"dismiss\": `\\u{391}\\u{3C0}\\u{3CC}\\u{3C1}\\u{3C1}\\u{3B9}\\u{3C8}\\u{3B7}`\n};\n\n\nexport {$0898b4c153db2b77$exports as default};\n//# sourceMappingURL=el-GR.module.js.map\n","var $6d74810286a15183$exports = {};\n$6d74810286a15183$exports = {\n \"dismiss\": `Dismiss`\n};\n\n\nexport {$6d74810286a15183$exports as default};\n//# sourceMappingURL=en-US.module.js.map\n","var $309d73dc65f78055$exports = {};\n$309d73dc65f78055$exports = {\n \"dismiss\": `Descartar`\n};\n\n\nexport {$309d73dc65f78055$exports as default};\n//# sourceMappingURL=es-ES.module.js.map\n","var $44ad94f7205cf593$exports = {};\n$44ad94f7205cf593$exports = {\n \"dismiss\": `L\\xf5peta`\n};\n\n\nexport {$44ad94f7205cf593$exports as default};\n//# sourceMappingURL=et-EE.module.js.map\n","var $7c28f5687f0779a9$exports = {};\n$7c28f5687f0779a9$exports = {\n \"dismiss\": `Hylk\\xe4\\xe4`\n};\n\n\nexport {$7c28f5687f0779a9$exports as default};\n//# sourceMappingURL=fi-FI.module.js.map\n","var $e6d75df4b68bd73a$exports = {};\n$e6d75df4b68bd73a$exports = {\n \"dismiss\": `Rejeter`\n};\n\n\nexport {$e6d75df4b68bd73a$exports as default};\n//# sourceMappingURL=fr-FR.module.js.map\n","var $87505c9dab186d0f$exports = {};\n$87505c9dab186d0f$exports = {\n \"dismiss\": `\\u{5D4}\\u{5EA}\\u{5E2}\\u{5DC}\\u{5DD}`\n};\n\n\nexport {$87505c9dab186d0f$exports as default};\n//# sourceMappingURL=he-IL.module.js.map\n","var $553439c3ffb3e492$exports = {};\n$553439c3ffb3e492$exports = {\n \"dismiss\": `Odbaci`\n};\n\n\nexport {$553439c3ffb3e492$exports as default};\n//# sourceMappingURL=hr-HR.module.js.map\n","var $74cf411061b983a2$exports = {};\n$74cf411061b983a2$exports = {\n \"dismiss\": `Elutas\\xedt\\xe1s`\n};\n\n\nexport {$74cf411061b983a2$exports as default};\n//# sourceMappingURL=hu-HU.module.js.map\n","var $e933f298574dc435$exports = {};\n$e933f298574dc435$exports = {\n \"dismiss\": `Ignora`\n};\n\n\nexport {$e933f298574dc435$exports as default};\n//# sourceMappingURL=it-IT.module.js.map\n","var $ac91fc9fe02f71f6$exports = {};\n$ac91fc9fe02f71f6$exports = {\n \"dismiss\": `\\u{9589}\\u{3058}\\u{308B}`\n};\n\n\nexport {$ac91fc9fe02f71f6$exports as default};\n//# sourceMappingURL=ja-JP.module.js.map\n","var $52b96f86422025af$exports = {};\n$52b96f86422025af$exports = {\n \"dismiss\": `\\u{BB34}\\u{C2DC}`\n};\n\n\nexport {$52b96f86422025af$exports as default};\n//# sourceMappingURL=ko-KR.module.js.map\n","var $c0d724c3e51dafa6$exports = {};\n$c0d724c3e51dafa6$exports = {\n \"dismiss\": `Atmesti`\n};\n\n\nexport {$c0d724c3e51dafa6$exports as default};\n//# sourceMappingURL=lt-LT.module.js.map\n","var $c92899672a3fe72e$exports = {};\n$c92899672a3fe72e$exports = {\n \"dismiss\": `Ner\\u{101}d\\u{12B}t`\n};\n\n\nexport {$c92899672a3fe72e$exports as default};\n//# sourceMappingURL=lv-LV.module.js.map\n","var $9f576b39d8e7a9d6$exports = {};\n$9f576b39d8e7a9d6$exports = {\n \"dismiss\": `Lukk`\n};\n\n\nexport {$9f576b39d8e7a9d6$exports as default};\n//# sourceMappingURL=nb-NO.module.js.map\n","var $9d025808aeec81a7$exports = {};\n$9d025808aeec81a7$exports = {\n \"dismiss\": `Negeren`\n};\n\n\nexport {$9d025808aeec81a7$exports as default};\n//# sourceMappingURL=nl-NL.module.js.map\n","var $fce709921e2c0fa6$exports = {};\n$fce709921e2c0fa6$exports = {\n \"dismiss\": `Zignoruj`\n};\n\n\nexport {$fce709921e2c0fa6$exports as default};\n//# sourceMappingURL=pl-PL.module.js.map\n","var $2599cf0c4ab37f59$exports = {};\n$2599cf0c4ab37f59$exports = {\n \"dismiss\": `Descartar`\n};\n\n\nexport {$2599cf0c4ab37f59$exports as default};\n//# sourceMappingURL=pt-BR.module.js.map\n","var $3c220ae7ef8a35fd$exports = {};\n$3c220ae7ef8a35fd$exports = {\n \"dismiss\": `Dispensar`\n};\n\n\nexport {$3c220ae7ef8a35fd$exports as default};\n//# sourceMappingURL=pt-PT.module.js.map\n","var $93562b5094072f54$exports = {};\n$93562b5094072f54$exports = {\n \"dismiss\": `Revocare`\n};\n\n\nexport {$93562b5094072f54$exports as default};\n//# sourceMappingURL=ro-RO.module.js.map\n","var $cd9e2abd0d06c7b4$exports = {};\n$cd9e2abd0d06c7b4$exports = {\n \"dismiss\": `\\u{41F}\\u{440}\\u{43E}\\u{43F}\\u{443}\\u{441}\\u{442}\\u{438}\\u{442}\\u{44C}`\n};\n\n\nexport {$cd9e2abd0d06c7b4$exports as default};\n//# sourceMappingURL=ru-RU.module.js.map\n","var $45375701f409adf1$exports = {};\n$45375701f409adf1$exports = {\n \"dismiss\": `Zru\\u{161}i\\u{165}`\n};\n\n\nexport {$45375701f409adf1$exports as default};\n//# sourceMappingURL=sk-SK.module.js.map\n","var $27fab53a576de9dd$exports = {};\n$27fab53a576de9dd$exports = {\n \"dismiss\": `Opusti`\n};\n\n\nexport {$27fab53a576de9dd$exports as default};\n//# sourceMappingURL=sl-SI.module.js.map\n","var $4438748d9952e7c7$exports = {};\n$4438748d9952e7c7$exports = {\n \"dismiss\": `Odbaci`\n};\n\n\nexport {$4438748d9952e7c7$exports as default};\n//# sourceMappingURL=sr-SP.module.js.map\n","var $0936d7347ef4da4c$exports = {};\n$0936d7347ef4da4c$exports = {\n \"dismiss\": `Avvisa`\n};\n\n\nexport {$0936d7347ef4da4c$exports as default};\n//# sourceMappingURL=sv-SE.module.js.map\n","var $29700c92185d38f8$exports = {};\n$29700c92185d38f8$exports = {\n \"dismiss\": `Kapat`\n};\n\n\nexport {$29700c92185d38f8$exports as default};\n//# sourceMappingURL=tr-TR.module.js.map\n","var $662ccaf2be4c25b3$exports = {};\n$662ccaf2be4c25b3$exports = {\n \"dismiss\": `\\u{421}\\u{43A}\\u{430}\\u{441}\\u{443}\\u{432}\\u{430}\\u{442}\\u{438}`\n};\n\n\nexport {$662ccaf2be4c25b3$exports as default};\n//# sourceMappingURL=uk-UA.module.js.map\n","var $d80a27deda7cdb3c$exports = {};\n$d80a27deda7cdb3c$exports = {\n \"dismiss\": `\\u{53D6}\\u{6D88}`\n};\n\n\nexport {$d80a27deda7cdb3c$exports as default};\n//# sourceMappingURL=zh-CN.module.js.map\n","var $2b2734393847c884$exports = {};\n$2b2734393847c884$exports = {\n \"dismiss\": `\\u{95DC}\\u{9589}`\n};\n\n\nexport {$2b2734393847c884$exports as default};\n//# sourceMappingURL=zh-TW.module.js.map\n","import $iYaQO$intlStringsmodulejs from \"./intlStrings.mjs\";\nimport $iYaQO$react from \"react\";\nimport {useLabels as $iYaQO$useLabels} from \"@react-aria/utils\";\nimport {useLocalizedStringFormatter as $iYaQO$useLocalizedStringFormatter} from \"@react-aria/i18n\";\nimport {VisuallyHidden as $iYaQO$VisuallyHidden} from \"@react-aria/visually-hidden\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $86ea4cb521eb2e37$export$2317d149ed6f78c4(props) {\n let { onDismiss: onDismiss, ...otherProps } = props;\n let stringFormatter = (0, $iYaQO$useLocalizedStringFormatter)((0, ($parcel$interopDefault($iYaQO$intlStringsmodulejs))), '@react-aria/overlays');\n let labels = (0, $iYaQO$useLabels)(otherProps, stringFormatter.format('dismiss'));\n let onClick = ()=>{\n if (onDismiss) onDismiss();\n };\n return /*#__PURE__*/ (0, $iYaQO$react).createElement((0, $iYaQO$VisuallyHidden), null, /*#__PURE__*/ (0, $iYaQO$react).createElement(\"button\", {\n ...labels,\n tabIndex: -1,\n onClick: onClick,\n style: {\n width: 1,\n height: 1\n }\n }));\n}\n\n\nexport {$86ea4cb521eb2e37$export$2317d149ed6f78c4 as DismissButton};\n//# sourceMappingURL=DismissButton.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useEnterAnimation as $64fa3d84918910a7$export$6d3443f2c48bfc20, useExitAnimation as $64fa3d84918910a7$export$45fda7c47f93fd48, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {OverlayArrowContext as $44f671af83e7d9e0$export$2de4954e8ae13b9f} from \"./OverlayArrow.mjs\";\nimport {OverlayTriggerStateContext as $de32f1b87079253c$export$d2f961adcb0afbe} from \"./Dialog.mjs\";\nimport {usePopover as $ehFet$usePopover, Overlay as $ehFet$Overlay, DismissButton as $ehFet$DismissButton} from \"react-aria\";\nimport {useLayoutEffect as $ehFet$useLayoutEffect, mergeProps as $ehFet$mergeProps, filterDOMProps as $ehFet$filterDOMProps} from \"@react-aria/utils\";\nimport {useOverlayTriggerState as $ehFet$useOverlayTriggerState} from \"react-stately\";\nimport $ehFet$react, {createContext as $ehFet$createContext, useContext as $ehFet$useContext, forwardRef as $ehFet$forwardRef, useRef as $ehFet$useRef, useState as $ehFet$useState} from \"react\";\nimport {useIsHidden as $ehFet$useIsHidden} from \"@react-aria/collections\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\nconst $07b14b47974efb58$export$9b9a0cd73afb7ca4 = /*#__PURE__*/ (0, $ehFet$createContext)(null);\nfunction $07b14b47974efb58$var$Popover(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $07b14b47974efb58$export$9b9a0cd73afb7ca4);\n let contextState = (0, $ehFet$useContext)((0, $de32f1b87079253c$export$d2f961adcb0afbe));\n let localState = (0, $ehFet$useOverlayTriggerState)(props);\n let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n let isExiting = (0, $64fa3d84918910a7$export$45fda7c47f93fd48)(ref, state.isOpen) || props.isExiting || false;\n let isHidden = (0, $ehFet$useIsHidden)();\n // If we are in a hidden tree, we still need to preserve our children.\n if (isHidden) {\n let children = props.children;\n if (typeof children === 'function') children = children({\n trigger: props.trigger || null,\n placement: 'bottom',\n isEntering: false,\n isExiting: false,\n defaultChildren: null\n });\n return /*#__PURE__*/ (0, $ehFet$react).createElement((0, $ehFet$react).Fragment, null, children);\n }\n if (state && !state.isOpen && !isExiting) return null;\n return /*#__PURE__*/ (0, $ehFet$react).createElement($07b14b47974efb58$var$PopoverInner, {\n ...props,\n triggerRef: props.triggerRef,\n state: state,\n popoverRef: ref,\n isExiting: isExiting\n });\n}\n/**\n * A popover is an overlay element positioned relative to a trigger.\n */ const $07b14b47974efb58$export$5b6b19405a83ff9d = /*#__PURE__*/ (0, $ehFet$forwardRef)($07b14b47974efb58$var$Popover);\nfunction $07b14b47974efb58$var$PopoverInner({ state: state, isExiting: isExiting, UNSTABLE_portalContainer: UNSTABLE_portalContainer, ...props }) {\n // Calculate the arrow size internally (and remove props.arrowSize from PopoverProps)\n // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx\n let arrowRef = (0, $ehFet$useRef)(null);\n let [arrowWidth, setArrowWidth] = (0, $ehFet$useState)(0);\n (0, $ehFet$useLayoutEffect)(()=>{\n if (arrowRef.current && state.isOpen) setArrowWidth(arrowRef.current.getBoundingClientRect().width);\n }, [\n state.isOpen,\n arrowRef\n ]);\n var _props_offset;\n let { popoverProps: popoverProps, underlayProps: underlayProps, arrowProps: arrowProps, placement: placement } = (0, $ehFet$usePopover)({\n ...props,\n offset: (_props_offset = props.offset) !== null && _props_offset !== void 0 ? _props_offset : 8,\n arrowSize: arrowWidth\n }, state);\n let ref = props.popoverRef;\n let isEntering = (0, $64fa3d84918910a7$export$6d3443f2c48bfc20)(ref, !!placement) || props.isEntering || false;\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultClassName: 'react-aria-Popover',\n values: {\n trigger: props.trigger || null,\n placement: placement,\n isEntering: isEntering,\n isExiting: isExiting\n }\n });\n let style = {\n ...popoverProps.style,\n ...renderProps.style\n };\n return /*#__PURE__*/ (0, $ehFet$react).createElement((0, $ehFet$Overlay), {\n ...props,\n isExiting: isExiting,\n portalContainer: UNSTABLE_portalContainer\n }, !props.isNonModal && state.isOpen && /*#__PURE__*/ (0, $ehFet$react).createElement(\"div\", {\n \"data-testid\": \"underlay\",\n ...underlayProps,\n style: {\n position: 'fixed',\n inset: 0\n }\n }), /*#__PURE__*/ (0, $ehFet$react).createElement(\"div\", {\n ...(0, $ehFet$mergeProps)((0, $ehFet$filterDOMProps)(props), popoverProps),\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined,\n style: style,\n \"data-trigger\": props.trigger,\n \"data-placement\": placement,\n \"data-entering\": isEntering || undefined,\n \"data-exiting\": isExiting || undefined\n }, !props.isNonModal && /*#__PURE__*/ (0, $ehFet$react).createElement((0, $ehFet$DismissButton), {\n onDismiss: state.close\n }), /*#__PURE__*/ (0, $ehFet$react).createElement((0, $44f671af83e7d9e0$export$2de4954e8ae13b9f).Provider, {\n value: {\n ...arrowProps,\n placement: placement,\n ref: arrowRef\n }\n }, renderProps.children), /*#__PURE__*/ (0, $ehFet$react).createElement((0, $ehFet$DismissButton), {\n onDismiss: state.close\n })));\n}\n\n\nexport {$07b14b47974efb58$export$9b9a0cd73afb7ca4 as PopoverContext, $07b14b47974efb58$export$5b6b19405a83ff9d as Popover};\n//# sourceMappingURL=Popover.module.js.map\n","import $bK1z9$arAEmodulejs from \"./ar-AE.mjs\";\nimport $bK1z9$bgBGmodulejs from \"./bg-BG.mjs\";\nimport $bK1z9$csCZmodulejs from \"./cs-CZ.mjs\";\nimport $bK1z9$daDKmodulejs from \"./da-DK.mjs\";\nimport $bK1z9$deDEmodulejs from \"./de-DE.mjs\";\nimport $bK1z9$elGRmodulejs from \"./el-GR.mjs\";\nimport $bK1z9$enUSmodulejs from \"./en-US.mjs\";\nimport $bK1z9$esESmodulejs from \"./es-ES.mjs\";\nimport $bK1z9$etEEmodulejs from \"./et-EE.mjs\";\nimport $bK1z9$fiFImodulejs from \"./fi-FI.mjs\";\nimport $bK1z9$frFRmodulejs from \"./fr-FR.mjs\";\nimport $bK1z9$heILmodulejs from \"./he-IL.mjs\";\nimport $bK1z9$hrHRmodulejs from \"./hr-HR.mjs\";\nimport $bK1z9$huHUmodulejs from \"./hu-HU.mjs\";\nimport $bK1z9$itITmodulejs from \"./it-IT.mjs\";\nimport $bK1z9$jaJPmodulejs from \"./ja-JP.mjs\";\nimport $bK1z9$koKRmodulejs from \"./ko-KR.mjs\";\nimport $bK1z9$ltLTmodulejs from \"./lt-LT.mjs\";\nimport $bK1z9$lvLVmodulejs from \"./lv-LV.mjs\";\nimport $bK1z9$nbNOmodulejs from \"./nb-NO.mjs\";\nimport $bK1z9$nlNLmodulejs from \"./nl-NL.mjs\";\nimport $bK1z9$plPLmodulejs from \"./pl-PL.mjs\";\nimport $bK1z9$ptBRmodulejs from \"./pt-BR.mjs\";\nimport $bK1z9$ptPTmodulejs from \"./pt-PT.mjs\";\nimport $bK1z9$roROmodulejs from \"./ro-RO.mjs\";\nimport $bK1z9$ruRUmodulejs from \"./ru-RU.mjs\";\nimport $bK1z9$skSKmodulejs from \"./sk-SK.mjs\";\nimport $bK1z9$slSImodulejs from \"./sl-SI.mjs\";\nimport $bK1z9$srSPmodulejs from \"./sr-SP.mjs\";\nimport $bK1z9$svSEmodulejs from \"./sv-SE.mjs\";\nimport $bK1z9$trTRmodulejs from \"./tr-TR.mjs\";\nimport $bK1z9$ukUAmodulejs from \"./uk-UA.mjs\";\nimport $bK1z9$zhCNmodulejs from \"./zh-CN.mjs\";\nimport $bK1z9$zhTWmodulejs from \"./zh-TW.mjs\";\n\nvar $df39c1238ae2b5f3$exports = {};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$df39c1238ae2b5f3$exports = {\n \"ar-AE\": $bK1z9$arAEmodulejs,\n \"bg-BG\": $bK1z9$bgBGmodulejs,\n \"cs-CZ\": $bK1z9$csCZmodulejs,\n \"da-DK\": $bK1z9$daDKmodulejs,\n \"de-DE\": $bK1z9$deDEmodulejs,\n \"el-GR\": $bK1z9$elGRmodulejs,\n \"en-US\": $bK1z9$enUSmodulejs,\n \"es-ES\": $bK1z9$esESmodulejs,\n \"et-EE\": $bK1z9$etEEmodulejs,\n \"fi-FI\": $bK1z9$fiFImodulejs,\n \"fr-FR\": $bK1z9$frFRmodulejs,\n \"he-IL\": $bK1z9$heILmodulejs,\n \"hr-HR\": $bK1z9$hrHRmodulejs,\n \"hu-HU\": $bK1z9$huHUmodulejs,\n \"it-IT\": $bK1z9$itITmodulejs,\n \"ja-JP\": $bK1z9$jaJPmodulejs,\n \"ko-KR\": $bK1z9$koKRmodulejs,\n \"lt-LT\": $bK1z9$ltLTmodulejs,\n \"lv-LV\": $bK1z9$lvLVmodulejs,\n \"nb-NO\": $bK1z9$nbNOmodulejs,\n \"nl-NL\": $bK1z9$nlNLmodulejs,\n \"pl-PL\": $bK1z9$plPLmodulejs,\n \"pt-BR\": $bK1z9$ptBRmodulejs,\n \"pt-PT\": $bK1z9$ptPTmodulejs,\n \"ro-RO\": $bK1z9$roROmodulejs,\n \"ru-RU\": $bK1z9$ruRUmodulejs,\n \"sk-SK\": $bK1z9$skSKmodulejs,\n \"sl-SI\": $bK1z9$slSImodulejs,\n \"sr-SP\": $bK1z9$srSPmodulejs,\n \"sv-SE\": $bK1z9$svSEmodulejs,\n \"tr-TR\": $bK1z9$trTRmodulejs,\n \"uk-UA\": $bK1z9$ukUAmodulejs,\n \"zh-CN\": $bK1z9$zhCNmodulejs,\n \"zh-TW\": $bK1z9$zhTWmodulejs\n};\n\n\nexport {$df39c1238ae2b5f3$exports as default};\n//# sourceMappingURL=intlStrings.module.js.map\n","var $e038a7e7a6d81989$exports = {};\n$e038a7e7a6d81989$exports = {\n \"colorSwatchPicker\": `\\u{62A}\\u{63A}\\u{64A}\\u{64A}\\u{631}\\u{627}\\u{62A} \\u{627}\\u{644}\\u{623}\\u{644}\\u{648}\\u{627}\\u{646}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{62D}\\u{62F}\\u{62F} \\u{639}\\u{646}\\u{635}\\u{631}\\u{64B}\\u{627}`,\n \"tableResizer\": `\\u{623}\\u{62F}\\u{627}\\u{629} \\u{62A}\\u{63A}\\u{64A}\\u{64A}\\u{631} \\u{627}\\u{644}\\u{62D}\\u{62C}\\u{645}`\n};\n\n\nexport {$e038a7e7a6d81989$exports as default};\n//# sourceMappingURL=ar-AE.module.js.map\n","var $0ec14741b0133644$exports = {};\n$0ec14741b0133644$exports = {\n \"colorSwatchPicker\": `\\u{426}\\u{432}\\u{435}\\u{442}\\u{43E}\\u{432}\\u{438} \\u{43C}\\u{43E}\\u{441}\\u{442}\\u{440}\\u{438}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{418}\\u{437}\\u{431}\\u{435}\\u{440}\\u{435}\\u{442}\\u{435} \\u{43F}\\u{440}\\u{435}\\u{434}\\u{43C}\\u{435}\\u{442}`,\n \"tableResizer\": `\\u{41F}\\u{440}\\u{435}\\u{43E}\\u{440}\\u{430}\\u{437}\\u{43C}\\u{435}\\u{440}\\u{438}\\u{442}\\u{435}\\u{43B}`\n};\n\n\nexport {$0ec14741b0133644$exports as default};\n//# sourceMappingURL=bg-BG.module.js.map\n","var $642f7badf2405784$exports = {};\n$642f7badf2405784$exports = {\n \"colorSwatchPicker\": `Vzorky barev`,\n \"dropzoneLabel\": `M\\xedsto pro p\\u{159}eta\\u{17E}en\\xed`,\n \"selectPlaceholder\": `Vyberte polo\\u{17E}ku`,\n \"tableResizer\": `Zm\\u{11B}na velikosti`\n};\n\n\nexport {$642f7badf2405784$exports as default};\n//# sourceMappingURL=cs-CZ.module.js.map\n","var $30cee8d2535734ec$exports = {};\n$30cee8d2535734ec$exports = {\n \"colorSwatchPicker\": `Farvepr\\xf8ver`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `V\\xe6lg et element`,\n \"tableResizer\": `St\\xf8rrelses\\xe6ndring`\n};\n\n\nexport {$30cee8d2535734ec$exports as default};\n//# sourceMappingURL=da-DK.module.js.map\n","var $c302d0504fca332a$exports = {};\n$c302d0504fca332a$exports = {\n \"colorSwatchPicker\": `Farbfelder`,\n \"dropzoneLabel\": `Ablegebereich`,\n \"selectPlaceholder\": `Element w\\xe4hlen`,\n \"tableResizer\": `Gr\\xf6\\xdfenanpassung`\n};\n\n\nexport {$c302d0504fca332a$exports as default};\n//# sourceMappingURL=de-DE.module.js.map\n","var $0d0703f2bd7e421c$exports = {};\n$0d0703f2bd7e421c$exports = {\n \"colorSwatchPicker\": `\\u{3A7}\\u{3C1}\\u{3C9}\\u{3BC}\\u{3B1}\\u{3C4}\\u{3B9}\\u{3BA}\\u{3AC} \\u{3B4}\\u{3B5}\\u{3AF}\\u{3B3}\\u{3BC}\\u{3B1}\\u{3C4}\\u{3B1}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{395}\\u{3C0}\\u{3B9}\\u{3BB}\\u{3AD}\\u{3BE}\\u{3C4}\\u{3B5} \\u{3AD}\\u{3BD}\\u{3B1} \\u{3B1}\\u{3BD}\\u{3C4}\\u{3B9}\\u{3BA}\\u{3B5}\\u{3AF}\\u{3BC}\\u{3B5}\\u{3BD}\\u{3BF}`,\n \"tableResizer\": `\\u{391}\\u{3BB}\\u{3BB}\\u{3B1}\\u{3B3}\\u{3AE} \\u{3BC}\\u{3B5}\\u{3B3}\\u{3AD}\\u{3B8}\\u{3BF}\\u{3C5}\\u{3C2}`\n};\n\n\nexport {$0d0703f2bd7e421c$exports as default};\n//# sourceMappingURL=el-GR.module.js.map\n","var $cafa55beb2fc5ef3$exports = {};\n$cafa55beb2fc5ef3$exports = {\n \"selectPlaceholder\": `Select an item`,\n \"tableResizer\": `Resizer`,\n \"dropzoneLabel\": `DropZone`,\n \"colorSwatchPicker\": `Color swatches`\n};\n\n\nexport {$cafa55beb2fc5ef3$exports as default};\n//# sourceMappingURL=en-US.module.js.map\n","var $18ac2ceede598103$exports = {};\n$18ac2ceede598103$exports = {\n \"colorSwatchPicker\": `Muestras de colores`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Seleccionar un art\\xedculo`,\n \"tableResizer\": `Cambiador de tama\\xf1o`\n};\n\n\nexport {$18ac2ceede598103$exports as default};\n//# sourceMappingURL=es-ES.module.js.map\n","var $718705a15b8a633a$exports = {};\n$718705a15b8a633a$exports = {\n \"colorSwatchPicker\": `V\\xe4rvin\\xe4idised`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Valige \\xfcksus`,\n \"tableResizer\": `Suuruse muutja`\n};\n\n\nexport {$718705a15b8a633a$exports as default};\n//# sourceMappingURL=et-EE.module.js.map\n","var $bf36dae9ecc81ce0$exports = {};\n$bf36dae9ecc81ce0$exports = {\n \"colorSwatchPicker\": `V\\xe4rimallit`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Valitse kohde`,\n \"tableResizer\": `Koon muuttaja`\n};\n\n\nexport {$bf36dae9ecc81ce0$exports as default};\n//# sourceMappingURL=fi-FI.module.js.map\n","var $0b4828edb010b855$exports = {};\n$0b4828edb010b855$exports = {\n \"colorSwatchPicker\": `\\xc9chantillons de couleurs`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `S\\xe9lectionner un \\xe9l\\xe9ment`,\n \"tableResizer\": `Redimensionneur`\n};\n\n\nexport {$0b4828edb010b855$exports as default};\n//# sourceMappingURL=fr-FR.module.js.map\n","var $0030f210b040e540$exports = {};\n$0030f210b040e540$exports = {\n \"colorSwatchPicker\": `\\u{5D3}\\u{5D5}\\u{5D2}\\u{5DE}\\u{5D9}\\u{5D5}\\u{5EA} \\u{5E6}\\u{5D1}\\u{5E2}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{5D1}\\u{5D7}\\u{5E8} \\u{5E4}\\u{5E8}\\u{5D9}\\u{5D8}`,\n \"tableResizer\": `\\u{5E9}\\u{5D9}\\u{5E0}\\u{5D5}\\u{5D9} \\u{5D2}\\u{5D5}\\u{5D3}\\u{5DC}`\n};\n\n\nexport {$0030f210b040e540$exports as default};\n//# sourceMappingURL=he-IL.module.js.map\n","var $1f0ebacf5a0c0fa1$exports = {};\n$1f0ebacf5a0c0fa1$exports = {\n \"colorSwatchPicker\": `Uzorci boja`,\n \"dropzoneLabel\": `Zona spu\\u{161}tanja`,\n \"selectPlaceholder\": `Odaberite stavku`,\n \"tableResizer\": `Promjena veli\\u{10D}ine`\n};\n\n\nexport {$1f0ebacf5a0c0fa1$exports as default};\n//# sourceMappingURL=hr-HR.module.js.map\n","var $3a706ba61f3d6bba$exports = {};\n$3a706ba61f3d6bba$exports = {\n \"colorSwatchPicker\": `Sz\\xednt\\xe1rak`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `V\\xe1lasszon ki egy elemet`,\n \"tableResizer\": `\\xc1tm\\xe9retez\\u{151}`\n};\n\n\nexport {$3a706ba61f3d6bba$exports as default};\n//# sourceMappingURL=hu-HU.module.js.map\n","var $0d17809e74607796$exports = {};\n$0d17809e74607796$exports = {\n \"colorSwatchPicker\": `Campioni di colore`,\n \"dropzoneLabel\": `Zona di rilascio`,\n \"selectPlaceholder\": `Seleziona un elemento`,\n \"tableResizer\": `Ridimensionamento`\n};\n\n\nexport {$0d17809e74607796$exports as default};\n//# sourceMappingURL=it-IT.module.js.map\n","var $65a71f9a56f1398f$exports = {};\n$65a71f9a56f1398f$exports = {\n \"colorSwatchPicker\": `\\u{30AB}\\u{30E9}\\u{30FC}\\u{30B9}\\u{30A6}\\u{30A9}\\u{30C3}\\u{30C1}`,\n \"dropzoneLabel\": `\\u{30C9}\\u{30ED}\\u{30C3}\\u{30D7}\\u{30BE}\\u{30FC}\\u{30F3}`,\n \"selectPlaceholder\": `\\u{9805}\\u{76EE}\\u{3092}\\u{9078}\\u{629E}`,\n \"tableResizer\": `\\u{30B5}\\u{30A4}\\u{30BA}\\u{5909}\\u{66F4}\\u{30C4}\\u{30FC}\\u{30EB}`\n};\n\n\nexport {$65a71f9a56f1398f$exports as default};\n//# sourceMappingURL=ja-JP.module.js.map\n","var $e5efad074a74abef$exports = {};\n$e5efad074a74abef$exports = {\n \"colorSwatchPicker\": `\\u{C0C9}\\u{C0C1} \\u{ACAC}\\u{BCF8}`,\n \"dropzoneLabel\": `\\u{B4DC}\\u{B86D} \\u{C601}\\u{C5ED}`,\n \"selectPlaceholder\": `\\u{D56D}\\u{BAA9} \\u{C120}\\u{D0DD}`,\n \"tableResizer\": `\\u{D06C}\\u{AE30} \\u{C870}\\u{C815}\\u{AE30}`\n};\n\n\nexport {$e5efad074a74abef$exports as default};\n//# sourceMappingURL=ko-KR.module.js.map\n","var $d70c2a849e55c607$exports = {};\n$d70c2a849e55c607$exports = {\n \"colorSwatchPicker\": `Spalv\\u{173} pavyzd\\u{17E}iai`,\n \"dropzoneLabel\": `\\u{201E}DropZone\\u{201C}`,\n \"selectPlaceholder\": `Pasirinkite element\\u{105}`,\n \"tableResizer\": `Dyd\\u{17E}io keitiklis`\n};\n\n\nexport {$d70c2a849e55c607$exports as default};\n//# sourceMappingURL=lt-LT.module.js.map\n","var $009bbbb440d0e907$exports = {};\n$009bbbb440d0e907$exports = {\n \"colorSwatchPicker\": `Kr\\u{101}su paraugi`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Izv\\u{113}l\\u{113}ties vienumu`,\n \"tableResizer\": `Izm\\u{113}ra main\\u{12B}t\\u{101}js`\n};\n\n\nexport {$009bbbb440d0e907$exports as default};\n//# sourceMappingURL=lv-LV.module.js.map\n","var $9366fe642464ee83$exports = {};\n$9366fe642464ee83$exports = {\n \"colorSwatchPicker\": `Fargekart`,\n \"dropzoneLabel\": `Droppsone`,\n \"selectPlaceholder\": `Velg et element`,\n \"tableResizer\": `St\\xf8rrelsesendrer`\n};\n\n\nexport {$9366fe642464ee83$exports as default};\n//# sourceMappingURL=nb-NO.module.js.map\n","var $62f9bc1f98ea21de$exports = {};\n$62f9bc1f98ea21de$exports = {\n \"colorSwatchPicker\": `kleurstalen`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Selecteer een item`,\n \"tableResizer\": `Resizer`\n};\n\n\nexport {$62f9bc1f98ea21de$exports as default};\n//# sourceMappingURL=nl-NL.module.js.map\n","var $4ec2e5b6623b1b76$exports = {};\n$4ec2e5b6623b1b76$exports = {\n \"colorSwatchPicker\": `Pr\\xf3bki kolor\\xf3w`,\n \"dropzoneLabel\": `Strefa upuszczania`,\n \"selectPlaceholder\": `Wybierz element`,\n \"tableResizer\": `Zmiana rozmiaru`\n};\n\n\nexport {$4ec2e5b6623b1b76$exports as default};\n//# sourceMappingURL=pl-PL.module.js.map\n","var $e25098e26647cc04$exports = {};\n$e25098e26647cc04$exports = {\n \"colorSwatchPicker\": `Amostras de cores`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Selecione um item`,\n \"tableResizer\": `Redimensionador`\n};\n\n\nexport {$e25098e26647cc04$exports as default};\n//# sourceMappingURL=pt-BR.module.js.map\n","var $dd39c57d242c8156$exports = {};\n$dd39c57d242c8156$exports = {\n \"colorSwatchPicker\": `Amostras de cores`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Selecione um item`,\n \"tableResizer\": `Redimensionador`\n};\n\n\nexport {$dd39c57d242c8156$exports as default};\n//# sourceMappingURL=pt-PT.module.js.map\n","var $3b4c1ba5afd57b35$exports = {};\n$3b4c1ba5afd57b35$exports = {\n \"colorSwatchPicker\": `Specimene de culoare`,\n \"dropzoneLabel\": `Zon\\u{103} de plasare`,\n \"selectPlaceholder\": `Selecta\\u{21B}i un element`,\n \"tableResizer\": `Instrument de redimensionare`\n};\n\n\nexport {$3b4c1ba5afd57b35$exports as default};\n//# sourceMappingURL=ro-RO.module.js.map\n","var $a455b2cda79eb746$exports = {};\n$a455b2cda79eb746$exports = {\n \"colorSwatchPicker\": `\\u{426}\\u{432}\\u{435}\\u{442}\\u{43E}\\u{432}\\u{44B}\\u{435} \\u{43E}\\u{431}\\u{440}\\u{430}\\u{437}\\u{446}\\u{44B}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{412}\\u{44B}\\u{431}\\u{435}\\u{440}\\u{438}\\u{442}\\u{435} \\u{44D}\\u{43B}\\u{435}\\u{43C}\\u{435}\\u{43D}\\u{442}`,\n \"tableResizer\": `\\u{421}\\u{440}\\u{435}\\u{434}\\u{441}\\u{442}\\u{432}\\u{43E} \\u{438}\\u{437}\\u{43C}\\u{435}\\u{43D}\\u{435}\\u{43D}\\u{438}\\u{44F} \\u{440}\\u{430}\\u{437}\\u{43C}\\u{435}\\u{440}\\u{430}`\n};\n\n\nexport {$a455b2cda79eb746$exports as default};\n//# sourceMappingURL=ru-RU.module.js.map\n","var $b983ca1383d5b960$exports = {};\n$b983ca1383d5b960$exports = {\n \"colorSwatchPicker\": `Vzorkovn\\xedky farieb`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Vyberte polo\\u{17E}ku`,\n \"tableResizer\": `N\\xe1stroj na zmenu ve\\u{13E}kosti`\n};\n\n\nexport {$b983ca1383d5b960$exports as default};\n//# sourceMappingURL=sk-SK.module.js.map\n","var $32a515ef673b0655$exports = {};\n$32a515ef673b0655$exports = {\n \"colorSwatchPicker\": `Barvne palete`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Izberite element`,\n \"tableResizer\": `Spreminjanje velikosti`\n};\n\n\nexport {$32a515ef673b0655$exports as default};\n//# sourceMappingURL=sl-SI.module.js.map\n","var $89434176ab35446b$exports = {};\n$89434176ab35446b$exports = {\n \"colorSwatchPicker\": `Uzorci boje`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `Izaberite stavku`,\n \"tableResizer\": `Promena veli\\u{10D}ine`\n};\n\n\nexport {$89434176ab35446b$exports as default};\n//# sourceMappingURL=sr-SP.module.js.map\n","var $727da781aca847f9$exports = {};\n$727da781aca847f9$exports = {\n \"colorSwatchPicker\": `F\\xe4rgrutor`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `V\\xe4lj en artikel`,\n \"tableResizer\": `Storleks\\xe4ndrare`\n};\n\n\nexport {$727da781aca847f9$exports as default};\n//# sourceMappingURL=sv-SE.module.js.map\n","var $fcd2d84b9a2d489c$exports = {};\n$fcd2d84b9a2d489c$exports = {\n \"colorSwatchPicker\": `Renk \\xf6rnekleri`,\n \"dropzoneLabel\": `B\\u{131}rakma B\\xf6lgesi`,\n \"selectPlaceholder\": `Bir \\xf6\\u{11F}e se\\xe7in`,\n \"tableResizer\": `Yeniden boyutland\\u{131}r\\u{131}c\\u{131}`\n};\n\n\nexport {$fcd2d84b9a2d489c$exports as default};\n//# sourceMappingURL=tr-TR.module.js.map\n","var $2422ac328687ee23$exports = {};\n$2422ac328687ee23$exports = {\n \"colorSwatchPicker\": `\\u{417}\\u{440}\\u{430}\\u{437}\\u{43A}\\u{438} \\u{43A}\\u{43E}\\u{43B}\\u{44C}\\u{43E}\\u{440}\\u{456}\\u{432}`,\n \"dropzoneLabel\": `DropZone`,\n \"selectPlaceholder\": `\\u{412}\\u{438}\\u{431}\\u{435}\\u{440}\\u{456}\\u{442}\\u{44C} \\u{435}\\u{43B}\\u{435}\\u{43C}\\u{435}\\u{43D}\\u{442}`,\n \"tableResizer\": `\\u{417}\\u{430}\\u{441}\\u{456}\\u{431} \\u{437}\\u{43C}\\u{456}\\u{43D}\\u{435}\\u{43D}\\u{43D}\\u{44F} \\u{440}\\u{43E}\\u{437}\\u{43C}\\u{456}\\u{440}\\u{443}`\n};\n\n\nexport {$2422ac328687ee23$exports as default};\n//# sourceMappingURL=uk-UA.module.js.map\n","var $c9a532d1c973af61$exports = {};\n$c9a532d1c973af61$exports = {\n \"colorSwatchPicker\": `\\u{989C}\\u{8272}\\u{8272}\\u{677F}`,\n \"dropzoneLabel\": `\\u{653E}\\u{7F6E}\\u{533A}\\u{57DF}`,\n \"selectPlaceholder\": `\\u{9009}\\u{62E9}\\u{4E00}\\u{4E2A}\\u{9879}\\u{76EE}`,\n \"tableResizer\": `\\u{5C3A}\\u{5BF8}\\u{8C03}\\u{6574}\\u{5668}`\n};\n\n\nexport {$c9a532d1c973af61$exports as default};\n//# sourceMappingURL=zh-CN.module.js.map\n","var $34de119f14549a4b$exports = {};\n$34de119f14549a4b$exports = {\n \"colorSwatchPicker\": `\\u{8272}\\u{7968}`,\n \"dropzoneLabel\": `\\u{653E}\\u{7F6E}\\u{5340}`,\n \"selectPlaceholder\": `\\u{9078}\\u{53D6}\\u{9805}\\u{76EE}`,\n \"tableResizer\": `\\u{5927}\\u{5C0F}\\u{8ABF}\\u{6574}\\u{5668}`\n};\n\n\nexport {$34de119f14549a4b$exports as default};\n//# sourceMappingURL=zh-TW.module.js.map\n","import {filterDOMProps as $aUnai$filterDOMProps, mergeProps as $aUnai$mergeProps, useId as $aUnai$useId, chain as $aUnai$chain} from \"@react-aria/utils\";\nimport {useMemo as $aUnai$useMemo} from \"react\";\nimport {ListKeyboardDelegate as $aUnai$ListKeyboardDelegate, useTypeSelect as $aUnai$useTypeSelect} from \"@react-aria/selection\";\nimport {setInteractionModality as $aUnai$setInteractionModality} from \"@react-aria/interactions\";\nimport {useCollator as $aUnai$useCollator} from \"@react-aria/i18n\";\nimport {useField as $aUnai$useField} from \"@react-aria/label\";\nimport {useMenuTrigger as $aUnai$useMenuTrigger} from \"@react-aria/menu\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\nconst $58aed456727eb0f3$export$703601b7e90536f8 = new WeakMap();\nfunction $58aed456727eb0f3$export$e64b2f635402ca43(props, state, ref) {\n let { keyboardDelegate: keyboardDelegate, isDisabled: isDisabled, isRequired: isRequired, name: name, validationBehavior: validationBehavior = 'aria' } = props;\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = (0, $aUnai$useCollator)({\n usage: 'search',\n sensitivity: 'base'\n });\n let delegate = (0, $aUnai$useMemo)(()=>keyboardDelegate || new (0, $aUnai$ListKeyboardDelegate)(state.collection, state.disabledKeys, ref, collator), [\n keyboardDelegate,\n state.collection,\n state.disabledKeys,\n collator\n ]);\n let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $aUnai$useMenuTrigger)({\n isDisabled: isDisabled,\n type: 'listbox'\n }, state, ref);\n let onKeyDown = (e)=>{\n switch(e.key){\n case 'ArrowLeft':\n {\n var _delegate_getKeyAbove, _delegate_getFirstKey;\n // prevent scrolling containers\n e.preventDefault();\n let key = state.selectedKey != null ? (_delegate_getKeyAbove = delegate.getKeyAbove) === null || _delegate_getKeyAbove === void 0 ? void 0 : _delegate_getKeyAbove.call(delegate, state.selectedKey) : (_delegate_getFirstKey = delegate.getFirstKey) === null || _delegate_getFirstKey === void 0 ? void 0 : _delegate_getFirstKey.call(delegate);\n if (key) state.setSelectedKey(key);\n break;\n }\n case 'ArrowRight':\n {\n var _delegate_getKeyBelow, _delegate_getFirstKey1;\n // prevent scrolling containers\n e.preventDefault();\n let key = state.selectedKey != null ? (_delegate_getKeyBelow = delegate.getKeyBelow) === null || _delegate_getKeyBelow === void 0 ? void 0 : _delegate_getKeyBelow.call(delegate, state.selectedKey) : (_delegate_getFirstKey1 = delegate.getFirstKey) === null || _delegate_getFirstKey1 === void 0 ? void 0 : _delegate_getFirstKey1.call(delegate);\n if (key) state.setSelectedKey(key);\n break;\n }\n }\n };\n let { typeSelectProps: typeSelectProps } = (0, $aUnai$useTypeSelect)({\n keyboardDelegate: delegate,\n selectionManager: state.selectionManager,\n onTypeSelect (key) {\n state.setSelectedKey(key);\n }\n });\n let { isInvalid: isInvalid, validationErrors: validationErrors, validationDetails: validationDetails } = state.displayValidation;\n let { labelProps: labelProps, fieldProps: fieldProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps } = (0, $aUnai$useField)({\n ...props,\n labelElementType: 'span',\n isInvalid: isInvalid,\n errorMessage: props.errorMessage || validationErrors\n });\n typeSelectProps.onKeyDown = typeSelectProps.onKeyDownCapture;\n delete typeSelectProps.onKeyDownCapture;\n let domProps = (0, $aUnai$filterDOMProps)(props, {\n labelable: true\n });\n let triggerProps = (0, $aUnai$mergeProps)(typeSelectProps, menuTriggerProps, fieldProps);\n let valueId = (0, $aUnai$useId)();\n $58aed456727eb0f3$export$703601b7e90536f8.set(state, {\n isDisabled: isDisabled,\n isRequired: isRequired,\n name: name,\n validationBehavior: validationBehavior\n });\n return {\n labelProps: {\n ...labelProps,\n onClick: ()=>{\n if (!props.isDisabled) {\n var _ref_current;\n (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.focus();\n // Show the focus ring so the user knows where focus went\n (0, $aUnai$setInteractionModality)('keyboard');\n }\n }\n },\n triggerProps: (0, $aUnai$mergeProps)(domProps, {\n ...triggerProps,\n isDisabled: isDisabled,\n onKeyDown: (0, $aUnai$chain)(triggerProps.onKeyDown, onKeyDown, props.onKeyDown),\n onKeyUp: props.onKeyUp,\n 'aria-labelledby': [\n valueId,\n triggerProps['aria-labelledby'],\n triggerProps['aria-label'] && !triggerProps['aria-labelledby'] ? triggerProps.id : null\n ].filter(Boolean).join(' '),\n onFocus (e) {\n if (state.isFocused) return;\n if (props.onFocus) props.onFocus(e);\n if (props.onFocusChange) props.onFocusChange(true);\n state.setFocused(true);\n },\n onBlur (e) {\n if (state.isOpen) return;\n if (props.onBlur) props.onBlur(e);\n if (props.onFocusChange) props.onFocusChange(false);\n state.setFocused(false);\n }\n }),\n valueProps: {\n id: valueId\n },\n menuProps: {\n ...menuProps,\n autoFocus: state.focusStrategy || true,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n disallowEmptySelection: true,\n linkBehavior: 'selection',\n onBlur: (e)=>{\n if (e.currentTarget.contains(e.relatedTarget)) return;\n if (props.onBlur) props.onBlur(e);\n if (props.onFocusChange) props.onFocusChange(false);\n state.setFocused(false);\n },\n 'aria-labelledby': [\n fieldProps['aria-labelledby'],\n triggerProps['aria-label'] && !fieldProps['aria-labelledby'] ? triggerProps.id : null\n ].filter(Boolean).join(' ')\n },\n descriptionProps: descriptionProps,\n errorMessageProps: errorMessageProps,\n isInvalid: isInvalid,\n validationErrors: validationErrors,\n validationDetails: validationDetails\n };\n}\n\n\nexport {$58aed456727eb0f3$export$703601b7e90536f8 as selectData, $58aed456727eb0f3$export$e64b2f635402ca43 as useSelect};\n//# sourceMappingURL=useSelect.module.js.map\n","import {selectData as $58aed456727eb0f3$export$703601b7e90536f8} from \"./useSelect.mjs\";\nimport $8BE50$react, {useRef as $8BE50$useRef} from \"react\";\nimport {useFormReset as $8BE50$useFormReset} from \"@react-aria/utils\";\nimport {useFormValidation as $8BE50$useFormValidation} from \"@react-aria/form\";\nimport {useVisuallyHidden as $8BE50$useVisuallyHidden} from \"@react-aria/visually-hidden\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $bdd25dc72710631f$export$f809e80f58e251d1(props, state, triggerRef) {\n let data = (0, $58aed456727eb0f3$export$703601b7e90536f8).get(state) || {};\n let { autoComplete: autoComplete, name: name = data.name, isDisabled: isDisabled = data.isDisabled } = props;\n let { validationBehavior: validationBehavior, isRequired: isRequired } = data;\n let { visuallyHiddenProps: visuallyHiddenProps } = (0, $8BE50$useVisuallyHidden)();\n (0, $8BE50$useFormReset)(props.selectRef, state.selectedKey, state.setSelectedKey);\n (0, $8BE50$useFormValidation)({\n validationBehavior: validationBehavior,\n focus: ()=>{\n var _triggerRef_current;\n return (_triggerRef_current = triggerRef.current) === null || _triggerRef_current === void 0 ? void 0 : _triggerRef_current.focus();\n }\n }, state, props.selectRef);\n var _state_selectedKey;\n // In Safari, the <select> cannot have `display: none` or `hidden` for autofill to work.\n // In Firefox, there must be a <label> to identify the <select> whereas other browsers\n // seem to identify it just by surrounding text.\n // The solution is to use <VisuallyHidden> to hide the elements, which clips the elements to a\n // 1px rectangle. In addition, we hide from screen readers with aria-hidden, and make the <select>\n // non tabbable with tabIndex={-1}.\n return {\n containerProps: {\n ...visuallyHiddenProps,\n 'aria-hidden': true,\n // @ts-ignore\n ['data-react-aria-prevent-focus']: true,\n // @ts-ignore\n ['data-a11y-ignore']: 'aria-hidden-focus'\n },\n inputProps: {\n style: {\n display: 'none'\n }\n },\n selectProps: {\n tabIndex: -1,\n autoComplete: autoComplete,\n disabled: isDisabled,\n required: validationBehavior === 'native' && isRequired,\n name: name,\n value: (_state_selectedKey = state.selectedKey) !== null && _state_selectedKey !== void 0 ? _state_selectedKey : '',\n onChange: (e)=>state.setSelectedKey(e.target.value)\n }\n };\n}\nfunction $bdd25dc72710631f$export$cbd84cdb2e668835(props) {\n let { state: state, triggerRef: triggerRef, label: label, name: name, isDisabled: isDisabled } = props;\n let selectRef = (0, $8BE50$useRef)(null);\n let { containerProps: containerProps, selectProps: selectProps } = $bdd25dc72710631f$export$f809e80f58e251d1({\n ...props,\n selectRef: selectRef\n }, state, triggerRef);\n var _state_selectedKey;\n // If used in a <form>, use a hidden input so the value can be submitted to a server.\n // If the collection isn't too big, use a hidden <select> element for this so that browser\n // autofill will work. Otherwise, use an <input type=\"hidden\">.\n if (state.collection.size <= 300) return /*#__PURE__*/ (0, $8BE50$react).createElement(\"div\", {\n ...containerProps,\n \"data-testid\": \"hidden-select-container\"\n }, /*#__PURE__*/ (0, $8BE50$react).createElement(\"label\", null, label, /*#__PURE__*/ (0, $8BE50$react).createElement(\"select\", {\n ...selectProps,\n ref: selectRef\n }, /*#__PURE__*/ (0, $8BE50$react).createElement(\"option\", null), [\n ...state.collection.getKeys()\n ].map((key)=>{\n let item = state.collection.getItem(key);\n if (item && item.type === 'item') return /*#__PURE__*/ (0, $8BE50$react).createElement(\"option\", {\n key: item.key,\n value: item.key\n }, item.textValue);\n }))));\n else if (name) return /*#__PURE__*/ (0, $8BE50$react).createElement(\"input\", {\n type: \"hidden\",\n autoComplete: selectProps.autoComplete,\n name: name,\n disabled: isDisabled,\n value: (_state_selectedKey = state.selectedKey) !== null && _state_selectedKey !== void 0 ? _state_selectedKey : ''\n });\n return null;\n}\n\n\nexport {$bdd25dc72710631f$export$f809e80f58e251d1 as useHiddenSelect, $bdd25dc72710631f$export$cbd84cdb2e668835 as HiddenSelect};\n//# sourceMappingURL=HiddenSelect.module.js.map\n","import {ButtonContext as $d2b4bc8c273e7be6$export$24d547caef80ccd1} from \"./Button.mjs\";\nimport {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, removeDataAttributes as $64fa3d84918910a7$export$ef03459518577ad4, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, useSlottedContext as $64fa3d84918910a7$export$fabf2dc03a41866e} from \"./utils.mjs\";\nimport {FieldErrorContext as $ee014567cb39d3f0$export$ff05c3ac10437e03} from \"./FieldError.mjs\";\nimport {FormContext as $d3e0e05bdfcf66bd$export$c24727297075ec6a} from \"./Form.mjs\";\nimport $akiWb$intlStringsmodulejs from \"./intlStrings.mjs\";\nimport {LabelContext as $01b77f81d0f07f68$export$75b6ee27786ba447} from \"./Label.mjs\";\nimport {ListBoxContext as $eed445e0843c11d0$export$7ff8f37d2d81a48d, ListStateContext as $eed445e0843c11d0$export$7c5906fe4f1f2af2} from \"./ListBox.mjs\";\nimport {OverlayTriggerStateContext as $de32f1b87079253c$export$d2f961adcb0afbe} from \"./Dialog.mjs\";\nimport {PopoverContext as $07b14b47974efb58$export$9b9a0cd73afb7ca4} from \"./Popover.mjs\";\nimport {TextContext as $514c0188e459b4c0$export$9afb8bc826b033ea} from \"./Text.mjs\";\nimport {useFocusRing as $akiWb$useFocusRing, useSelect as $akiWb$useSelect, HiddenSelect as $akiWb$HiddenSelect, useLocalizedStringFormatter as $akiWb$useLocalizedStringFormatter} from \"react-aria\";\nimport {useSelectState as $akiWb$useSelectState} from \"react-stately\";\nimport {CollectionBuilder as $akiWb$CollectionBuilder} from \"@react-aria/collections\";\nimport {useResizeObserver as $akiWb$useResizeObserver, filterDOMProps as $akiWb$filterDOMProps} from \"@react-aria/utils\";\nimport $akiWb$react, {createContext as $akiWb$createContext, useMemo as $akiWb$useMemo, useRef as $akiWb$useRef, useState as $akiWb$useState, useCallback as $akiWb$useCallback, forwardRef as $akiWb$forwardRef, useContext as $akiWb$useContext} from \"react\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst $82d7e5349645de74$export$7540cee5be7dc19b = /*#__PURE__*/ (0, $akiWb$createContext)(null);\nconst $82d7e5349645de74$export$ef445b55be0601bd = /*#__PURE__*/ (0, $akiWb$createContext)(null);\nfunction $82d7e5349645de74$var$Select(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $82d7e5349645de74$export$7540cee5be7dc19b);\n let { children: children, isDisabled: isDisabled = false, isInvalid: isInvalid = false, isRequired: isRequired = false } = props;\n let content = (0, $akiWb$useMemo)(()=>typeof children === 'function' ? children({\n isOpen: false,\n isDisabled: isDisabled,\n isInvalid: isInvalid,\n isRequired: isRequired,\n isFocused: false,\n isFocusVisible: false,\n defaultChildren: null\n }) : children, [\n children,\n isDisabled,\n isInvalid,\n isRequired\n ]);\n return /*#__PURE__*/ (0, $akiWb$react).createElement((0, $akiWb$CollectionBuilder), {\n content: content\n }, (collection)=>/*#__PURE__*/ (0, $akiWb$react).createElement($82d7e5349645de74$var$SelectInner, {\n props: props,\n collection: collection,\n selectRef: ref\n }));\n}\nfunction $82d7e5349645de74$var$SelectInner({ props: props, selectRef: ref, collection: collection }) {\n let { validationBehavior: formValidationBehavior } = (0, $64fa3d84918910a7$export$fabf2dc03a41866e)((0, $d3e0e05bdfcf66bd$export$c24727297075ec6a)) || {};\n var _props_validationBehavior, _ref;\n let validationBehavior = (_ref = (_props_validationBehavior = props.validationBehavior) !== null && _props_validationBehavior !== void 0 ? _props_validationBehavior : formValidationBehavior) !== null && _ref !== void 0 ? _ref : 'native';\n let state = (0, $akiWb$useSelectState)({\n ...props,\n collection: collection,\n children: undefined,\n validationBehavior: validationBehavior\n });\n let { isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $akiWb$useFocusRing)({\n within: true\n });\n // Get props for child elements from useSelect\n let buttonRef = (0, $akiWb$useRef)(null);\n let [labelRef, label] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n let { labelProps: labelProps, triggerProps: triggerProps, valueProps: valueProps, menuProps: menuProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps, ...validation } = (0, $akiWb$useSelect)({\n ...(0, $64fa3d84918910a7$export$ef03459518577ad4)(props),\n label: label,\n validationBehavior: validationBehavior\n }, state, buttonRef);\n // Make menu width match input + button\n let [buttonWidth, setButtonWidth] = (0, $akiWb$useState)(null);\n let onResize = (0, $akiWb$useCallback)(()=>{\n if (buttonRef.current) setButtonWidth(buttonRef.current.offsetWidth + 'px');\n }, [\n buttonRef\n ]);\n (0, $akiWb$useResizeObserver)({\n ref: buttonRef,\n onResize: onResize\n });\n // Only expose a subset of state to renderProps function to avoid infinite render loop\n let renderPropsState = (0, $akiWb$useMemo)(()=>({\n isOpen: state.isOpen,\n isFocused: state.isFocused,\n isFocusVisible: isFocusVisible,\n isDisabled: props.isDisabled || false,\n isInvalid: validation.isInvalid || false,\n isRequired: props.isRequired || false\n }), [\n state.isOpen,\n state.isFocused,\n isFocusVisible,\n props.isDisabled,\n validation.isInvalid,\n props.isRequired\n ]);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: renderPropsState,\n defaultClassName: 'react-aria-Select'\n });\n let DOMProps = (0, $akiWb$filterDOMProps)(props);\n delete DOMProps.id;\n let scrollRef = (0, $akiWb$useRef)(null);\n return /*#__PURE__*/ (0, $akiWb$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n $82d7e5349645de74$export$7540cee5be7dc19b,\n props\n ],\n [\n $82d7e5349645de74$export$ef445b55be0601bd,\n state\n ],\n [\n $82d7e5349645de74$export$f8f745c04421623f,\n valueProps\n ],\n [\n (0, $01b77f81d0f07f68$export$75b6ee27786ba447),\n {\n ...labelProps,\n ref: labelRef,\n elementType: 'span'\n }\n ],\n [\n (0, $d2b4bc8c273e7be6$export$24d547caef80ccd1),\n {\n ...triggerProps,\n ref: buttonRef,\n isPressed: state.isOpen\n }\n ],\n [\n (0, $de32f1b87079253c$export$d2f961adcb0afbe),\n state\n ],\n [\n (0, $07b14b47974efb58$export$9b9a0cd73afb7ca4),\n {\n trigger: 'Select',\n triggerRef: buttonRef,\n scrollRef: scrollRef,\n placement: 'bottom start',\n style: {\n '--trigger-width': buttonWidth\n }\n }\n ],\n [\n (0, $eed445e0843c11d0$export$7ff8f37d2d81a48d),\n {\n ...menuProps,\n ref: scrollRef\n }\n ],\n [\n (0, $eed445e0843c11d0$export$7c5906fe4f1f2af2),\n state\n ],\n [\n (0, $514c0188e459b4c0$export$9afb8bc826b033ea),\n {\n slots: {\n description: descriptionProps,\n errorMessage: errorMessageProps\n }\n }\n ],\n [\n (0, $ee014567cb39d3f0$export$ff05c3ac10437e03),\n validation\n ]\n ]\n }, /*#__PURE__*/ (0, $akiWb$react).createElement(\"div\", {\n ...DOMProps,\n ...renderProps,\n ...focusProps,\n ref: ref,\n slot: props.slot || undefined,\n \"data-focused\": state.isFocused || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-open\": state.isOpen || undefined,\n \"data-disabled\": props.isDisabled || undefined,\n \"data-invalid\": validation.isInvalid || undefined,\n \"data-required\": props.isRequired || undefined\n }), /*#__PURE__*/ (0, $akiWb$react).createElement((0, $akiWb$HiddenSelect), {\n state: state,\n triggerRef: buttonRef,\n label: label,\n name: props.name,\n isDisabled: props.isDisabled\n }));\n}\n/**\n * A select displays a collapsible list of options and allows a user to select one of them.\n */ const $82d7e5349645de74$export$ef9b1a59e592288f = /*#__PURE__*/ (0, $akiWb$forwardRef)($82d7e5349645de74$var$Select);\nconst $82d7e5349645de74$export$f8f745c04421623f = /*#__PURE__*/ (0, $akiWb$createContext)(null);\nfunction $82d7e5349645de74$var$SelectValue(props, ref) {\n var _state_selectedItem, _state_selectedItem1;\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $82d7e5349645de74$export$f8f745c04421623f);\n let state = (0, $akiWb$useContext)($82d7e5349645de74$export$ef445b55be0601bd);\n let { placeholder: placeholder } = (0, $64fa3d84918910a7$export$fabf2dc03a41866e)($82d7e5349645de74$export$7540cee5be7dc19b);\n let selectedItem = state.selectedKey != null ? state.collection.getItem(state.selectedKey) : null;\n let rendered = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.props.children;\n if (typeof rendered === 'function') {\n // If the selected item has a function as a child, we need to call it to render to React.JSX.\n let fn = rendered;\n rendered = fn({\n isHovered: false,\n isPressed: false,\n isSelected: false,\n isFocused: false,\n isFocusVisible: false,\n isDisabled: false,\n selectionMode: 'single',\n selectionBehavior: 'toggle'\n });\n }\n let stringFormatter = (0, $akiWb$useLocalizedStringFormatter)((0, ($parcel$interopDefault($akiWb$intlStringsmodulejs))), 'react-aria-components');\n var _ref, _state_selectedItem_value, _state_selectedItem_textValue;\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n defaultChildren: (_ref = rendered !== null && rendered !== void 0 ? rendered : placeholder) !== null && _ref !== void 0 ? _ref : stringFormatter.format('selectPlaceholder'),\n defaultClassName: 'react-aria-SelectValue',\n values: {\n selectedItem: (_state_selectedItem_value = (_state_selectedItem = state.selectedItem) === null || _state_selectedItem === void 0 ? void 0 : _state_selectedItem.value) !== null && _state_selectedItem_value !== void 0 ? _state_selectedItem_value : null,\n selectedText: (_state_selectedItem_textValue = (_state_selectedItem1 = state.selectedItem) === null || _state_selectedItem1 === void 0 ? void 0 : _state_selectedItem1.textValue) !== null && _state_selectedItem_textValue !== void 0 ? _state_selectedItem_textValue : null,\n isPlaceholder: !selectedItem\n }\n });\n let DOMProps = (0, $akiWb$filterDOMProps)(props);\n return /*#__PURE__*/ (0, $akiWb$react).createElement(\"span\", {\n ref: ref,\n ...DOMProps,\n ...renderProps,\n \"data-placeholder\": !selectedItem || undefined\n }, /*#__PURE__*/ (0, $akiWb$react).createElement((0, $514c0188e459b4c0$export$9afb8bc826b033ea).Provider, {\n value: undefined\n }, renderProps.children));\n}\n/**\n * SelectValue renders the current value of a Select, or a placeholder if no value is selected.\n * It is usually placed within the button element.\n */ const $82d7e5349645de74$export$e288731fd71264f0 = /*#__PURE__*/ (0, $akiWb$forwardRef)($82d7e5349645de74$var$SelectValue);\n\n\nexport {$82d7e5349645de74$export$7540cee5be7dc19b as SelectContext, $82d7e5349645de74$export$ef445b55be0601bd as SelectStateContext, $82d7e5349645de74$export$f8f745c04421623f as SelectValueContext, $82d7e5349645de74$export$ef9b1a59e592288f as Select, $82d7e5349645de74$export$e288731fd71264f0 as SelectValue};\n//# sourceMappingURL=Select.module.js.map\n","import {useFormValidationState as $6FfNf$useFormValidationState} from \"@react-stately/form\";\nimport {useOverlayTriggerState as $6FfNf$useOverlayTriggerState} from \"@react-stately/overlays\";\nimport {useSingleSelectListState as $6FfNf$useSingleSelectListState} from \"@react-stately/list\";\nimport {useState as $6FfNf$useState} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $2bc3a590c5373a4e$export$5159ec8b34d4ec12(props) {\n let triggerState = (0, $6FfNf$useOverlayTriggerState)(props);\n let [focusStrategy, setFocusStrategy] = (0, $6FfNf$useState)(null);\n let listState = (0, $6FfNf$useSingleSelectListState)({\n ...props,\n onSelectionChange: (key)=>{\n if (props.onSelectionChange != null) props.onSelectionChange(key);\n triggerState.close();\n validationState.commitValidation();\n }\n });\n let validationState = (0, $6FfNf$useFormValidationState)({\n ...props,\n value: listState.selectedKey\n });\n let [isFocused, setFocused] = (0, $6FfNf$useState)(false);\n return {\n ...validationState,\n ...listState,\n ...triggerState,\n focusStrategy: focusStrategy,\n open (focusStrategy = null) {\n // Don't open if the collection is empty.\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.open();\n }\n },\n toggle (focusStrategy = null) {\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.toggle();\n }\n },\n isFocused: isFocused,\n setFocused: setFocused\n };\n}\n\n\nexport {$2bc3a590c5373a4e$export$5159ec8b34d4ec12 as useSelectState};\n//# sourceMappingURL=useSelectState.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415} from \"./utils.mjs\";\nimport $1B3Dx$react, {createContext as $1B3Dx$createContext, forwardRef as $1B3Dx$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nconst $514c0188e459b4c0$export$9afb8bc826b033ea = /*#__PURE__*/ (0, $1B3Dx$createContext)({});\nfunction $514c0188e459b4c0$var$Text(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $514c0188e459b4c0$export$9afb8bc826b033ea);\n let { elementType: ElementType = 'span', ...domProps } = props;\n // @ts-ignore\n return /*#__PURE__*/ (0, $1B3Dx$react).createElement(ElementType, {\n className: \"react-aria-Text\",\n ...domProps,\n ref: ref\n });\n}\nconst $514c0188e459b4c0$export$5f1af8db9871e1d6 = /*#__PURE__*/ (0, $1B3Dx$forwardRef)($514c0188e459b4c0$var$Text);\n\n\nexport {$514c0188e459b4c0$export$9afb8bc826b033ea as TextContext, $514c0188e459b4c0$export$5f1af8db9871e1d6 as Text};\n//# sourceMappingURL=Text.module.js.map\n","import {useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from \"./utils.mjs\";\nimport {useHover as $9Usiy$useHover, useFocusRing as $9Usiy$useFocusRing, mergeProps as $9Usiy$mergeProps} from \"react-aria\";\nimport $9Usiy$react, {createContext as $9Usiy$createContext, forwardRef as $9Usiy$forwardRef} from \"react\";\n\n\n\n\nconst $216918bed6669f72$export$2dc6166a7e65358c = /*#__PURE__*/ (0, $9Usiy$createContext)({});\nlet $216918bed6669f72$var$filterHoverProps = (props)=>{\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, ...otherProps } = props;\n return otherProps;\n};\nfunction $216918bed6669f72$var$TextArea(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $216918bed6669f72$export$2dc6166a7e65358c);\n let { hoverProps: hoverProps, isHovered: isHovered } = (0, $9Usiy$useHover)(props);\n let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $9Usiy$useFocusRing)({\n isTextInput: true,\n autoFocus: props.autoFocus\n });\n let isInvalid = !!props['aria-invalid'] && props['aria-invalid'] !== 'false';\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: {\n isHovered: isHovered,\n isFocused: isFocused,\n isFocusVisible: isFocusVisible,\n isDisabled: props.disabled || false,\n isInvalid: isInvalid\n },\n defaultClassName: 'react-aria-TextArea'\n });\n return /*#__PURE__*/ (0, $9Usiy$react).createElement(\"textarea\", {\n ...(0, $9Usiy$mergeProps)($216918bed6669f72$var$filterHoverProps(props), focusProps, hoverProps),\n ...renderProps,\n ref: ref,\n \"data-focused\": isFocused || undefined,\n \"data-disabled\": props.disabled || undefined,\n \"data-hovered\": isHovered || undefined,\n \"data-focus-visible\": isFocusVisible || undefined,\n \"data-invalid\": isInvalid || undefined\n });\n}\n/**\n * A textarea allows a user to input mult-line text.\n */ const $216918bed6669f72$export$f5c9f3c2c4054eec = /*#__PURE__*/ (0, $9Usiy$forwardRef)($216918bed6669f72$var$TextArea);\n\n\nexport {$216918bed6669f72$export$2dc6166a7e65358c as TextAreaContext, $216918bed6669f72$export$f5c9f3c2c4054eec as TextArea};\n//# sourceMappingURL=TextArea.module.js.map\n","import {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, removeDataAttributes as $64fa3d84918910a7$export$ef03459518577ad4, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3, useSlot as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, useSlottedContext as $64fa3d84918910a7$export$fabf2dc03a41866e} from \"./utils.mjs\";\nimport {FieldErrorContext as $ee014567cb39d3f0$export$ff05c3ac10437e03} from \"./FieldError.mjs\";\nimport {FormContext as $d3e0e05bdfcf66bd$export$c24727297075ec6a} from \"./Form.mjs\";\nimport {InputContext as $3985021b0ad6602f$export$37fb8590cf2c088c} from \"./Input.mjs\";\nimport {LabelContext as $01b77f81d0f07f68$export$75b6ee27786ba447} from \"./Label.mjs\";\nimport {TextAreaContext as $216918bed6669f72$export$2dc6166a7e65358c} from \"./TextArea.mjs\";\nimport {TextContext as $514c0188e459b4c0$export$9afb8bc826b033ea} from \"./Text.mjs\";\nimport {useTextField as $jmnGn$useTextField} from \"react-aria\";\nimport {filterDOMProps as $jmnGn$filterDOMProps} from \"@react-aria/utils\";\nimport $jmnGn$react, {createContext as $jmnGn$createContext, useRef as $jmnGn$useRef, useState as $jmnGn$useState, useCallback as $jmnGn$useCallback, forwardRef as $jmnGn$forwardRef} from \"react\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\n\n\n\n\n\nconst $bcdf0525bf22703d$export$2129e27b3ef0d483 = /*#__PURE__*/ (0, $jmnGn$createContext)(null);\nfunction $bcdf0525bf22703d$var$TextField(props, ref) {\n [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $bcdf0525bf22703d$export$2129e27b3ef0d483);\n let { validationBehavior: formValidationBehavior } = (0, $64fa3d84918910a7$export$fabf2dc03a41866e)((0, $d3e0e05bdfcf66bd$export$c24727297075ec6a)) || {};\n var _props_validationBehavior, _ref;\n let validationBehavior = (_ref = (_props_validationBehavior = props.validationBehavior) !== null && _props_validationBehavior !== void 0 ? _props_validationBehavior : formValidationBehavior) !== null && _ref !== void 0 ? _ref : 'native';\n let inputRef = (0, $jmnGn$useRef)(null);\n let [labelRef, label] = (0, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8)();\n let [inputElementType, setInputElementType] = (0, $jmnGn$useState)('input');\n let { labelProps: labelProps, inputProps: inputProps, descriptionProps: descriptionProps, errorMessageProps: errorMessageProps, ...validation } = (0, $jmnGn$useTextField)({\n ...(0, $64fa3d84918910a7$export$ef03459518577ad4)(props),\n inputElementType: inputElementType,\n label: label,\n validationBehavior: validationBehavior\n }, inputRef);\n // Intercept setting the input ref so we can determine what kind of element we have.\n // useTextField uses this to determine what props to include.\n let inputOrTextAreaRef = (0, $jmnGn$useCallback)((el)=>{\n inputRef.current = el;\n if (el) setInputElementType(el instanceof HTMLTextAreaElement ? 'textarea' : 'input');\n }, []);\n let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({\n ...props,\n values: {\n isDisabled: props.isDisabled || false,\n isInvalid: validation.isInvalid,\n isReadOnly: props.isReadOnly || false,\n isRequired: props.isRequired || false\n },\n defaultClassName: 'react-aria-TextField'\n });\n let DOMProps = (0, $jmnGn$filterDOMProps)(props);\n delete DOMProps.id;\n return /*#__PURE__*/ (0, $jmnGn$react).createElement(\"div\", {\n ...DOMProps,\n ...renderProps,\n ref: ref,\n slot: props.slot || undefined,\n \"data-disabled\": props.isDisabled || undefined,\n \"data-invalid\": validation.isInvalid || undefined,\n \"data-readonly\": props.isReadOnly || undefined,\n \"data-required\": props.isRequired || undefined\n }, /*#__PURE__*/ (0, $jmnGn$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {\n values: [\n [\n (0, $01b77f81d0f07f68$export$75b6ee27786ba447),\n {\n ...labelProps,\n ref: labelRef\n }\n ],\n [\n (0, $3985021b0ad6602f$export$37fb8590cf2c088c),\n {\n ...inputProps,\n ref: inputOrTextAreaRef\n }\n ],\n [\n (0, $216918bed6669f72$export$2dc6166a7e65358c),\n {\n ...inputProps,\n ref: inputOrTextAreaRef\n }\n ],\n [\n (0, $514c0188e459b4c0$export$9afb8bc826b033ea),\n {\n slots: {\n description: descriptionProps,\n errorMessage: errorMessageProps\n }\n }\n ],\n [\n (0, $ee014567cb39d3f0$export$ff05c3ac10437e03),\n validation\n ]\n ]\n }, renderProps.children));\n}\n/**\n * A text field allows a user to enter a plain text value with a keyboard.\n */ const $bcdf0525bf22703d$export$2c73285ae9390cec = /*#__PURE__*/ (0, $jmnGn$forwardRef)($bcdf0525bf22703d$var$TextField);\n\n\nexport {$bcdf0525bf22703d$export$2129e27b3ef0d483 as TextFieldContext, $bcdf0525bf22703d$export$2c73285ae9390cec as TextField};\n//# sourceMappingURL=TextField.module.js.map\n","import {useObjectRef as $iETbY$useObjectRef, mergeRefs as $iETbY$mergeRefs, mergeProps as $iETbY$mergeProps, useLayoutEffect as $iETbY$useLayoutEffect} from \"@react-aria/utils\";\nimport $iETbY$react, {useMemo as $iETbY$useMemo, useContext as $iETbY$useContext, useState as $iETbY$useState, useRef as $iETbY$useRef, useCallback as $iETbY$useCallback} from \"react\";\nimport $iETbY$reactdom from \"react-dom\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $64fa3d84918910a7$export$c62b8e45d58ddad9 = Symbol('default');\nfunction $64fa3d84918910a7$export$2881499e37b75b9a({ values: values, children: children }) {\n for (let [Context, value] of values)// @ts-ignore\n children = /*#__PURE__*/ (0, $iETbY$react).createElement(Context.Provider, {\n value: value\n }, children);\n return children;\n}\nfunction $64fa3d84918910a7$export$4d86445c2cf5e3(props) {\n let { className: className, style: style, children: children, defaultClassName: defaultClassName, defaultChildren: defaultChildren, defaultStyle: defaultStyle, values: values } = props;\n return (0, $iETbY$useMemo)(()=>{\n let computedClassName;\n let computedStyle;\n let computedChildren;\n if (typeof className === 'function') computedClassName = className({\n ...values,\n defaultClassName: defaultClassName\n });\n else computedClassName = className;\n if (typeof style === 'function') computedStyle = style({\n ...values,\n defaultStyle: defaultStyle || {}\n });\n else computedStyle = style;\n if (typeof children === 'function') computedChildren = children({\n ...values,\n defaultChildren: defaultChildren\n });\n else if (children == null) computedChildren = defaultChildren;\n else computedChildren = children;\n return {\n className: computedClassName !== null && computedClassName !== void 0 ? computedClassName : defaultClassName,\n style: computedStyle || defaultStyle ? {\n ...defaultStyle,\n ...computedStyle\n } : undefined,\n children: computedChildren !== null && computedChildren !== void 0 ? computedChildren : defaultChildren,\n 'data-rac': ''\n };\n }, [\n className,\n style,\n children,\n defaultClassName,\n defaultChildren,\n defaultStyle,\n values\n ]);\n}\nfunction $64fa3d84918910a7$export$c245e6201fed2f75(// https://stackoverflow.com/questions/60898079/typescript-type-t-or-function-t-usage\nvalue, wrap) {\n return (renderProps)=>wrap(typeof value === 'function' ? value(renderProps) : value, renderProps);\n}\nfunction $64fa3d84918910a7$export$fabf2dc03a41866e(context, slot) {\n let ctx = (0, $iETbY$useContext)(context);\n if (slot === null) // An explicit `null` slot means don't use context.\n return null;\n if (ctx && typeof ctx === 'object' && 'slots' in ctx && ctx.slots) {\n let availableSlots = new Intl.ListFormat().format(Object.keys(ctx.slots).map((p)=>`\"${p}\"`));\n if (!slot && !ctx.slots[$64fa3d84918910a7$export$c62b8e45d58ddad9]) throw new Error(`A slot prop is required. Valid slot names are ${availableSlots}.`);\n let slotKey = slot || $64fa3d84918910a7$export$c62b8e45d58ddad9;\n if (!ctx.slots[slotKey]) // @ts-ignore\n throw new Error(`Invalid slot \"${slot}\". Valid slot names are ${availableSlots}.`);\n return ctx.slots[slotKey];\n }\n // @ts-ignore\n return ctx;\n}\nfunction $64fa3d84918910a7$export$29f1550f4b0d4415(props, ref, context) {\n let ctx = $64fa3d84918910a7$export$fabf2dc03a41866e(context, props.slot) || {};\n // @ts-ignore - TS says \"Type 'unique symbol' cannot be used as an index type.\" but not sure why.\n let { ref: contextRef, ...contextProps } = ctx;\n let mergedRef = (0, $iETbY$useObjectRef)((0, $iETbY$useMemo)(()=>(0, $iETbY$mergeRefs)(ref, contextRef), [\n ref,\n contextRef\n ]));\n let mergedProps = (0, $iETbY$mergeProps)(contextProps, props);\n // mergeProps does not merge `style`. Adding this there might be a breaking change.\n if ('style' in contextProps && contextProps.style && 'style' in props && props.style) {\n if (typeof contextProps.style === 'function' || typeof props.style === 'function') // @ts-ignore\n mergedProps.style = (renderProps)=>{\n let contextStyle = typeof contextProps.style === 'function' ? contextProps.style(renderProps) : contextProps.style;\n let defaultStyle = {\n ...renderProps.defaultStyle,\n ...contextStyle\n };\n let style = typeof props.style === 'function' ? props.style({\n ...renderProps,\n defaultStyle: defaultStyle\n }) : props.style;\n return {\n ...defaultStyle,\n ...style\n };\n };\n else // @ts-ignore\n mergedProps.style = {\n ...contextProps.style,\n ...props.style\n };\n }\n return [\n mergedProps,\n mergedRef\n ];\n}\nfunction $64fa3d84918910a7$export$9d4c57ee4c6ffdd8() {\n // Assume we do have the slot in the initial render.\n let [hasSlot, setHasSlot] = (0, $iETbY$useState)(true);\n let hasRun = (0, $iETbY$useRef)(false);\n // A callback ref which will run when the slotted element mounts.\n // This should happen before the useLayoutEffect below.\n let ref = (0, $iETbY$useCallback)((el)=>{\n hasRun.current = true;\n setHasSlot(!!el);\n }, []);\n // If the callback hasn't been called, then reset to false.\n (0, $iETbY$useLayoutEffect)(()=>{\n if (!hasRun.current) setHasSlot(false);\n }, []);\n return [\n ref,\n hasSlot\n ];\n}\nfunction $64fa3d84918910a7$export$6d3443f2c48bfc20(ref, isReady = true) {\n let [isEntering, setEntering] = (0, $iETbY$useState)(true);\n $64fa3d84918910a7$var$useAnimation(ref, isEntering && isReady, (0, $iETbY$useCallback)(()=>setEntering(false), []));\n return isEntering && isReady;\n}\nfunction $64fa3d84918910a7$export$45fda7c47f93fd48(ref, isOpen) {\n // State to trigger a re-render after animation is complete, which causes the element to be removed from the DOM.\n // Ref to track the state we're in, so we don't immediately reset isExiting to true after the animation.\n let [isExiting, setExiting] = (0, $iETbY$useState)(false);\n let [exitState, setExitState] = (0, $iETbY$useState)('idle');\n // If isOpen becomes false, set isExiting to true.\n if (!isOpen && ref.current && exitState === 'idle') {\n isExiting = true;\n setExiting(true);\n setExitState('exiting');\n }\n // If we exited, and the element has been removed, reset exit state to idle.\n if (!ref.current && exitState === 'exited') setExitState('idle');\n $64fa3d84918910a7$var$useAnimation(ref, isExiting, (0, $iETbY$useCallback)(()=>{\n setExitState('exited');\n setExiting(false);\n }, []));\n return isExiting;\n}\nfunction $64fa3d84918910a7$var$useAnimation(ref, isActive, onEnd) {\n let prevAnimation = (0, $iETbY$useRef)(null);\n if (isActive && ref.current) // This is ok because we only read it in the layout effect below, immediately after the commit phase.\n // We could move this to another effect that runs every render, but this would be unnecessarily slow.\n // We only need the computed style right before the animation becomes active.\n // eslint-disable-next-line rulesdir/pure-render\n prevAnimation.current = window.getComputedStyle(ref.current).animation;\n (0, $iETbY$useLayoutEffect)(()=>{\n if (isActive && ref.current) {\n // Make sure there's actually an animation, and it wasn't there before we triggered the update.\n let computedStyle = window.getComputedStyle(ref.current);\n if (computedStyle.animationName && computedStyle.animationName !== 'none' && computedStyle.animation !== prevAnimation.current) {\n let onAnimationEnd = (e)=>{\n if (e.target === ref.current) {\n element.removeEventListener('animationend', onAnimationEnd);\n (0, $iETbY$reactdom).flushSync(()=>{\n onEnd();\n });\n }\n };\n let element = ref.current;\n element.addEventListener('animationend', onAnimationEnd);\n return ()=>{\n element.removeEventListener('animationend', onAnimationEnd);\n };\n } else onEnd();\n }\n }, [\n ref,\n isActive,\n onEnd\n ]);\n}\nfunction $64fa3d84918910a7$export$ef03459518577ad4(props) {\n const prefix = /^(data-.*)$/;\n let filteredProps = {};\n for(const prop in props)if (!prefix.test(prop)) filteredProps[prop] = props[prop];\n return filteredProps;\n}\n\n\nexport {$64fa3d84918910a7$export$c62b8e45d58ddad9 as DEFAULT_SLOT, $64fa3d84918910a7$export$2881499e37b75b9a as Provider, $64fa3d84918910a7$export$4d86445c2cf5e3 as useRenderProps, $64fa3d84918910a7$export$c245e6201fed2f75 as composeRenderProps, $64fa3d84918910a7$export$fabf2dc03a41866e as useSlottedContext, $64fa3d84918910a7$export$29f1550f4b0d4415 as useContextProps, $64fa3d84918910a7$export$9d4c57ee4c6ffdd8 as useSlot, $64fa3d84918910a7$export$6d3443f2c48bfc20 as useEnterAnimation, $64fa3d84918910a7$export$45fda7c47f93fd48 as useExitAnimation, $64fa3d84918910a7$export$ef03459518577ad4 as removeDataAttributes};\n//# sourceMappingURL=utils.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $5dc95899b306f630$export$c9058316764c140e(...refs) {\n if (refs.length === 1 && refs[0]) return refs[0];\n return (value)=>{\n for (let ref of refs){\n if (typeof ref === 'function') ref(value);\n else if (ref != null) ref.current = value;\n }\n };\n}\n\n\nexport {$5dc95899b306f630$export$c9058316764c140e as mergeRefs};\n//# sourceMappingURL=mergeRefs.module.js.map\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n if (data instanceof Date) {\n copy = new Date(data);\n }\n else if (data instanceof Set) {\n copy = new Set(data);\n }\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))) {\n copy = isArray ? [] : {};\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n }\n else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n }\n else {\n return data;\n }\n return copy;\n}\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\nconst HookFormContext = React.createContext(null);\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, ...data } = props;\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\n const _props = React.useRef(props);\n _props.current = props;\n React.useEffect(() => {\n const subscription = !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _mounted = React.useRef(true);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n next: (value) => _mounted.current &&\n shouldSubscribeByName(_name.current, value.name, exact) &&\n shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) &&\n updateFormState({\n ...control._formState,\n ...value,\n }),\n subject: control._subjects.state,\n });\n React.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n return getProxyFormState(formState, control, _localProxyFormState.current, false);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: (formState) => {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n }\n },\n });\n const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const { name, disabled, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n exact: true,\n });\n const formState = useFormState({\n control,\n name,\n exact: true,\n });\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n if (get(control._fields, name)) {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name,\n value: get(control._fields, name)._f.value,\n });\n }\n }, [disabled, name, control]);\n return {\n field: {\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange: React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]),\n onBlur: React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control]),\n ref: React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: (message) => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n }, [control._fields, name]),\n },\n formState,\n fieldState: Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }),\n };\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n for (const name of control._names.mount) {\n formData.append(name, get(data, name));\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(action, {\n method,\n headers: {\n ...headers,\n ...(encType ? { 'Content-Type': encType } : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar generateId = () => {\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMessage = (value) => isString(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n props.rules &&\n control.register(name, props.rules);\n useSubscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get(values, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array,\n });\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted)) {\n if (control._options.resolver) {\n control._executeSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.values.next({\n name,\n values: { ...control._formValues },\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._updateFieldArray(name);\n return () => {\n (control._options.shouldUnregister || shouldUnregister) &&\n control.unregister(name);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n }\n else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n if (isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n }\n else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => (!fieldReference || !fieldReference.validate) &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _updateValid = async (shouldUpdateValid) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if (_proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && _updateValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n const disabledField = !!(get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled);\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _executeSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _executeSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n const fieldError = await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!fieldValue.find((data) => data === checkboxRef.value)\n : fieldValue === checkboxRef.value))\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid) {\n if (props.mode === 'onBlur') {\n if (isBlurEvent) {\n _updateValid();\n }\n }\n else {\n _updateValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) => name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.values.next({\n values: { ..._formValues },\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _updateValid();\n };\n const _updateDisabledField = ({ disabled, name, field, fields, value, }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(props.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _updateDisabledField({\n field,\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : props.disabled,\n name,\n value: options.value,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || props.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n _fields = {};\n }\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.values.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n _state.watch = !!props.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n const _updateFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef();\n const _values = React.useRef();\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n const control = _formControl.current.control;\n control._options = props;\n useSubscribe({\n subject: control._subjects.state,\n next: (value) => {\n if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n updateFormState({ ...control._formState });\n }\n },\n });\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\n\nexport { Controller, Form, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst observerMap = new Map();\nconst RootIds = new WeakMap();\nlet rootId = 0;\nlet unsupportedValue = undefined;\n/**\r\n * What should be the default behavior if the IntersectionObserver is unsupported?\r\n * Ideally the polyfill has been loaded, you can have the following happen:\r\n * - `undefined`: Throw an error\r\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\r\n * **/\n\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\n/**\r\n * Generate a unique ID for the root element\r\n * @param root\r\n */\n\nfunction getRootId(root) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n/**\r\n * Convert the options to a string Id, based on the values.\r\n * Ensures we can reuse the same observer when observing elements with the same options.\r\n * @param options\r\n */\n\n\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(key => options[key] !== undefined).map(key => {\n return `${key}_${key === 'root' ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\n\nfunction createObserver(options) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map();\n let thresholds;\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n var _elements$get;\n\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView = entry.isIntersecting && thresholds.some(threshold => entry.intersectionRatio >= threshold); // @ts-ignore support IntersectionObserver v2\n\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n (_elements$get = elements.get(entry.target)) == null ? void 0 : _elements$get.forEach(callback => {\n callback(inView, entry);\n });\n });\n }, options); // Ensure we have a valid thresholds array. If not, use the threshold from the options\n\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n/**\r\n * @param element - DOM Element to observe\r\n * @param callback - Callback function to trigger when intersection status changes\r\n * @param options - Intersection Observer options\r\n * @param fallbackInView - Fallback inView value.\r\n * @return Function - Cleanup function that should be triggered to unregister the observer\r\n */\n\n\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === 'undefined' && fallbackInView !== undefined) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {// Nothing to cleanup\n };\n } // An observer with the same options can be reused, so lets use this fact\n\n\n const {\n id,\n observer,\n elements\n } = createObserver(options); // Register the callback listener for this element\n\n let callbacks = elements.get(element) || [];\n\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\nconst _excluded = [\"children\", \"as\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\", \"onChange\", \"skip\", \"trackVisibility\", \"delay\", \"initialInView\", \"fallbackInView\"];\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\r\n ## Render props\r\n\n To use the `<InView>` component, you pass it a function. It will be called\r\n whenever the state changes, with the new value of `inView`. In addition to the\r\n `inView` prop, children also receive a `ref` that should be set on the\r\n containing DOM element. This is the element that the IntersectionObserver will\r\n monitor.\r\n\n If you need it, you can also access the\r\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\r\n on `entry`, giving you access to all the details about the current intersection\r\n state.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n <InView>\r\n {({ inView, ref, entry }) => (\r\n <div ref={ref}>\r\n <h2>{`Header inside viewport ${inView}.`}</h2>\r\n </div>\r\n )}\r\n </InView>\r\n );\r\n\n export default Component;\r\n ```\r\n\n ## Plain children\r\n\n You can pass any element to the `<InView />`, and it will handle creating the\r\n wrapping DOM element. Add a handler to the `onChange` method, and control the\r\n state in your own component. Any extra props you add to `<InView>` will be\r\n passed to the HTML element, allowing you set the `className`, `style`, etc.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n <InView as=\"div\" onChange={(inView, entry) => console.log('Inview:', inView)}>\r\n <h2>Plain children are always rendered. Use onChange to monitor state.</h2>\r\n </InView>\r\n );\r\n\n export default Component;\r\n ```\r\n */\n\n\nclass InView extends React.Component {\n constructor(props) {\n super(props);\n this.node = null;\n this._unobserveCb = null;\n\n this.handleNode = node => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({\n inView: !!this.props.initialInView,\n entry: undefined\n });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n this.handleChange = (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({\n inView,\n entry\n });\n }\n\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n this.state = {\n inView: !!props.initialInView,\n entry: undefined\n };\n }\n\n componentDidUpdate(prevProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(this.node, this.handleChange, {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n }, fallbackInView);\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n\n this._unobserveCb = null;\n }\n }\n\n render() {\n if (!isPlainChildren(this.props)) {\n const {\n inView,\n entry\n } = this.state;\n return this.props.children({\n inView,\n entry,\n ref: this.handleNode\n });\n }\n\n const _this$props = this.props,\n {\n children,\n as\n } = _this$props,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n return React.createElement(as || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n }\n\n}\n\n/**\r\n * React Hooks make it easy to monitor the `inView` state of your components. Call\r\n * the `useInView` hook with the (optional) [options](#options) you need. It will\r\n * return an array containing a `ref`, the `inView` status and the current\r\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\r\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\r\n * report the status.\r\n *\r\n * @example\r\n * ```jsx\r\n * import React from 'react';\r\n * import { useInView } from 'react-intersection-observer';\r\n *\r\n * const Component = () => {\r\n * const { ref, inView, entry } = useInView({\r\n * threshold: 0,\r\n * });\r\n *\r\n * return (\r\n * <div ref={ref}>\r\n * <h2>{`Header inside viewport ${inView}.`}</h2>\r\n * </div>\r\n * );\r\n * };\r\n * ```\r\n */\n\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _state$entry;\n\n const [ref, setRef] = React.useState(null);\n const callback = React.useRef();\n const [state, setState] = React.useState({\n inView: !!initialInView,\n entry: undefined\n }); // Store the onChange callback in a `ref`, so we can access the latest instance\n // inside the `useEffect`, but without triggering a rerender.\n\n callback.current = onChange;\n React.useEffect(() => {\n // Ensure we have node ref, and that we shouldn't skip observing\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(ref, (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n\n if (entry.isIntersecting && triggerOnce && unobserve) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve();\n unobserve = undefined;\n }\n }, {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n }, fallbackInView);\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n }, // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [// If the threshold is an array, convert it to a string, so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold, ref, root, rootMargin, triggerOnce, skip, trackVisibility, fallbackInView, delay]);\n const entryTarget = (_state$entry = state.entry) == null ? void 0 : _state$entry.target;\n const previousEntryTarget = React.useRef();\n\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n // If we don't have a node ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: undefined\n });\n }\n\n const result = [setRef, state.inView, state.entry]; // Support object destructuring, by adding the specific values.\n\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\nexport { InView, defaultFallbackInView, observe, useInView };\n//# sourceMappingURL=react-intersection-observer.modern.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n"],"names":["randomUUID","crypto","bind","getRandomValues","rnds8","Uint8Array","rng","Error","byteToHex","i","push","toString","slice","options","buf","offset","rnds","random","arr","unsafeStringify","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","code","ids","id","all","keys","Object","module","exports","SeverityLevel","createThunkMiddleware","extraArgument","_ref","dispatch","getState","next","action","thunk","withExtraArgument","extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","TypeError","String","__","this","constructor","create","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","done","value","pop","length","step","__spreadArray","to","from","il","j","__defProp","defineProperty","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","key","enumerable","configurable","writable","__spreadValues","a","prop","_i","_c","__spreadProps","__async","__this","__arguments","generator","reject","fulfilled","rejected","throw","x","apply","createDraftSafeSelector","args","arguments","selector","rest","composeWithDevTools","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","isPlainObject","proto","getPrototypeOf","baseProto","__REDUX_DEVTOOLS_EXTENSION__","MiddlewareArray","_super","_this","species","get","concat","prepend","isArray","EnhancerArray","freezeDraftable","val","IS_PRODUCTION","configureStore","rootReducer","curriedGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","getDefaultMiddleware","_d","reducer","_e","middleware","_f","devTools","_g","preloadedState","_h","enhancers","finalMiddleware","some","item","middlewareEnhancer","finalCompose","trace","defaultEnhancers","storeEnhancers","composedEnhancer","createAction","type","prepareAction","actionCreator","prepared","payload","meta","error","match","isAction","isValidKey","indexOf","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createReducer","initialState","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","frozenInitialState_1","state","caseReducers","filter","cr","reduce","previousState","caseReducer","result","draft","createSlice","name","_reducer","reducers","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","actionMatchers_1","m","forEach","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","createStateOperator","mutator","arg","runMutator","every","selectIdValue","entity","selectId","ensureEntitiesArray","entities","values","splitAddedUpdatedEntities","newEntities","added","updated","newEntities_1","changes","createUnsortedStateAdapter","addOneMutably","addManyMutably","newEntities_2","setOneMutably","removeManyMutably","didMutate","updateManyMutably","updates","newKeys","updatesPerEntity","update","didMutateIds","original2","assign","newKey","hasNewKey","takeNewKey","upsertManyMutably","removeAll","operator","addOne","addMany","setOne","setMany","newEntities_3","setAll","updateOne","updateMany","upsertOne","upsertMany","removeOne","removeMany","createEntityAdapter","sortComparer","instance","stateFactory","additionalState","selectorsFactory","getSelectors","selectState","selectIds","selectEntities","selectAll","selectById","selectTotal","selectGlobalizedEntities","stateAdapter","sort","models","model","merge","setManyMutably","appliedUpdates","updates_1","newId","resortEntities","allEntities","newSortedIds","areArraysEqual","createSortedStateAdapter","nanoid","size","Math","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","property","message","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","requestId","requestStatus","pending","serializeError","rejectedWithValue","aborted","condition","AC","AbortController","class_1","signal","addEventListener","dispatchEvent","onabort","removeEventListener","reason","throwIfAborted","abort","extra","abortReason","idGenerator","abortController","promise2","_a","_b","finalAction","conditionResult","abortedPromise","err_1","isThenable","getPendingMeta","race","rejectWithValue","fulfillWithValue","dispatchConditionRejection","unwrap","unwrapResult","withTypes","assertFunction","func","expected","noop","catchRejection","onError","catch","addAbortSignalListener","abortSignal","callback","once","abortControllerWithReason","listener","completed","cancelled","taskCancelled","taskCompleted","listenerCancelled","listenerCompleted","TaskAbortError","task","validateActive","raceWithSignal","cleanup","notifyRejection","finally","createPause","output","createDelay","pause","timeoutMs","setTimeout","INTERNAL_NIL_TOKEN","alm","createFork","parentAbortSignal","taskExecutor","controller","childAbortController","task2","cleanUp","result2","delay","error_1","status","cancel","createTakePattern","startListening","predicate","timeout","unsubscribe","tuplePromise","promises","stopListening","effect","listenerApi","getOriginalState","take","getListenerEntryPropsFrom","createListenerEntry","Set","cancelActiveListeners","entry","createClearListenerMiddleware","listenerMap","clear","safelyNotifyError","errorHandler","errorToNotify","errorInfo","errorHandlerError","addListener","clearAllListeners","removeListener","defaultErrorHandler","console","createListenerMiddleware","middlewareOptions","Map","findListenerEntry","comparator","existingEntry","delete","set","cancelOptions","cancelActive","insertEntry","entry2","notifyListener","api","internalTaskController","listenerError_1","add","Boolean","fork","subscribe","raisedBy","clearListenerMiddleware","originalState","currentState","listenerEntries","listenerEntries_1","runListener","predicateError","clearListeners","queueMicrotask","globalThis","requestAnimationFrame","_extends","r","title","titleId","props","width","height","viewBox","xmlns","_path","fillRule","clipRule","_path2","_path3","_path4","__assign","s","DefaultOptions","_args","onlyResolvesLast","DebounceCache","config","debounceSingleton","debounceCache","_createDebouncedFunction","asyncFunction","cancelPrevious","debouncedFunc","wait","promiseArg","wrappedPromise","_resolve","_reject","promise","getDebouncedFunction","finalOptions","getTimezoneOffsetInMilliseconds","date","utcDate","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","getTime","requiredArgs","required","toInteger","dirtyNumber","NaN","number","Number","isNaN","ceil","floor","addDays","dirtyDate","dirtyAmount","amount","setDate","addMilliseconds","timestamp","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","setFullYear","addSeconds","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","diff","pow","millisecondsInMinute","millisecondsInHour","differenceInMonths","toDate","sign","difference","abs","differenceInCalendarMonths","isLastMonthNotFull","setHours","endOfDay","month","endOfMonth","isLastDayOfMonth","startOfUTCISOWeek","day","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","token","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","quarter","context","q","M","L","w","week","firstWeek","startOfUTCWeekYear","round","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","setUTCMonth","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","toLowerCase","hours","B","h","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","time","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","replace","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","input","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","formats","full","long","medium","short","defaultWidth","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_options","rem100","buildLocalizeFn","narrow","abbreviated","wide","argumentCallback","am","pm","midnight","noon","morning","afternoon","evening","night","formattingValues","defaultFormattingWidth","formatDistance","count","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","matchPattern","parsePattern","valueCallback","parseInt","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","any","defaultParseWidth","index","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isDate","isValid","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","join","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","duration","years","months","weeks","days","seconds","dateWithMonths","dateWithDays","msToAdd","MILLISECONDS_IN_DAY","compareLocalAsc","differenceInMilliseconds","roundingMap","trunc","defaultRoundingMethod","getRoundingMethod","method","intervalToDuration","interval","start","end","differenceInCalendarYears","isLastYearNotFull","differenceInYears","remainingMonths","remainingDays","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarDays","differenceInDays","remainingHours","roundingMethod","differenceInHours","remainingMinutes","differenceInMinutes","remainingSeconds","differenceInSeconds","isBefore","dirtyDateToCompare","dateToCompare","undefined","dirtyIndex","valuesArray","_defaultWidth","_width","string","matchedString","array","test","findIndex","object","findKey","buildMatchPatternFn","parseResult","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","dateString","timeString","split","patterns","dateTimeDelimiter","timeZoneDelimiter","substr","timezone","exec","splitDateString","parseYearResult","regex","RegExp","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","max","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","parseFloat","argStr","warn","stack","fn","lastCallAt","deferred","timer","pendingArgs","currentWait","getWait","currentTime","isCold","_len","_key","leading","accumulate","clearTimeout","defer","flush","argsIndex","results","thisDeferred","_typeof","_defineProperties","_toPropertyKey","_isNativeReflectConstruct","valueOf","Reflect","construct","_getPrototypeOf","_setPrototypeOf","toPrimitive","_toPrimitive","React","PropTypes","createFocusTrap","isFocusable","FocusTrap","_React$Component","_classCallCheck","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_callSuper","optionName","_this$internalOptions","optionValue","internalOptions","originalOptions","params","_this$getDocument","node","getDocument","querySelector","handleDeactivate","handlePostDeactivate","handleClickOutsideDeactivates","returnFocusOnDeactivate","checkCanReturnFocus","onDeactivate","onPostDeactivate","clickOutsideDeactivates","focusTrapOptions","outsideClick","focusTrapElements","containerElements","updatePreviousElement","_inherits","document","getNodeForOption","previouslyFocusedElement","currentDocument","activeElement","focusTrap","active","deactivate","returnFocus","event","allowDeactivation","target","deactivateTrap","_this2","finishDeactivation","returnFocusNode","getReturnFocusNode","canReturnFocus","focus","tabbableOptions","_this2$internalOption","preventScroll","activate","paused","_createFocusTrap","setupFocusTrap","prevProps","updateContainerElements","hasActivated","hasDeactivated","hasPaused","hasUnpaused","unpause","_this3","child","children","Children","only","Fragment","cloneElement","ref","element","current","Component","ElementType","Element","Function","propTypes","bool","shape","onActivate","onPostActivate","checkCanFocusTrap","onPause","onPostPause","onUnpause","onPostUnpause","initialFocus","oneOfType","instanceOf","fallbackFocus","escapeDeactivates","setReturnFocus","allowOutsideClick","displayCheck","oneOf","getShadowRoot","trapStack","isKeyForward","isKeyBackward","arrayOf","defaultProps","_defineProperty","ownKeys","getOwnPropertyDescriptor","_objectSpread2","isTabEvent","keyCode","shiftKey","idx","valueOrHandler","getActualTarget","shadowRoot","composedPath","internalTrapStack","elements","userOptions","trap","doc","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","delayInitialFocusTimer","recentNavEvent","getOption","configOverrideOptions","configOptionName","findContainerIndex","container","tabbableNodes","contains","includes","find","_len2","_key2","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","tabbable","focusableNodes","focusable","lastTabbableNode","firstDomTabbableNode","isTabbable","lastDomTabbableNode","reverse","posTabIndexesFound","getTabIndex","nextTabbableNode","forward","nodeIdx","el","group","_getActiveElement","_tryFocus","tagName","select","isSelectableInput","previousActiveElement","findNextNavNode","_ref2$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_destinationGroupIndex","_destinationGroup","checkPointerDown","preventDefault","checkFocusIn","targetContained","Document","nextNode","stopImmediatePropagation","navAcrossContainers","mruContainerIdx","mruTabIdx","checkTabKey","checkKeyNav","checkEscapeKey","checkClick","addListeners","activeTrap","trapIndex","splice","activeFocusTraps","capture","passive","removeListeners","mutationObserver","MutationObserver","mutations","mutation","removedNodes","updateObservedNodes","disconnect","observe","subtree","childList","activateOptions","finishActivation","deactivateOptions","pauseOptions","unpauseOptions","elementsAsArray","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","for","l","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","propIsEnumerable","test1","test2","fromCharCode","test3","letter","err","shouldUseNative","source","symbols","toObject","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","symbol","elementType","objectOf","exact","checkPropTypes","asyncIterator","createElement","useLayoutEffect","useEffect","InitialAsyncState","loading","InitialAsyncLoadingState","executeOnMount","executeOnUpdate","setLoading","_asyncState","setResult","setError","onSuccess","useAsyncInternal","normalizedOptions","normalizeOptions","_useState2","useState","currentParams","setCurrentParams","AsyncState","_useState","setValue","reset","useCallback","useAsyncState","isMounted","useRef","CurrentPromise","is","useCurrentPromise","shouldHandlePromise","executeAsyncOperation","isCurrent","syncResult","isMounting","execute","currentPromise","useAsync","useAsyncAbortable","abortControllerRef","finalizer","_finallyRethrows","_wasThrown","_result","useAsyncCallback","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","toUpperCase","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","trim","Na","Oa","prepareStackTrace","Pa","tag","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","charAt","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","datetime","email","password","range","search","tel","text","url","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","has","pf","qf","rf","sf","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","lh","mh","eventTime","lane","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","N","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","hi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useContext","useImperativeHandle","useInsertionEffect","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","mk","nk","ok","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","entries","clock","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","createClass","Constructor","protoProps","staticProps","objectWithoutProperties","encodeSpecialCharacters","str","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","tags","headElement","head","tagNodes","indexToDelete","newElement","styleSheet","cssText","existingTag","isEqualNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","noscript","script","HelmetSideEffects","HelmetExport","HelmetWrapper","classCallCheck","self","possibleConstructorReturn","subClass","superClass","inherits","nextProps","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","canUseDOM","defaultTitle","titleTemplate","peek","rewind","mappedState","renderStatic","default","srcList","imgPromise","decode","useSuspense","isLoading","crossOrigin","Image","onload","onerror","Img","loader","unloader","loaderContainer","unloaderContainer","crossorigin","useImage","batch","getBatch","ContextKey","gT","getContext","_gT$ContextKey","contextMap","realContext","createReduxContextHook","useSyncExternalStoreWithSelector","refEquality","createSelectorHook","useReduxContext","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","store","subscription","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","addNestedSub","useSelector","nullListeners","notify","serverState","contextValue","parentSub","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","first","isSubscribed","prev","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","Context","Provider","createStoreHook","createDispatchHook","useStore","useDispatch","newBatch","initializeConnect","__WEBPACK_EXTERNAL_MODULE_1__","modules","moduleId","installedModules","getter","__esModule","_slicedToArray","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","len","arr2","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery__","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default","__WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default","__WEBPACK_IMPORTED_MODULE_4__toQuery__","__WEBPACK_IMPORTED_MODULE_5__Context__","hyphenateKeys","useIsUpdate","useQuery","settings","getQuery","query","makeQuery","_React$useState4","setQuery","newQuery","device","onChange","deviceSettings","deviceFromProps","deviceFromContext","getDevice","_React$useState2","setDevice","newDevice","useDevice","mq","getMatchMedia","_React$useState6","setMq","isUpdate","dispose","useMatchMedia","matches","mediaQuery","_React$useState8","setMatches","updateMatches","useMatches","toHyphenLower","uppercasePattern","msPattern","hName","__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_1__mediaQuery__","rules","realKey","keyVal","createContext","__WEBPACK_IMPORTED_MODULE_0__useMediaQuery__","__WEBPACK_IMPORTED_MODULE_1__Component__","__WEBPACK_IMPORTED_MODULE_2__toQuery__","__WEBPACK_IMPORTED_MODULE_3__Context__","Mql","forceStatic","evt","media","dynamicMatch","mql","staticMatch","matchMedia","parseQuery","RE_MEDIA_QUERY","modifier","expressions","parsed","inverse","expression","RE_MQ_EXPRESSION","feature","RE_MQ_FEATURE","toDecimal","ratio","numbers","decimal","toDpi","resolution","RE_RESOLUTION_UNIT","toPx","RE_LENGTH_UNIT","typeMatch","expressionsMatch","expValue","parse","objA","objB","aKeys","bKeys","enumerableOnly","sym","_objectSpread","__WEBPACK_IMPORTED_MODULE_0_prop_types__","__WEBPACK_IMPORTED_MODULE_0_prop_types___default","stringOrNumber","matchers","orientation","scan","deviceAspectRatio","deviceHeight","deviceWidth","colorIndex","monochrome","features","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minWidth","maxWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","types","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","ReactIs","REACT_ELEMENT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FRAGMENT_TYPE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","$$typeofType","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_LAZY_TYPE","REACT_MEMO_TYPE","REACT_PROVIDER_TYPE","REACT_PORTAL_TYPE","hasSymbol","REACT_SUSPENSE_LIST_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","hasWarnedAboutDeprecatedIsAsyncMode","emptyFunctionThatReturnsNull","printWarning","isValidElement","throwOnDirectAccess","PropTypeError","createChainableTypeChecker","validate","checkType","ANONYMOUS","cacheKey","manualPropTypeCallCache","manualPropTypeWarningCount","chainedCheckType","createPrimitiveTypeChecker","expectedType","propValue","getPropType","getPreciseType","isNode","iteratorFn","maybeIterable","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","propType","isSymbol","getPostfixForTypeWarning","typeChecker","expectedClass","expectedClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","shapeTypes","allKeys","typeSpecs","getStack","typeSpecName","ex","loggedTypeFailures","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","createSearchParams","init","URLSearchParams","memo","_excluded","_excluded2","__reactRouterVersion","ViewTransitionContext","isTransitioning","startTransitionImpl","BrowserRouter","basename","future","historyRef","v5Compat","history","setStateImpl","v7_startTransition","setState","listen","navigationType","navigator","isBrowser","ABSOLUTE_URL_REGEX","Link","absoluteHref","relative","reloadDocument","preventScrollReset","unstable_viewTransition","isExternal","currentUrl","URL","targetUrl","startsWith","protocol","path","pathname","origin","hash","internalOnClick","replaceProp","navigate","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","_ref8","ariaCurrentProp","caseSensitive","className","classNameProp","styleProp","routerState","opts","vtContext","ctx","useDataRouterContext","DataRouterHook","useViewTransitionState","currentPath","currentLocation","nextPath","nextLocation","toPathname","encodeLocation","locationPathname","nextLocationPathname","navigation","endSlashPosition","endsWith","isActive","isPending","renderProps","ariaCurrent","DataRouterStateHook","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","searchParams","locationSearch","defaultSearchParams","getAll","append","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams","Action","PopStateEventType","createBrowserHistory","getLocation","createHref","validateLocation","globalHistory","Pop","getIndex","handlePop","nextIndex","delta","createURL","createPath","invariant","replaceState","Push","createLocation","historyState","getHistoryState","pushState","DOMException","Replace","go","getUrlBasedHistory","usr","warning","cond","parsePath","parsedPath","hashIndex","searchIndex","ResultType","matchRoutes","routes","locationArg","allowPartial","stripBasename","branches","flattenRoutes","score","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","matchRoutesImpl","parentsMeta","parentPath","flattenRoute","route","relativePath","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","compiledParams","regexpSource","paramName","compilePath","captureGroups","splatValue","decodeURIComponent","startIndex","nextChar","getInvalidPathError","field","dest","getResolveToMatches","v7_relativeSplatPath","pathMatches","getPathContributingMatches","resolveTo","toArg","routePathnames","isPathRelative","isEmptyPath","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","AbortedDeferredError","isRouteErrorResponse","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useHref","useInRouterContext","useResolvedPath","joinedPathname","useLocation","useMatch","useIsomorphicLayoutEffect","static","useNavigate","router","UseNavigateStable","useCurrentRouteId","activeRef","fromRouteId","useNavigateStable","dataRouterContext","routePathnamesJson","useNavigateUnstable","OutletContext","useParams","routeMatch","_temp2","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","lazy","reduceRight","shouldRenderHydrateFallback","errorElement","defaultErrorElement","alreadyWarned","getChildren","RenderedRoute","routeContext","ErrorBoundary","RenderErrorBoundary","revalidation","_renderMatches","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","useRouteError","preStyles","padding","backgroundColor","fontStyle","super","staticContext","_deepestRenderedBoundaryId","hookName","useRouteContext","thisRoute","Navigate","isStatic","jsonPath","Outlet","useOutlet","Route","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","json_ld_1","JsonLd","helmetJsonLdProp","jsonLdScriptProps","safeJsonLdReplacer","space","ESCAPE_ENTITIES","freeze","ESCAPE_REGEX","ESCAPE_REPLACER","React__default","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","_proto","PureComponent","getDisplayName","_inheritsLoose","replaceClassName","origClass","classToRemove","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","nextState","setNextCallback","_this4","handler","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","removeClass","classes","classList","remove","baseVal","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","hasClass","_addClass","_this$appliedClasses$","__self","__source","jsx","jsxs","forceUpdate","escape","_status","toArray","act","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","startTransition","unstable_act","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","equals","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","createCacheKeyComparator","put","getEntries","cacheIndex","createLruCache","memoized","matchingEntry","clearCache","createSelectorCreator","memoize","memoizeOptionsFromArgs","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dep","dependencyTypes","getDependencies","memoizedResultFunc","lastResult","recomputations","resetRecomputations","createSelector","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","candidateSelectors","candidateSelector","NoElement","msMatchesSelector","webkitMatchesSelector","getRootNode","_element$getRootNode","isInert","lookUp","_node$getAttribute","inertAtt","getCandidates","includeContainer","candidates","getCandidatesIteratively","elementsToCheck","assigned","assignedElements","nestedCandidates","flatten","scopeParent","validShadowRoot","shadowRootFilter","_nestedCandidates","hasTabIndex","tabIndex","_node$getAttribute2","attValue","isContentEditable","sortOrderedTabbables","documentOrder","isInput","isZeroArea","_node$getBoundingClie","getBoundingClientRect","isNodeMatchingSelectorFocusable","isHiddenInput","getComputedStyle","visibility","nodeUnderDetails","parentElement","originalNode","rootNode","assignedSlot","host","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","nodeRoot","nodeRootHost","attached","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isNodeAttached","getClientRects","isDetailsWithSummary","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isRadio","radioSet","radioScope","queryRadios","CSS","nodes","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","isScope","candidateTabindex","getSortOrderTabIndex","acc","sortable","focusableCandidateSelector","ApiProductAttributeIds","AnalyticsHandler","initialize","interactionClickWithoutCustomerSegment","nonInteractionUserEvent","emptyCart","voucherInteraction","deliveryInfo","adaptWithLoginStatus","gaEvent","loginStatus","AnalyticsHelper","getLoginStatus","interactionEvent","eventCategory","eventAction","eventLabel","filterCombination","additionalData","analyticsData","eventCallback","dataLayer","pointShopPoints","utbud","dimension23","campaignCode","checkoutStep","isMember","coopUserSettings","isMedmeraCustomer","isLoggedIn","isAuthenticated","getLocalOrGlobalProductString","productAttributeIds","LocalProduct","appConfig","coopSettings","strShimObject","strShimHasOwnProperty","ObjAssign","_cachedGlobal","getGlobal","useCached","objCreateFn","tmpFunc","__assignFn","extendStaticsFn","__extendsFn","__spreadArrayFn","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","strUseBaseInst","strSetInstFuncs","Obj","_objGetPrototypeOf","_dynamicNames","_hasOwnProperty","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","_forEachProp","getOwnProps","name_1","lp","_isDynamicCandidate","funcName","skipOwn","_throwTypeError","_hasVisited","_populatePrototype","baseInstFuncs","setInstanceFunc","instFuncTable","instFuncs_1","dynProtoProxy","instFunc","currentDynProtoProxy","canAddInst","objProto","visited","protoFunc","_getInstFunc","_getProtoFunc","_createDynamicPrototype","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_instFuncProxy","funcHost","theFunc","_getBaseFuncs","setInstFuncs","LoggingSeverity","_InternalMessageId","strAttachEvent","strAddEventHelper","strToISOString","cStrEndsWith","strIndexOf","strReduce","cStrTrim","strToString","_objDefineProperty","_objKeys","seal","StringProto","_strTrim","_strEndsWith","_dataToISOString","_isArray","_objToString","rCamelCase","rNormalizeInvalid","rLeadingNumeric","isUndefined","isNullOrUndefined","isNotNullOrUndefined","isObject","isFunction","eventNameWithoutOn","handlerRef","useCapture","objForEachKey","callbackfn","strContains","isError","isNumber","toISOString","pad","num","toFixed","_toISOStringPoly","arrForEach","searchElement","fromIndex","arrMap","strTrim","_objKeysHasDontEnumBug","_objKeysDontEnums","objKeys","objType","dontEnumsLength","objDefineAccessors","getProp","setProp","dateNow","dt","getExceptionName","valChk","srcChk","theValue","getSetValue","defValue","isNotTruthy","isTruthy","throwError","optimizeObject","theObject","strWindow","strJSON","strMsie","strTrident","_isTrident","_navUserAgentCheck","_useXDomainRequest","_beaconsSupported","_hasProperty","supported","getGlobalInst","gbl","hasWindow","getWindow","hasDocument","hasNavigator","getNavigator","checkForMock","getPerformance","hasJSON","getJSON","isIE","nav","userAgent","getIEVersion","userAgentStr","navigator_1","tridentVer","dumpObj","objectTypeDump","propertyValueDump","isBeaconsSupported","sendBeacon","isFetchSupported","withKeepAlive","isSupported","request","useXDomainRequest","XDomainRequest","isXhrSupported","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","dbgExt","getDebugExt","ns","disableDbgExt","_sanitizeDiagnosticText","_logToConsole","theConsole","logFunc","_InternalLogMessage","msgId","isUserAct","properties","_self","messageId","strProps","diagnosticText","dataType","safeGetLogger","core","logger","DiagnosticLogger","identifier","_messageCount","_messageLogged","_getConfigValue","_debugExtMsg","diagLog","consoleLoggingLevel","telemetryLoggingLevel","maxInternalMessageLimit","enableDebugExceptions","throwInternal","severity","CRITICAL","logLevel","messageKey","logInternalMessage","warnToConsole","errorToConsole","resetInternalMessageCount","logMessage","throttleLimitMessage","throttleMessage","strExecutionContextKey","PerfEvent","payloadDetails","isAsync","theDetails_1","accessorDefined","isChildEvt","getCtx","ParentContextKey","ChildrenContextKey","setCtx","complete","childTime","childEvts","childEvt","exTime","PerfManager","manager","fire","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","details","perfMgr","perfEvt","currentActive","TelemetryPluginChain","plugin","defItemCtx","_nextProxy","_hasProcessTelemetry","processTelemetry","_hasSetNext","setNextPlugin","_hasRun","getPlugin","getNext","setNext","nextPlugin","env","itemCtx","hasRun","_createProxyChain","plugins","proxies","lastProxy","thePlugin","newProxy","ProcessTelemetryContext","startAt","proxy","_copyProxyChain","srcPlugins","_copyPluginChain","getCfg","getExtCfg","theConfig","extConfig","extensionConfig","getConfig","hasNext","processNext","createNew","strExtensionConfig","strGetPlugin","BaseTelemetryPlugin","_isinitialized","_rootCtx","_nextPlugin","_getTelCtx","isInitialized","setInitialized","currentCtx","rootCtx","_baseTelInit","extensions","pluginChain","getProcessTelContext","initializePlugins","processContext","initPlugins","lastPlugin","sortPlugins","extA","extB","bHasProcess","ChannelController","_channelQueue","_addChannelQueue","queueItem","_checkQueuePriority","_base","queues","getChannelControls","channels","extensionQueue_1","_createChannelQueues","_staticInit","strToGMTString","strToUTCString","strCookie","strExpires","strEnabled","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","strEmpty","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_isMgrEnabled","cookieMgr","isEnabled","safeGetCookieMgr","getCookieMgr","cookieCfg","createCookieMgr","inst","_gblCookieMgr","rootConfig","cookieMgrConfig","cookieMgrCfg","cookieDomain","cookiePath","cookieEnabled","_createCookieMgrConfig","_domain","domain","_enabled","enabled","areCookiesSupported","gblManager","setEnabled","maxAgeSec","_extractParts","_isIE","expireMs","expiry","setTime","_formatDate","location_1","searchLen","valLen","pos","_strEndsWithPoly","strEndsWith","setCookie","_setCookieValue","_formatCookieValue","getCookie","_getCookieValue","del","purge","delCookie","WARNING","exception","thePart","theDate","cookieValue","theCookie","strNotificationManager","_createPerfManager","notificationMgr","NotificationManager","perfEvtsSendAll","addNotificationListener","removeNotificationListener","eventsSent","events","eventsDiscarded","eventsSendRequest","sendReason","AppInsightsCore","_internalLogPoller","_notifyInvalidEvent","telemetryItem","getNotifyMgr","notificationManager","getPerfMgr","_validateTelemetryItem","pollInternalLogs","eventName","diagnosticLogInterval","stopPollingInternalLogs","setInterval","iKey","instrumentationKey","baseType","baseData","clearInterval","BaseCore","_eventQueue","_channelController","_notificationManager","_perfManager","_cookieManager","_isInitialized","_extensions","loggingLevelConsole","getDebugListener","enablePerfMgr","allExtensions","coreExtensions","channelExtensions","extPriorities","ext","extPriority","getTransmissionControls","releaseQueue","thePlugins","setCookieMgr","createPerfMgr","setPerfMgr","eventCnt","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_autoSeedMwc","seedValue","random32","signed","Uint32Array","mwcRandom32","strVisibilityChangeEvt","strPageHide","addEventHandler","addEventListeners","excludeEvents","excluded_1","addPageUnloadEventListener","addPageHideEventListener","pageUnloadAdded","visibilityState","maxLength","chars","generateW3CId","tmp","hexValues","oct","clockSequenceHi","PropertiesPluginIdentifier","BreezeChannelIdentifier","dataSanitizeKeyAndAddUniqueness","origLength","nameTrunc","dataSanitizeKey","uniqueField","dataSanitizeString","valueTrunc","dataSanitizeUrl","dataSanitizeInput","dataSanitizeMessage","messageTrunc","dataSanitizeProperties","tempProps_1","dataSanitizeMeasurements","measurements","tempMeasurements_1","measure","_msgId","inputTrunc","DataPointType","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","strNotSpecified","strIkey","TelemetryItemCreator","envelopeName","customProperties","systemProperties","EventData","ver","Event","aiDataContract","envelopeType","Trace","severityLevel","DataPoint","kind","stdDev","Measurement","Metric","metrics","dataPoint","PageViewData","stringToBoolOrDefault","msToTimeSpan","totalms","ms","sec","hour","PageView","durationMs","dataSanitizeId","PageViewPerformance","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","PageViewPerfData","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","theEvent","errorType","evtMessage","_isStackDetails","_convertStackObj","errorStack","items","_getStackFromErrorObj","errorObj","errorMessage","lines","_getOperaStack","_getErrorType","typeName","_formatErrorCode","StorageType","DistributedTracingModes","Exception","exceptions","_isExceptionInternal","problemGroup","isManual","_ExceptionDetails","CreateAutoException","lineNumber","columnNumber","errorSrc","stackDetails","CreateFromInterface","toInterface","CreateSimpleException","assembly","fileName","line","hasFullStack","formatError","outerId","parsedStack","_isExceptionDetailsInternal","frames","level_1","totalSizeInBytes_1","frame","theFrame","_StackFrame","parsedFrame","sizeInBytes","right","acceptedLeft","acceptedRight","howMany","_parseStack","exceptionTrunc","dataSanitizeException","_formatStackTrace","sourceFrame","level","baseSize","_canUseLocalStorage","_canUseSessionStorage","_getLocalStorageObject","utlCanUseLocalStorage","_getVerifiedStorageObject","LocalStorage","storageType","uid","storage","setItem","fail","getItem","removeItem","_getSessionStorageObject","utlCanUseSessionStorage","SessionStorage","utlGetSessionStorage","utlSetSessionStorage","createDomEvent","createEvent","initEvent","RequestHeaders","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","anchorIdx","anchorCache","tempAnchor","urlParseHost","inclPort","fullHost","urlParseFullHost","port","_internalEndpoints","isInternalApplicationInsightsEndpoint","endpointUrl","CorrelationIdHelper","correlationIdPrefix","canIncludeCorrelationHeader","requestUrl","currentHost","disableCorrelationHeaders","correlationHeaderExcludePatterns","requestHost","enableCorsCorrelation","matchExists_1","includedDomains","correlationHeaderDomains","excludedDomains","correlationHeaderExcludedDomains","getCorrelationContext","responseHeader","correlationId","getCorrelationContextValue","keyValues","keyValue","dateTimeUtilsNow","perf","timing","navigationStart","dateTimeUtilsDuration","RemoteDependencyData","absoluteUrl","commandName","success","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","parsedUrl","pathName","AjaxHelperParseDependencyPath","PageViewManager","appInsights","overridePageViewDuration","pageViewPerformanceManager","_logger","intervalHandle","itemQueue","pageViewPerformanceSent","_flushChannels","trackPageView","pageView","uri","isPerformanceTimingSupported","sendPageViewInternal","customDuration","pageViewSent","getPerformanceTiming","shouldCollectDuration","processed","isPerformanceTimingDataReady","pageViewPerformance","populatePageViewPerformanceEvent","sendPageViewPerformanceInternal","allItems","doFlush","PageVisitTimeManager","pageVisitTimeTrackingHandler","prevPageVisitDataKeyName","trackPreviousPageVisit","currentPageName","currentPageUrl","prevPageVisitTimeData","restartPageVisitTimer","pageName","pageUrl","pageVisitTime","prevPageVisitData","stopPageVisitTimer","startPageVisitTimer","currPageVisitData","PageVisitData","currPageVisitDataStr","pageVisitEndTime","pageVisitDataJsonStr","pageVisitStartTime","utlRemoveSessionStorage","PageViewPerformanceManager","MAX_DURATION_ALLOWED","navigationTiming","getPerformanceNavigationTiming","total","network","response","dom","connectEnd","requestStart","responseStart","responseEnd","loadEventEnd","isPerformanceNavigationTimingSupported","getEntriesByType","domainLookupStart","domLoading","durations","botAgentNames","isGoogleBot","durationProperty","strEvent","_dispatchEvent","evnt","ApplicationInsights","_eventTracking","_pageTracking","_properties","_prevUri","_currUri","autoRoutePVDelay","doNotSendItem","telemetryInitializersCount","_telemetryInitializers","telemetryInitializer","trackEvent","startTrackEvent","stopTrackEvent","stop","trackTrace","trackMetric","metric","inPv","_pageViewManager","autoTrackPageVisitTime","_pageVisitTimeManager","refUri","referrer","trackPageViewPerformance","_pageViewPerformanceManager","startTrackPage","stopTrackPage","measurement","loc","sendExceptionInternal","theError","exceptionPartB","trackException","_onerror","_window","isCrossOriginError","_sendCORSException","errorString","addTelemetryInitializer","defaults","getDefaultConfig","isStorageUseDisabled","configGetters","accountId","sessionRenewalMs","sessionExpirationMs","sampleRate","samplingPercentage","sdkExtension","isBrowserLinkTrackingEnabled","appId","PageName","PageUrl","average","sampleCount","trackPageVisitTime","browserLinkPaths_1","envelope","remoteData","_addDefaultTelemetryInitializers","Timing","pageViewItem","_history","_location","disableExceptionTracking","autoExceptionInstrumented","originalOnError_1","handled","enableUnhandledPromiseRejectionTracking","autoUnhandledPromiseInstrumented","onunhandledrejection_1","originalOnUnhandledRejection_1","_getReason","enableAutoRouteTracking","_self_1","extension","ret","namePrefix","telemetryTrace","traceID","traceLocationName","enableDebug","disableFlushOnBeforeUnload","disableFlushOnUnload","Version","_events","BaseSendBuffer","_buffer","_bufferFullMessageSent","_get","_set","buffer","enqueue","eventsLimitInMem","emitLineDelimitedJson","getItems","batchPayloads","ArraySendBuffer","markAsSent","clearSent","SessionStorageSendBuffer","bufferItems","_getBuffer","BUFFER_KEY","notDeliveredItems","SENT_BUFFER_KEY","_removePayloadsFromBuffer","payloads","remaining","prefixedKey","bufferJson","buffer_1","_setBuffer","MAX_BUFFER_SIZE","sentElements","_aiNameFunc","baseName","aiName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationName","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","_this_1","Extensions","CtxTagKeys","Envelope","Data","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","iKeyNoDashes","envTags","itmExt","itmTags","extUser","user","authId","localId","extApp","app","sesId","extDevice","deviceClass","ip","web","browserLang","browserVer","browser","envData","envBaseData","envProps","screenRes","userConsent","extOs","os","extTrace","parentID","tgs","theTags","EnvelopeCreator","_extractPartAExtensions","EnvelopeCreatorInit","EventEnvelopeCreator","customMeasurements","eventData","Serializer","_serializeObject","circularReferenceCheck","_serializeStringMap","_serializeArray","contract","isPresent","isObj","sources","serialize","OfflineListener","isListening","_onlineStatus","_setOnline","_setOffline","ononline","onoffline","_navigator","onLine","isOnline","isOffline","Offline","HashCodeScoreGenerator","getHashCodeScore","getHashCode","INT_MAX_VALUE","charCodeAt","SamplingScoreGenerator","hashCodeGenerator","getSamplingScore","Sample","samplingRate","samplingScoreGenerator","isSampledIn","_getResponseText","xhr","responseText","EnvelopeTypeCreator","strDuration","currentContextId","pageType","pageViewData","exData","baseMetricData","remoteDepData","responseCode","Sender","_consecutiveErrors","_retryAt","_timeoutHandle","_serializer","_stamp_specific_redirects","_fallbackSender","_syncUnloadSender","_paused","_headers","_syncFetchPayload","_senderConfig","maxBatchInterval","maxBatchSizeInBytes","disableTelemetry","enableSessionStorageBuffer","isRetryDisabled","isBeaconApiDisabled","disableXhr","onunloadDisableFetch","onunloadDisableBeacon","customHeaders","convertUndefined","_checkResponsStatus","responseUrl","countOfItemsInPayload","res","_appId","_parseResponse","_checkAndUpdateEndPointUrl","_onError","_isRetriable","_resendPayload","_onPartialSuccess","_onSuccess","_doUnloadSend","_beaconSender","_doBeaconSend","plainTextBatch","Blob","queued","droppedPayload","thePayload","_xhrSender","XMLHttpRequest","endPointUrl","open","setRequestHeader","headerName","onreadystatechange","_xhrReadyStateChange","_formatErrorMessageXhr","send","_fetchKeepAliveSender","payloadSize","_doFetchSender","_fetchSender","requestHeaders","Headers","batchLength","ignoreResponse","responseHandled","headers","keepalive","Request","fetch","itemsReceived","itemsAccepted","linearFactor","payload_1","delayInSeconds","backOffSlot","backOffDelay","retryAfterTimeSpan","_setRetryTime","_setupTimer","retryInterval","timerValue","triggerSend","_clearScheduledTimer","statusCode","_xdrSender","xdr","_xdrOnLoad","_formatErrorMessageXdr","hostingProtocol","lastIndexOf","resume","onunloadFlush","teardown","addHeader","_sender","_sample","disableInstrumentationKeyValidation","_validateInstrumentationKey","customHeader","header","senderConfig","sendPostFunc","defaultEnvelopeIkey","aiEnvelope_1","constructEnvelope","doNotSendItem_1","callBack","readyState","responseURL","async","forcedSender","sendRequest","_notifySendRequest","ieVer","failed","retry","errors_1","extracted","orig","Session","_SessionManager","_storageNamePrefix","_cookieUpdatedTimestamp","acquisitionSpan","renewalSpan","sessionCookiePostfix","_initializeAutomaticSessionWithData","session","sessionData","sessionReset","tokens","acqMs","renewalMs","acquisitionDate","renewalDate","_setCookie","nowMs","acq","renewalPeriodMs","acqTimeLeftMs","cookie","automaticSession","isExpired","storageValue","utlGetLocalStorage","_initializeAutomaticSession","timeSinceAcqMs","timeSinceRenewalMs","getNewId","idLength","_renew","cookieUpdateInterval","backup","guid","renewal","utlSetLocalStorage","Application","Device","Internal","sdkVersion","_validateUserInput","User","isNewUser","isUserCookieSet","userCookiePostfix","userCookieName","cookieSeparator","_generateNewId","_generateNewCookie","acqStr","accountAcquisitionDate","_setUserCookie","utlRemoveStorage","authCookie","authUserCookieName","authCookieString","decodeURI","authenticatedId","setAuthenticatedUserContext","authenticatedUserId","storeInCookie","encodeURI","clearAuthenticatedUserContext","Location","TelemetryTrace","parentId","strExt","strTags","_removeEmpty","TelemetryContext","defaultConfig","getSessionId","application","sessionManager","autoSession","applySessionContext","applyOperatingSystemContxt","applyApplicationContext","build","applyDeviceContext","applyInternalContext","agentVersion","snippetVer","sdkSrc","applyLocationContext","applyOperationContext","applyWebContext","applyUserContext","PropertiesPlugin","_breezeChannel","_extensionConfig","getExtensionByName","theContext","userCtx","_processTelemetryInternal","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","hooks","callDetails","cbArgs","hookCtx","hook","cbks","orgEx","hookErrorCb","_getOwner","checkPrototype","owner","InstrumentFunc","callbacks","aiHook_1","newFunc","aiHook","orgArgs","funcArgs","_createArgs","theArgs","rslt","theHook","rm","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","strPerf","XHRMonitoringState","openDone","setRequestHeaderDone","sendDone","abortDone","stateChangeAttached","ajaxRecord","spanID","strResponseText","perfMark","requestHeadersSize","responseReceivingDuration","callbackDuration","ajaxTotalDuration","requestSize","requestSentTime","responseStartedTime","responseFinishedTime","callbackFinishedTime","endTime","xhrMonitoringState","clientFailure","getAbsoluteUrl","getPathName","CreateTrackItem","ajaxType","enableRequestHeaderTracking","getResponse","dependency","ajaxData","perfTiming","propsSet","strName","strStart","strEnd","strDomainLookup","strConnect","strRedirect","strRequest","strResponse","strStartTime","strDomainLookupStart","strDomainLookupEnd","strConnectStart","strConnectEnd","strRequestStart","strRequestEnd","strResponseStart","strResponseEnd","strRedirectStart","strRedirectEnd","strTransferSize","strEncodedBodySize","strDecodedBodySize","strServerTiming","serverTiming","server_1","_all","normalizeJsName","newValue","perfAttempts","_populatePerfData","headerMap","responseHeaders","errorStatusText","responseType","Traceparent","traceId","spanId","traceFlag","DEFAULT_TRACE_FLAG","DEFAULT_VERSION","isValidTraceId","isValidSpanId","AJAX_MONITOR_PREFIX","strDiagLog","strAjaxData","strThrowInternal","strFetch","_markCount","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_indexOf","AjaxMonitor","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","strTrackDependencyDataInternal","_fetchInitialized","_xhrInitialized","_currentWindowHost","_config","getEmptyConfig","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_trackAjaxAttempts","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_hooks","_disabledUrls","_canIncludeHeaders","rlt","ignoreHeaders","_hookProto","InstrumentProto","_isDisabledRequest","theUrl","theRegex","idx2","_isMonitoredXhrInstance","excludeAjaxDataValidation","ajaxValidation","_getAjaxCorrelationContext","responseHeadersString","getAllResponseHeaders","getResponseHeader","_createMarkId","performance_1","mark","markId","getEntriesByName","_findPerfResourceEntry","initiatorType","trackCallback","maxAttempts","maxAjaxPerfLookupAttempts","retryDelay","ajaxPerfLookupDelay","attempt","locateResourceTiming","entryType","clearMarks","_getFailedFetchDiagnosticsMessage","_reportFetchMetrics","_reportFetchError","failedProps","errorProps","_getFetchCorrelationContext","fetchDiagnosticsMessage","ctx_1","distributedTracingMode","enableAjaxErrorStatusText","enableAjaxPerfTracking","maxAjaxCallsPerView","enableResponseHeaderTracking","excludeRequestFromAutoTrackingPatterns","addRequestContext","AI","AI_AND_W3C","W3C","disableAjaxTracking","theOpen","_supportsAjaxMonitoring","_openHandler","_reportXhrError","ajaxResponse","responseHeaderMap_2","parts","_onAjaxComplete","exceptionText","_attachToOnReadyStateChange","hkErr","includeCorrelationHeaders","_global","global","isPolyfill","polyfill","disableFetchTracking","fetchData","_createFetchRecord","newInit","rsp","responseHeaderMap_1","_instrumentFetch","propExt","extIx","trackDependencyData","currentWindowHost","traceparent","emptyConfig","parseConnectionString","connectionString","arrReduce","fields","kv","kvParts","endpointsuffix","locationPrefix","ingestionendpoint","_internalSdkSrc","_ignoreUpdateSnippetProperties","Initialization","snippet","_snippetVersion","sv","cs","ingest","instrumentationkey","getSKUDefaults","inPvp","channel","loadAppInsights","legacyMode","_updateSnippetProperties","emptyQueue","addHousekeepingBeforeUnload","updateSnippetDefinitions","chkSet","_loop_1","originalArguments","proxyAssign","length_1","appInsightsInstance","performHousekeeping","_sessionManager","excludePageUnloadEvents","disablePageUnloadEvents","product","getSender","cdns","scrpt","currentScript","applicationInsightsKey","loggingLevelTelemetry","serviceAccess","ebiDigitalReceiptsApiUrl","excludedDomainsFromLogs","telemetryFilters","excludedDomain","storeContext","persistance","getCached","productionUnit","productionUnitId","zipCode","pickupPointId","filterFlag","isAiLoaded","loadAi","cookieVendor","MicrosoftAzure","onConsentExists","onActiveDecline","userIdCookie","initAi","LocalStorageFacade","_instance","localStorage","addObject","getObject","storageItem","read","SESSION_COOKIE_KEY","gaNonInteractionUserEventHandler","EXPENSIVE_GA_AJAX_CALL_SENT","gaNonInteractionUserEvent","createNewEvent","orderFlow","getOrderCount","gaResponse","orderCountResponse","json","localApiData","orderCount","selectionSupport","triggerCallbackOnceWhenInViewPort","observedElements","IntersectionObserver","observerOptions","isIntersecting","trackAppInsightsEvent","unobserve","threshold","createTriggerCallbackOnceWhenInViewPort","CLASS_UNMUTED","handleGlobalClick","partnerPage","getElementsByClassName","partner","HTMLAnchorElement","outboundClick","innerText","closestAnchor","closest","muteButton","targetVideo","muted","handleGlobalEvents","resizeBannerCells","bannerCells","desktopMinHeight","cell","innerWidth","getBreakpoint","sm","clientWidth","onResize","bannerCellsDefault","bannerCellsNoMinHeightOnDesktop","bannerResizeHandler","dataGaPromoString","gaPromo","dataGaPromos","gaPromoId","gaPromoName","gaPromoCreative","gaPromoPosition","analyticsPromoData","viewPromotion","promoEl","selectPromotion","keysToRemove","storageKeysToRemove","ktr","sktr","cleanLocalStorage","hideB2BSwitch","stayAfterLoginLogoutRedirect","useInitialCartFetch","hasActiveStoreSelection","isOrdererMunicipal","isShoppingForMunicipal","getCart","REDIRECT_REASON_QUERY_KEY","useRedirectReasonHandler","queryString","redirectReason","removeRedirectReasonQuery","accountRemoved","login","isAuthenticatedWithBankId","trackUserLogin","signup","isCompany","connectMembership","CncStepSwitcher","isOpen","close","afterClose","useCncFlyInState","additionalClasses","OverlayLoader","pathnamesAlreadySent","isDisbled","setIsDisbled","useModal","ConsentBox","hasKimCustomerId","isMobile","enableConsentSms","featureFlags","consentPhonePageUrl","hasRedirectQuery","getParameterByName","hasMemberConsentQuery","shouldShowConsent","hasQuery","kimCustomerData","useKimCustomerDataQuery","consentSubscriptions","isLoadingSubscriptions","useConsentQuery","kimPhoneNumberVerified","subscribeNowMutation","useSubscribeConsent","isSuccess","settingsTexts","useMyCoopSettingsPageQuery","allNewsletters","accepted","consentShownSession","onClose","sendEmailSubscriptionInteraction","OuterContainer","OuterContainerIsMobile","CloseButtoDiv","ChipIconButton","theme","icon","CloseButton","Container","ModalHeader","Headline","InnerContent","alt","CheckboxDiv","Checkbox","indicatorVerticalPosition","consentCheckboxText","onCheckedChange","ConditionText","personalDataLink","rel","ButtonContainer","Button","allConsentsToTurnOn","mutate","fullWidth","skip","aboutCoopLink","aboutCoopAssociationsLink","ReadMore","emailSubscriptions","useEmailSubscriptionQuery","useMutation","mutationFn","service","consentAdobeSubscriptionFlow","confirm","services","enableConsentKimApi","enableConsentPage","Upscope","Functional","sessionStorage","show","setShow","upscopeCode","setUpscopeCode","upscopeUtils","ConfirmInfo","heading","__cmp","rightSlot","Icon","column","headerLink","links","_link","contentId","cellsInRow","useBreakpoints","AREA_FOOTER_GRID","ItemGrid","gridClasses","renderItem","itemUniqueKey","bottomLinks","bottomLink","consentPurposeAccepted","setConsentPurposeAccepted","scriptsContainerRef","useHtmlScriptParser","checkPurpose","Marketing","gdpr","logos","logo","imageHeight","imageAltText","imageSrc","isPrerenderCrawler","Accordion","Root","collapsible","Item","Header","asChild","Trigger","Content","socialLinks","footer","isFromMedium","hideFooterMobile","validColumns","downloadAppQRImage","downloadAppQRImageAltText","downloadAppIOSUrl","downloadAppAndroidUrl","footerShowDownloadApp","StartImpersonationBar","setIsOpen","Snackbar","actionSlot","ChipButton","marginBottom","Impersonate","handleSubmit","control","getValues","reValidateMode","defaultValues","impersonateMutation","reload","onSubmit","formValues","isEmail","validateEmail","userToImpersonate","userIdentifierType","fieldState","TextInput","necessityIndicator","onBlur","validationText","isInvalid","CountDown","zeroPad","places","padStart","ImpersonationExpiration","signout","expires","allowImpersonate","isImpersonating","identity","impersonating","expireTime","profile","useCurrentStoreSync","when","logNotProd","usePageConsumptionTracking","structuredClone","domNodeSelector","SkipLink","HeaderAlerts","StickyBottom","ComponentPortals","cmpName","hasBeenRepositioned","containerRef","isEpiUser","userProfileSelectors","handleElementFound","targetNode","clonedNode","cloneNode","position","useEpiEditButtonRepositioning","bottom","expectedSearchResultType","searchFromPage","trackEnterAction","queryUsed","Search","submitLabel","inputText","setInputText","hide","inputPlaceholder","description","onEnterPress","realQuery","performFullSearch","viewAllResultsUrl","onEscapePress","onReset","initialQuery","currentProductionUnit","storeSelectors","globalSearchFunction","_abortSignal","_query","articles","products","recipes","SearchFromPageType","Recipes","pointshop","searchFunction","minimumQueryLength","GlobalSearchOverlayContent","a11yResultAnnounceMessage","searchRef","trackAbortAction","trackCloseClickAction","trackListObjectClick","trackSeeAllResultsClickAction","trackLabelClick","trackAddToCartClickAction","trackRemoveFromCartClickAction","handleAllResultsClick","onResultScroll","blur","SearchOverlay","onOutsideClick","onClearClick","inputDescription","announcerSlot","DelayedA11yAnnouncer","a11yMessage","delayFirstMessage","onAllResultsClick","onAllResultsForTypeClick","onOtherResultTypeClick","onProductAddToCartClick","onProductRemoveFromCartClick","onItemClick","onLabelClick","onScroll","useMaxHeightCalculation","GlobalSearchInner","shouldShowGlobalSearchBar","searchDisabled","searchSlot","typedCurrentPage","currentPageString","currentPage","toLocaleLowerCase","Other","isB2B","CartSummaryAccessibilityLogger","domProps","HeaderFluidBanner","featuredNavigation","headerTheme","HeaderStickyBanner","EcommerceSearch","HeaderBanner","Logo","userType","isPunchout","punchout","isShoppingForAnother","ecommerce","page","startPage","Banner","wideSlots","bordered","LeftSlot","LeftNav","RightNav","CenterSlot","RightSlot","ariaCurrentPage","indicatorPosition","headerNavigationClick","isFromLarge","isFromXsm","xsm","useUserType","disableMyFavoritesMenu","UserTypeModeSwitch","HeaderLeftNav","disableSiteNavigation","navigationItems","HeaderRightNav","SiteNavigation","sizePx","alignment","initialFocusOnDialog","renderTrigger","HeaderIconButton","ListIcon","isChecked","isEligibleForBonus","myBonusOverviewPageUrl","handleLinkClick","pointsIsSuccess","pointsIsLoading","useHouseholdPointBalance","associationNames","associationIsLoading","queryKey","queryFn","loyaltyFlow","getMembershipNames","memberMissingAssociations","brokenMemberHeadline","brokenMemberText","brokenMemberButtonContentReference","brokenMemberButtonText","notMemberHeadline","notMemberPoint1","notMemberPoint2","notMemberPoint3","notMemberPoint1Checked","notMemberPoint1CheckedText","notMemberPoint1UnCheckedText","notMemberPoint2Checked","notMemberPoint2CheckedText","notMemberPoint2UnCheckedText","notMemberPoint3Checked","notMemberPoint3CheckedText","notMemberPoint3UnCheckedText","notMemberButtonText","notMemberButtonContentReference","notConnectedButtonText","notConnectedButtonContentReference","formatMemberPointsAndAmount","points","BonusInfoConfirm","monetaryWorth","cssClasses","onClickOpen","infoSymbolInteraction","Loader","additionalClassNames","getParentName","menuItems","selectedPageId","parentMenu","menu","menuItemChildren","pages","menuIsSuccess","menuIsLoading","useCurrentEpiPage","menuPages","useEligibleForBonus","profileMenu","click","myCoop","ProfileMenuList","activePageId","contentLink","handleListItemClick","profileMenuWalletInteractionTrigger","onItemOpen","level1Open","onItemClose","level1Close","logoutUrl","logout","MyProfileMenu","testSelector","badgeColor","initCnc","postalCode","currentPostalCode","cartItemCount","cartItemsSelectors","selectCartQuantity","BadgePositioning","tracking","cnc","openFrom","cartIcon","AnimatedBadge","animationProps","Dialog","onOpenChange","triggerSlot","Popover","popoverProps","ActionList","_isOpen","savedItems","asIcon","AccessibleIcon","onPress","savedCartListUrl","shoppingListPageUrl","savedRecipesPageUrl","mapStorePageUrl","b2bLinks","HeaderMyFavoritesDropdown","isB2BRoute","HeaderProfileDotDropdown","filteredLinks","overviewPageUrl","b2b","myCoopOverviewPage","ProfileNav","companyUserOnPrivateSite","privateUserOnCompanySite","isUserCompany","onLoginClickTracking","CncTrigger","animated","transitionRef","enterActive","enterDone","role","primaryButtonProps","secondaryButtonProps","isUserLoggedIn","hasSeenTooltipThisSession","abtest","loginReminderPopupShown","loginUrl","createAccountUrl","loginReminder","goToLogin","goToCreateAccount","hideLoginReminder","EpiQuickNavigatorButton","useIsMobileHeader","useDocumentPropertyHeightSetter","AlertLevels","getNoticeTypeForAlertLevel","NoticeRibbon","alertLevel4","alertLevel3","alertLevel2","alertLevel1","isDismissed","alertsDismissed","handleCloseClick","dismiss","blockClose","expandableContent","alerts","alert","RawHtml","html","IconButton","info","notice","uspNotices","MainPageLayoutContext","LayoutHero","edgeToEdge","bleedViewport","topMargin","disablePaddingOnMobile","LayoutContent","subHeroSlot","sideMenuSlot","hasSideBar","parentContext","thisContext","isInsideAnotherLayout","heroSlot","heroBleedViewport","heroEdgeToEdge","useMyCoopProfileMenu","staleTime","inputRef","resetQuery","searchInputRef","Modal","afterOutsideClick","dangerouslyDisableFocusBackToTrigger","VisuallyHidden","focusOnMount","inputAriaLabel","moveFocusProgramatically","setProgramticFocusAttributes","scrollIntoView","align","useSkipLinkTarget","moveFocus","onBlurCapture","skipTriggerSlot","endSlot","skipLinkText","skipTargetText","useReactRouting","b2c","totalCartQuantity","cartIsInitialized","isCartInitialized","cartIsLoading","cart","cartLoading","totalPrice","cartCountLabel","totalPriceLabel","toEcommercePriceWithCurrency","getCartSummaryAccessibilityText","ExceptionCode","HeaderCartErrorNotice","isAnyModalOpen","modalSelectors","CartErrorNotice","additionalShowCondition","fixed","firstError","cartError","clearGroupErrors","useGroupError","Cart","friendlyMessage","dinnerOnlyStore","hideAfterMiliseconds","ariaLive","ProductItemInfo","productUrl","manufacturer","variantName","packageSizeInformation","comparativePrice","comparativeText","isNicotineProduct","isPharmaceutical","promotion","isALink","packagingInfo","comparativePriceFormatted","choices","renderWrapper","whiteSpace","maxUseText","isNicotine","ProductItemImage","image","cssClass","transform","retinaTransform","fallbackUrl","innerRef","isOutOfStock","slotLeft","slotSplash","slotPrice","bottomRow","ProductListItem","Info","recipeProduct","recipeProductItem","recipeProductSubstitutes","isSubstituteActive","buyable","handleSubstituteChange","analyticsOptions","productSubstitutesBreakpoints","isConstrained","priceType","productPromotion","totalPriceData","showExcludingTaxInfo","ExcludeTax","getPriceTypeText","pharmaceuticalData","selectedVarianceCode","variant","variants","_variant","getVariantName","substitutes","handleProductSubstitution","getCartItems","cartItemsProductDataSelectors","itemsProductData","cartRecipeSelectors","selectCartItemProductDataById","selectAllCartItemProductData","selectAllCartItems","cartItems","productData","cartItem","cartItemData","productId","hasAgeRestrictedProducts","hasRecipeItems","recipeMetaData","selectCartItemsIds","variantId","selectCartItemProductIds","selectCartItemsIdsForRecipeId","recipeId","cartItemUniqueIdPredicate","cartItemId","selectCartItemByUniqueId","selectAllItemsReplaceability","itemReplaceable","selectSomeItemsReplaceability","selectFilteredVariants","sameProductCartItems","filteredVariants","spci","selectCartItemsIdsForSectionId","sections","sectionId","cartSection","section","productIds","selectChangedItemsCount","editedOrderItems","getEditOrderSectionItems","previousOrderItemIds","previousItemIds","cartItemIds","previouslyBoughtCartItemIds","previousItem","newlyBoughtCartItemIds","getIsLargeQuantityOrder","quantity","selectCartSummary","summary","selectProductDataById","selectAllProductData","selectIdsForRecipeId","selectCartRecipes","selectIdsForSectionId","editOrder","recipeSelectors","selectNonEmptyRecipes","cartRecipes","productsMap","nonEmpty","hasFoodboxInCart","useNavigationTracking","currentStep","selectCurrentStep","sendGaGoBackTrackingEvent","navigationGoBack","sendGaCloseTrackingEvent","navigationClose","SyncronQueue","_timeout","_queue","run","uniqueName","dontPushBack","existingQueueItem","acceptRunningPromise","alreadyRunning","queueFunc","SESSION_STORAGE_USER_IDENTITY","tokenFetchQueue","resetAuthToken","cleanTokenSessionStorageIfNeeded","userIdentityRaw","userIdentity","isStoredUserIdOutOfSync","shoppingUserId","getAuthTokenOrDefault","getAuthToken","isBankId","getCachedAuthToken","at","impersonateUser","post","cancelImpersonation","errorCode","deliveryAddresses","fetchAll","hybrisAxiosClient","buyMultipleRecipes","removeRecipe","substituteProduct","rowId","getProductSubstitutes","changeRecipePortions","portions","changeCartItemVariant","fetchCart","fetchCartSimple","getPostalCodeDeliveryOptions","voucher","voucherId","driverMessage","setItemsReplaceability","payment","list","initializeMatkontoPayment","initializeKobePayment","initializeIntrumPayment","initializeHmpPayment","initializeEdiPayment","initializeKlarnaPayment","newSession","subscriptionFrequency","initializeSamlingsFakturaPayment","edit","billingAddress","addressId","getInternalReference","setInternalReference","internalReference","internalreference","getRequisitionExpireTime","validateCart","getContactPhoneNumber","setContactPhoneNumber","phone","validateAssortment","validateAssortmentApiUrl","HEADER_SITE_MODE","localApiExceptionInterceptor","localApiOpenIdInterceptor","isOpenIdError","redirectUrl","internalCreateClient","customErrorInterceptors","clientInstance","axios","customInterceptors","interceptors","use","defaultException","interceptorResult","createDirectApiClient","createLocalApiClient","errorInterceptors","newConfig","accessToken","neoId","baseURL","apimBaseUrl","Authorization","btoa","getUserIdUrlSegment","hybrisErrorInterceptor","hybrisErrors","hybrisError","isApiHybrisBaseError","subjectType","hybrisApiUrl","hybrisApiSubscriptionKey","Accept","hybrisApiVersion","editOrderErrorInterceptor","getOrdersBaseUrl","orderDirectApi","getOrderById","orderId","axiosConfig","getOrderHistory","spaToken","pageSize","orders","cancelOrder","cancelOk","countString","orderEdited","cartId","orderApi","createForCurrentCart","completeEditOrder","transactionCode","cancelEditOrder","preparePersonalizationRequestParams","storeId","customerGroups","groups","preparePersonalizationSearchRequestParams","quickSearch","baseParams","direct","productApi","getRecommendations","client","axiosRequestConfig","personalizationApiUrl","personalizationApiSubscriptionKey","personalizationApiVersion","getCurrentProductOffersLoop","currentPromotionsRequest","onlyPrimary","cancelToken","getProductsForPromotionLoop","requestBody","getSustainabilityDeclaration","articleServiceApiUrl","articleServiceApiVersion","articleServiceSubscriptionKey","getRelatedProducts","getRelatedProductsMultiple","recipe","apiUrl","getRecipeById","getRecipesById","recipeIds","queryWithoutBrackets","queryName","rateRecipe","rating1to5","rating","getRecipeUserRatings","getRecipeComments","recipeExternalId","saveRecipeComment","authorName","comment","getFavouriteRecipes","saveFavouriteRecipe","addFavoriteRecipeResult","removeFavouriteRecipe","removeFavoriteRecipeResult","getRecipeSingleMetaDataByCategoriesBatch","getCategoriesUrlOrderData","getRecipeCategoriesById","getRecipeCategories","northfork","getRecipesByEans","resolveRecipes","getRecipeSubstitutes","substituteIdentifier","requestQueryParams","filterRecipesAdminTool","filterString","excludeList","exclude","savedCartsApi","restoreSavedCart","savedCartId","getSavedCarts","deleteSavedCart","patch","saveCart","cartName","saveCartName","bulkUpdate","searchPickupStores","searchterm","hits","storeApi","fetchStoreByPostalCode","fetchPickupStores","fetchStoreById","updatePickupStore","updateHomeDeliveryStore","baseStoreId","updatePickupStoreUnconfirmed","updateHomeDeliveryStoreUnconfirmed","mapToProperApiApiHybrisTimeslot","timeslot","maxOrderTime","timeslotsApi","fetchForCurrentCart","fetchByPostalCode","timeslotId","userApi","getTypeOfUser","getUserInfo","noCache","getUserPunchoutUnit","getMunicipalUserInfo","getInvoiceAddress","createInvoiceAddress","address","updateInvoiceAddress","getCustomerGroups","getCompensationVochers","compensationVouchers","updateProfile","redistributorOfFood","updateCoopRatingCache","getCurrentUserProfile","getCancellationToken","CancelToken","wasDelayed","delayedMessage","setDelayedMessage","useTemporaryTextEffect","setText","announcerName","quantityLabel","TemporaryA11yAnnouncer","attemptedToAddToCart","setAttemptedToAddToCart","a11yQuantity","setA11yQuantity","setA11yQuantityDebounced","setQuantity","newQuantity","onBlock","prevQuantity","B2BCrossContextNotifications","addToCartRef","isCrossContextBlock","QuantityStepper","withBuyButton","withButton","buyButtonRef","isBlocked","newQuanity","onAddClick","onAddToCartClick","onRemoveClick","onRemoveFromCartClick","buyButtonLabel","productName","inputLabel","addButtonLabel","removeButtonLabel","continueAsPrivateUrl","continueAsCompanyUrl","clickInteractionTracking","b2bCrossContextPopupInteraction","clickLoginTracking","Confirm","onConfirm","confirmButtonProps","cancelButtonProps","disableOutsideClick","BaseRecipeTeaser","Wrapper","Teaser","withBorder","Border","TopActions","topSlot","imageUrl","Bottom","Badges","RatingContainer","ClimateImpact","co2ImpactKg","Intl","NumberFormat","Heading","onLinkClick","Actions","SkeletonText","SkeletonButton","ButtonEpiLink","linkUrl","buttonProps","anchorRel","recommendation","recommendationId","onlyPromotions","inViewRef","inView","lazyLoad","headerId","isOnlyProductsRecommendation","showNewHeader","as","headerSlot","headingProps","useSwiper","analyticsListName","horizontalHidden","renderProduct","listPosition","slotId","disableLink","isAsyncLink","disableAsyncLink","renderRecipe","banner","slotClickSent","sendSlotClick","onSlotClickTrack","onTeaserClick","isFoodbox","isFoodBox","recipeSlot","averageRating","climateImpactKg","votes","numberOfVotes","trackSlotClick","foodboxSlot","isFavourite","onFavouriteRecipeToggleClick","trackRecipeClick","useRecipeEventsTracking","FavoriteRecipeToggle","isFavorite","Chip","foodbox","fontFamilySecondary","stylingElement","alignStyles","textAlign","FontFamilySecondary","visuallyHidden","useListBlockLazyLoading","triggerOnce","rootMargin","initialInView","useGridBannerSize","isMoreThan900px","bannerCellSize","getBannerSize","skeletonCount","renderSkeleton","renderAtRowStart","renderAtRowEnd","itemClasses","noDefaultClasses","styles","listBlockRef","setListPosition","lists","swiperOptions","spaceBetween","ListContainer","WithBanner","ImageTextPropertyBlock","SwiperContainer","SwipableList","swiperMainClassName","Swiper","swiperPaginationClass","SwiperPagination","_item","row","GridBanner","BlockHeader","linkText","HeaderContainer","hasHeaderText","hasLink","numericStepperRef","optimisticShowBuyButton","setOptimisticShowBuyButton","handleConfirm","revertValue","NumericStepper","minValue","incrementBy","RatingStars","PrevButton","hasScrollbar","NextButton","nextEl","setNextEl","prevEl","setPrevEl","paginationEl","setPaginationEl","focusTimer","announce","setA11yAnnounceText","useA11yAnnouncerDispatch","disabledClass","pagination","clickable","lockClass","dynamicBullets","dynamicMainBullets","customSwiperOptions","scrollbar","isScrollbarOptions","draggable","watchSlidesProgress","containerModifierClass","modifySwiperOptions","swiperButtonClassName","onSwiper","wrapperTag","onSlideChange","swiper","snapIndex","focusElement","CLOUDINARY_ASPECT_RATIO_TRANSFORMS","ratio16By9","cssPadding","FallbackImg","transformedUrl","fileExtenson","srcSet","TransformedImage","ConditionalWrapper","ConditionalMultipleWrappers","choice","defaultUrl","xxsmUrl","xsmUrl","xlgUrl","xlg","FlyinNavigation","backNavigationAllowed","onBack","wrapperClassName","ariaLabel","getMessage","ItemMedicalInfo","modal","blocking","MODAL_TOGGLE_TIME","siteContext","ModalErrorNotification","FlyIn","FlyInInner","asideModalContainerStyle","idForDebug","disableOverlay","additionalContainerClasses","blockFlyIn","blocked","getFlyInSizeClass","toggleTime","ErrorGroupNotification","errorGroup","NoticeRibbonType","NoticeRibbonContent","containerStyles","onExpandClick","rotateClockwise","isExpanded","extraCss","rounded","setIsExpanded","useSetTimeout","appearDone","useNumericStepperCalculation","maxValue","isMaxValue","isMinValue","minMaxGuard","calculateSubstractValue","oldQuantity","calculateAdditionValue","otherProps","prevValueRef","_value","valueAsNumber","confirmValue","prevValue","handleInputConfirm","finalNewValue","FullWidth","onKeyUp","onFocus","Input","canonical","hasPrevPage","hasNextPage","totalItems","prevPage","nextPage","linkData","metaData","isDocumentHeadReadyForReactHelmet","useDocumentHeadIsPreparedForReactHelmet","Helmet","domNode","innerHtmlEmptied","setInnerHtmlEmptied","transformDimensions","dimensions","retinaHeight","retinaWidth","desktop","retina","getTransformDimensions","zoomable","zoomDimensions","isZoomed","setIsZoomed","currentDimensions","onMouseEnter","onMouseLeave","onTouchStart","zoomed","CloudinaryImage","prioritizeTotals","wrapperClasses","promo","newPiecePrice","newTotalPrice","PromotionPicker","renderMultiBuyPromotion","multiBuyPromo","MultiBuyPromotionPrice","numberOfProductRequired","price","bundlePrice","usePieceSuffix","NewPrices","OldPrices","piecePrice","renderNotApplicablePromotion","NoPromoPrices","renderFixedPromotion","fixedPromo","fixedPiecePrice","piecePriceStrikeThrough","renderDefault","RecycleFeePrices","recycleFeeTotalPrice","recycleFeePiecePrice","isMemberPrice","renderPercentagePromotion","PricePicker","renderTotalPrice","renderPiecePrice","tPrice","OldPrice","strikeThrough","pPrice","PromotionPrice","RecycleFeePrice","NormalPrice","BasePrice","Promotion","getPrice","PriceSuffix","aboveSlot","toEcommercePrice","hasPrice","sanitizer","sanitize","sanitizeOptions","parseScripts","imgClassName","altText","useBrowserMediaQuery","useMediaQuery","useFromBrowserMediaQuery","useBrowserCustomMediaQuery","useBrowserMinMediaQuery","useIsMobile","useIsDesktop","useIsFromXSmall","useIsFromMedium","Mobile","Desktop","NotDesktop","fill","SubPrice","promoComponents","promoPrice","hasDecimalOrUnit","splashClasses","hasCustomLabel","prefix","allText","suffix","handleSubsituteTrigger","ArrowPosition","TOOLTIP_DEFAULT","ARROW_BOTTOM","ARROW_LEFT","ARROW_CENTER","ARROW_RIGHT","Tooltip","tooltipClassNames","setTooltipClassNames","currentPosRef","setCurrentPosRef","uniqueIdForAria","tooltipRef","handleOutsideClick","useOutsideClick","arrowPlacement","arrowOffset","offsetHeight","resetTooltipPosition","tooltipArrowPosCss","propsArrowPlacement","oldTooltipCss","oldPos","tooltipCss","Center","spaceOnLeft","spaceOnRight","TOOLTIP_WIDTH","getFreeSpace","calculateTooltipArrowPosition","defaultCursor","handleClick","handleMouseOver","handleMouseOut","tooltipStyle","visibleTooltip","TooltipOnHover","TooltipComponent","hovering","setHovering","defaultSelectedKey","selectedVariantId","onSelectionChange","handleVariantChange","placement","selectItemClassName","notification","setNotification","currentVariant","onQuantityUpdate","isSilent","refreshCart","handleGaProductClick","useBuyableItemGATracking","currentPriceType","useCurrentPriceType","productProps","EcomProductTeaser","handleTeaserClick","notificationSlot","actionsSlot","AddToCartButton","withActions","foundComponents","Notification","hasOutsideClick","iconSlot","overrideAriaLive","hasVariants","isFromXSmall","recycleFeePrice","recycleFeeData","priceData","promotionPriceData","VariantSelector","ProductTeaser","PackageSizeInfo","Brand","brand","fromSweden","comparativePriceData","consumerInformationText","MaxPromotionUsage","ProductPrice","containerCss","Media","attributeLabels","promotionSplashSlot","EcomPromoSplash","priceSplit","decimalSplitRegexp","priceRaw","priceDecimal","beforeDot","afterDot","splitPriceDecimal","priceBeforeDot","priceAfterDot","hasDecimal","priceFormatted","percentage","Splash","getPromoLabel","promoName","percentageDiscount","fixedPrice","globalFlyInError","clearGlobalFlyInError","isInCheckout","mainSwiperClasses","constrainedX","constrainedY","breakpoints","onButtonClick","activeSubstituteId","missingProductImageUrl","FakeStyle","filteredBadges","useBadges","slotTopBadge","badge","ProductBadge","capitalize","stars","starIconDimension","star","recipeModalProductSubstitutesBreakpoints","getUniqueBreakpointsFor","AREA_RECIPE_MODAL","ProductList","marginLeft","setPortions","totalProducts","externalId","handleBuy","recipeName","pricePortion","transformedImageUrl","backgroundImage","inputSelected","setInputSelected","handleInputSelect","selectedInput","calculationType","recipeProritization","handleCalculationTypeChange","RadioGroup","onValueChange","RecipeModalSection","sectionItems","substituteIdentifiers","RecipeModalProductsList","getSectionTitle","renderCartItem","IncludeTax","readonly","cookingInstructions","recipePart","part","ingredients","ingredientLine","formattedQuantity","friendlyText","preamble","yieldValue","instructions","RecipeModalBodyWithData","recipeData","modalTabToDisplay","handlePortionChange","defaultPortions","avgRating","totalTime","TabSwitcher","containerClasses","panelClasses","listClasses","renderNextToTabs","initialActiveId","purchasable","curr","getRecipeDispatcher","useAsyncDispatcher","recipeFlow","initialLoadingState","keepPreviousResult","tabToDisplay","getRecipe","getRecipeResult","Global","trackModalPopup","trackBuyRecipe","trackCalculationChange","trackPortionChange","trackLinkClick","trackSubstituteProduct","trackAddToCart","modalPopupSent","modalPopup","Products","listOptions","modifyCartItems","previousQuantity","buyRecipe","calculationChange","portionChange","linkClick","useBuyableRecipeModalTracking","updateItemQuantity","updateSubstituteProduct","updatePortions","updateCalculation","calculateCart","recipeCart","recipeCartProducts","getProductExceptions","isLoadingRecipeCart","useRecipeCart","onSubsituteChangeClick","onSubstituteTriggerClick","expandedSubstituteIds","isLoadingSubstitutes","useSubstitute","calculation","prioritization","buyRecipeDispatcher","cartThunks","buyRecipeLoading","buyRecipeResult","useRequestEffects","itemsToTrack","recipe_list_id","recipe_list_name","recipe_origin","recipePortions","portionQuantity","productExceptions","qty","substituteId","RecipeProductListingItem","substituteProducts","PurchasableItemBody","sectionType","hasActiveSubstitutes","handleQuantityChange","handleSubsituteTriggerClick","MissingItemBody","recipeSectionType","handleRemoveItem","onBuyClick","buyText","removeText","buttonType","buttonFullWidth","cartRecipe","removeRecipeDispatcher","currentCartItems","previousCartItems","changeCartItems","useRecipeTracking","handleRecipeRemove","onRecipeBuyClick","hasRecipeInCart","buttonRemoveText","buttonBuyText","EmphasizedButton","BuyableRecipeModalBody","useRecipeModal","modalActions","RecipeModal","tryOpen","interaction","TabNavigationItem","renderTabItem","tab","tabItem","handleNavItemClick","TabPanel","indicatorRef","tabScrollableRef","activeItemRef","currentLinkRef","tabListRef","onLeftArrowClick","onRightArrowClick","arrowLeftRef","arrowRightRef","renderIndicator","linkWidth","offsetWidth","linkPos","offsetLeft","toggleNavigationButtons","tabScrollable","tabScrollableWidth","tabListWidth","leftButton","rightButton","centerSelected","tabActive","tabActiveWidth","lastKnownScrollPosition","tabActivePosition","scroll","behavior","scrollBy","useElementEvent","scrollWidth","useTabSwitcher","activeTabId","activeTab","renderDefaultTab","handleTabClick","disableTabAnimation","additinalClasses","noTabIndicator","hidePanelsWithCss","panelSlot","forcePanelRerenderOnTabChange","onMouseOver","setActiveTabId","disableRoundCorners","disableMinimumHeight","bannerPositionClassNames","centerBlockHorizontally","centerBlockVertically","contentLessPadding","contentLessHorizontalPadding","hasContent","belowTextSlot","renderHeading","RawPicture","textColor","BottomSlot","bothButtonsExist","wrapperClassNames","renderButton","margin","renderSecondaryButton","trackingRef","trackClick","usePromotionTracking","isClickable","MissingItemInfo","RecipeItemActionsContainer","RecipeItemActions","belongsToRecipes","SharedBetweenRecipesTooltip","substituteProductsAmount","SubstituteTrigger","RecommendationsBlock","gridAdditionalClasses","swiperMainClass","StateContext","DispatchContext","flyInContextReducer","triedToClose","triedToBack","triedToOutsideClick","block","outsideClickBlocked","backBlocked","closeBlocked","FlyInContextProvider","useFlyInStateContext","useFlyInDispatchContext","dispatchOrError","unblockAll","blockAll","setTriedToOutsideClick","setTriedToClose","setTriedToBack","unsetTriedToClose","unsetTriedToBack","unsetTriedToOutsideClick","MicroAppContextType","MicroAppContext","microAppContextType","useMicroAppContext","useIsInCheckoutMicroApp","Checkout","MicroAppContextProvider","microAppType","SiteContextType","SiteContext","siteContextType","useIsInsideModalContext","SiteContextProvider","isLocalApiBaseException","isLocalApiDefaultException","isLocalApiOpenIdException","isLocalApiValidationException","isCartException","isLocalApiKnownException","extractLocalApiValidationErrors","validationErrors","createDefaultException","general","HybrisResponseFieldsType","productRestrictedForBusinessUnit","productRestrictedForPrivateUser","productNotFound","CartModifications","Full","postCode","confirmed","deliveryModeId","CART_COOKIE_NAME","getCurrentCartId","currentCartFlow","cartApi","getCartSimple","createCartAsync","deliveryMode","currentZipCode","currentPickupPointId","homedelivery","pickup","pointOfService","Default","pickupDeliveryModes","addItemsBulk","productCode","varianceCode","replaceable","getCurrentTimeslot","selectTimeslot","changeItemVariant","newVariantId","getItemSubstitutes","rowNumber","incompleteProductIds","productFlow","getProductsByIds","newProductId","subsituteResponse","fullProduct","getProductById","productIdentifier","entryNumber","variantProduct","mapProductToApiFullCartItem","applyVoucher","removeVoucher","changeReplaceability","replaceAll","addToCartFromOrder","baseUrl","emailSubscriptionErrorInterceptor","axiosClient","getSubscriptions","preferNeoId","getStaticPageContext","DY","recommendationContext","getDynamicYieldData","hasConsent","DynamicYield","GoogleAnalytics","dynamicYieldIds","active_consent_accepted","dyId","dynamicYield","getDyId","dySession","dyid","dy","syncCookies","cookies","setCookies","getProductRecommendations","recommendationRequests","pageContext","pageAttributes","promotions","recommendationNames","names","returnAnalyticsMetadata","userFlow","getB2BContextCustomerGroups","productRecommendatons","apiRecommendation","selectedVariationId","variations","selectorName","slots","slot","mappedProduct","Product","mappedRecipe","sku","Recipe","keywords","custom","analyticsMetadata","getProductRecommendation","recommendationRequest","kimProxyApiUrl","kimProxyApiSubscriptionKey","kimProxyApiVersion","getCustomerData","getCustomerDataFull","deleteCustomerDataCache","changeEmail","kimProxyDirectApi","getConsents","subscribeConsents","serviceIds","identifiers","unsubscribeConsent","serviceId","extApimUrl","extApimSubscriptionKey","voucherApiUrl","transactionResponseInterceptor","addMemberResponseInterceptor","purchaseOfferResponseInterceptor","autoStatusResponseInterceptor","toggleCheckResponseInterceptor","externalLoyaltyApi","fromDate","fromYear","fromMonth","getPointTypeTranslated","pointType","cachedVouchers","getExpiringPoints","getEligibleForBonus","eligibleForPoints","getHouseholdMembers","members","getPointBalance","getPreviousMonthBonus","getPointsMatrixStructureLevel","getPointsSummary","getPointsSummaryYearly","getPointWithdrawalTransactionsHistory","trans","pointTypeTranslated","getPointTransactionsHistory","getMonetaryPurchaseTransactionsHistory","getVoucherDetails","purchaseOffer","offerId","specialCredentials","autoVoucherStatus","voucherResult","mmid","activateAutoVoucher","deactivateAutoVoucher","getConnectedCards","cards","deleteConnectedCard","addHouseholdMember","personalNumber","socialSecurityNumber","membershipNames","associations","UnknownPaymentType","PaymentType","mapTax","hTaxes","appliedValue","rate","mapShippedQuantity","consignments","orderEntry","shippedQuantity","mapRecipeList","hRecipeList","hRecipeEntry","recipeEntries","common","basePriceData","mapPrice","basePrice","originalQuantity","partOfRecipe","pickBasePriceData","pickBasePrice","recipeQuantity","updateable","hybrisPrice","inclTaxPrice","exclTaxPrice","valueWithoutTax","mapOrderStatus","mapOrderHistory","hOrder","actualDeliveryDate","editable","statusDisplay","deliveryWindow","stopTime","placed","deliveryAddress","editedOrderCode","partOfSubscription","totalPriceWithExtraAmountToReserve","cancellable","trackingID","appliedOrderPromotions","fromVoucher","mapOrderPromotionResult","hybrisPromotion","totalDiscountPriceData","totalDiscount","totalDiscountWithoutTax","appliedVouchers","hybrisVocher","hybrisOrderPromotions","orderPromotion","voucherCodes","voucherCode","freeShipping","compensationVoucher","externalReason","triggeredPromotion","notAppliedHint","mapVouchersResult","extraAmountToBeReserved","deliveryCostPriceData","deliveryCost","hDeliveryMode","hAddress","lastName","firstName","town","doorCode","street","line1","phoneNumber","companyName","stairs","productDiscountsPriceData","productDiscounts","totalProductPriceWithDiscounts","subtotalWithoutDiscountPriceData","subtotalWithoutDiscount","totalDiscountsPriceData","totalDiscounts","subtotalPriceData","subTotal","totalPriceWithExtraAmountToReservePriceData","totalTaxValues","totalTax","isPartOfSubscription","timeWindow","hTimeWindow","timeSlotTime","paymentModeFormatted","hPaymentMode","paymentMode","hSubPaymentInfo","subPaymentInfo","INVOICE","Klarna_INVOICE","INVOICE_BUSINESS","Klarna_INVOICE_BUSINESS","CARD","Klarna_CARD","ACCOUNT","Klarna_ACCOUNT","FIXED_AMOUNT","Klarna_FIXED_AMOUNT","DIRECT_DEBIT","Klarna_DIRECT_DEBIT","PAY_IN_X","Klarna_PAY_IN_X","BANK_TRANSFER","Klarna_BANK_TRANSFER","SWISH","Klarna_SWISH","PAY_BY_CARD","Klarna_PAY_BY_CARD","FIXED_SUM_CREDIT","Klarna_FIXED_SUM_CREDIT","Punchout_INVOICE","hEntry","ecomPromo","appliedPromotions","hPromo","medmera","promotionType","fixedUnitPrice","mapOrderPromoToEcomPromotion","variance","totalPriceWithoutDiscount","depositData","deposit","totalDeposit","discount","shippedUnitQuanity","replacesEntryNumber","mapOrderEntry","totalQuantity","recipeList","orderRecipeList","created","hSubscription","frequency","originalOrderCode","trackingId","transaction","resp","createDeferred","resolveFunc","rejectFunc","constructFullCacheKey","ResourceProvider","ongoingFetchCalls","cachedItems","getItemsById","_ids","resolvedFromCacheIds","idsToFetch","splitItemsToFetch","getItemsFromCache","pendingFetchPromise","getOrGreateItemFetchpromise","insertItems","removeFetchPromise","queuePosition","debouncedFetch","itemIds","getItemFromCache","ongoingFetchCall","started","FetchContext","chunkedIds","flat","itemId","DirectProductProvider","singleInstance","getItemsMap","mapNavCategory","navCategory","categories","superCategories","childCategories","escapedName","resolveNutritionFacts","loopNutritionFacts","nutritionFacts","nutFact","percentageOfDailyIntake","filterBadge","resolveBadges","searchProduct","badges","localProduct","newItem","ageRestriction","consumerInformationSymbolCodes","consumerInformationBadges","accreditedTags","imageIdentifier","imagePath","resolveHealthBadges","healthSafetyLabels","resolvePriceData","loopPrice","b2cPrice","b2bPrice","resolveConsumerInstructions","loopConsumerInstructions","storageInstructions","usageInstructions","resolveReplacementCountries","loopReplacementCountries","country","resolvePromotions","promos","onlinePromotions","loopPromo","promoDetails","loopOnlinePromotion","maxNumberOfUseWithUnit","medMeraRequired","resolveMultiBuyPromoDetails","resolvePercantagePromoDetails","salesUnit","piecePriceData","resolveFixedPricePromoDetails","parsePromoDetails","resolveProductBrand","manufacturerName","originCountry","isWeightSalesUnit","salesUnitCode","mapLoopProduct","navCategories","categoryList","resolveSections","variety","category","resolveProductUrl","ean","comparativePriceText","priceUnit","packageSizeUnit","listOfIngredients","packageSize","nutrientInformation","nutrientLinks","healthAttributes","healthSafetySignalWordsCode","healthSafetyPrecautionaryStatementText","healthSafetySignalStatementText","maximumStorageTemperature","maxStorageTemperature","isAgeLimited","alcoholPercentage","percentageOfAlcoholByVolume","declarationOfOrigin","countryOfOriginCodes","catchData","storageStateCode","nonFoodIngredientStatement","sustainabilityInfo","sustainabilityInfoApplicable","historicalPriceData","searchProductVariants","variances","weight","taxRate","promotionProductsEans","isMagazine","consumerInstructions","compulsoryAdditiveLabelInformation","replacementCountries","preparationInstructionsList","regulatedProductName","animalFoodData","regulatedArticleDescription","directResponse","getProductsByIdsMap","getProductsForPromotion","promotionId","overwritePersonalizeCampaigns","loopRequest","resultsOptions","customData","personalizeCampaigns","prepareEventRequestParams","eventRequest","defaultTrackEvent","b2bUser","identify","cuid","cuidType","calculateTrackingData","trackedPrice","promotionPrice","eventsRequest","platformType","failSilently","slotClick","clickEvent","eventEntity","addToCart","revenue","purchase","purchaseEvent","itemPrice","recipeClick","dynamicYieldFlow","removeFromCart","userAddressApi","userFlowQueue","userInfoQueue","customersGroupQueue","userAddressesQueue","customerGroupsMap","businessgroup","b2bgroup","privatecustomergroup","createAddress","fetching","userAddress","idle","updateAddress","removeAddress","fetchAddresses","userAddresses","punchoutUnit","unitId","orgUnit","addresses","fetchUserAddresses","removeDublicateAddresses","areAddressesEqual","address1","address2","getUserType","resultAction","getUserCustomerGroups","customerGroupsSession","customersGroup","userGroups","hGroup","exError","enableB2B","fetchProfile","userProfileApi","updateFoodRegisteredCompany","foodRegisteredCompany","getPunchoutUnit","AsyncDispatcherError","viewItemList","selectItem","useA11yLogInConsole","a11yLogsInConsole","selectDebug","useA11yLogInConsoleEffect","useConstant","debounced","debounceTime","asyncError","asyncExecute","opt","initialResultState","initialErrorState","clearError","asyncFun","asyncCall","useEventCallback","resetState","labels","trackCartItemQuantityUpdate","trackRemoveFromCart","buyableProductEventsTrackingPriceType","buyableProductEventsTracking","onAddToCartTrack","quantityChangeData","mapToProductTrackingData","onQuantityUpdateTrack","onRemoveFromCartTrack","initialVariant","productVariants","useCartDispatchers","addToCartDispatcher","_productId","_variantId","_quantity","_onAddToCart","updateQuantity","addUnsyncedCartItem","MiniCart","updateQuantityDispatcher","_newQuantity","_previousQuantity","_onCartItemQuantityUpdate","removeFromCartDispatcher","_onRemoveFromCart","useBuyableState","onAddToCartDone","onQuantityUpdateDone","onRemoveFromCartDone","handleQuantityUpdate","useBuyableProductState","unsyncedCartItem","setCurrentVariant","selectUnsyncedCartItemByUniqueId","useExistingCartItemState","addToCartDispatcherExecute","removeFromCartDispatcherExecute","updateQuantityDispatcherExecute","addToCartCallback","onQuantityUpdateCallback","onRemoveFromCartCallback","dispatchSetTo","setTo","PostalCodeSelector","reloadOnClose","previewPostalCode","navigationParams","currentStepNavigationParams","CncFlyIn","removeUnsyncedCartItems","navigateTo","dispatchNavigateTo","forceReloadOnClose","preferredPriceType","getPriceTypeForContext","setPricesWithoutTax","priceTypeStorage","setPriceType","setPricesWithTax","unsyncedCartItems","selectUnsyncedCartItems","setPickupStoreExecute","selectPickupStore","addItems","setPickupStore","setDeliveryStoreExecute","selectHomeDeliveryStore","setDeliveryStore","selectedPickupPointId","selectedZipCode","elementsToUpdateByTag","readyForReactHelmet","setReadyForReactHelmet","stringifiedElements","parsedElementsToUpdateByTag","tagEl","htmlPropertyNameToSet","handleResize","favouriteRecipesAnonymousCookie","rawCookie","externalRecipeId","fetchFavoriteRecipeIds","favoriteExternalRecipeIds","favoriteRecipes","favouriteRecipesAnonymous","useFavoriteRecipeIds","gcTime","useSingleFavorite","removeResult","save","saveResult","favouriteRecipeExternalIds","queryClient","saveRecipes","invalidateQueries","removeRecipes","_externalRecipeId","useFavouriteSingleRecipe","favoriteRecipe","useFlyInNavigationCloseInterceptor","useFlyInNavigationBackInterceptor","back","useFlyInNavigationOutsideClickInterceptor","errorsSelectors","selectByGroup","selectFirstByGroup","useAddGroupError","addSingle","useGroupErrorEffect","addGroupError","clearErrorCallback","addErrorWhen","clearErrorCallbackMemoized","template","scriptElement","createScriptElement","exScript","useTopLevelModal","uniqueId","typeOrGenerated","isModalTypeOpen","topLevelModalIsOpen","topLevelModalOpen","topLevelModalClose","localModallIsOpen","localModalOpen","localModalClose","useLocalModal","modalIsInisideAnotherModal","useModalLoader","dispatcher","handleAsGlobalErrorWhen","useRequestErrorHandling","useRequestLoading","onSettled","useSwiperOverflowClasses","swiperIsXConstrained","swiperIsYConstrained","useAppDispatch","useAppSelector","useUserProfile","useIsUserAuthenticated","useIsUserAMember","useIsUserCompany","useHasUserAKimCustomerId","useShoppingUserId","userTypeState","userState","loadUserType","userQueryKeys","useUserTypeQuery","initialData","QueryCache","queryHash","defaultQueryOptions","getQueryDefaults","queryInMap","notifyManager","filters","defaultedFilters","findAll","queries","onOnline","MutationCache","mutationCache","mutationId","defaultMutationOptions","scope","scopeFor","canRun","firstPendingMutation","runNext","foundMutation","isPaused","continue","resumePausedMutations","pausedMutations","getNextPageParam","pageParams","lastIndex","getPreviousPageParam","coopQueryClient","queryCache","mount","focusManager","focused","onlineManager","online","isFetching","fetchStatus","isMutating","getQueryData","ensureQueryData","cachedData","fetchQuery","defaultedOptions","revalidateIfStale","isStaleByTime","prefetchQuery","getQueriesData","setQueryData","prevData","setData","manual","setQueriesData","getQueryState","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","defaultedCancelOptions","revert","invalidate","refetchType","fetchOptions","cancelRefetch","throwOnError","fetchInfiniteQuery","onFetch","fetchFn","direction","fetchMore","oldPages","oldPageParams","empty","fetchPage","previous","queryFnContext","pageParam","maxPages","addTo","oldData","initialPageParam","remainingPages","persister","prefetchInfiniteQuery","getQueryCache","getMutationCache","setDefaultOptions","setQueryDefaults","queryDefault","setMutationDefaults","mutationKey","getMutationDefaults","_defaulted","refetchOnReconnect","networkMode","suspense","refetchOnWindowFocus","checkRedundantEpiPaqeQueries","allEpiPageQueryKeys","keysByUrl","checkRedundentEpiPaqeQueryByDepthParam","keysByContentReference","unique","isQueryKeyNearlyEqual","key2","key1","depth","listenerMiddleware","currentStoreId","unsyncedCartItemsSelectors","unsyncedItem","setPageGaData","mountCounter","canonicalPathName","gaPageTypeName","pageTitle","middlewareInstance","updateCartItem","cartState","fullCart","trackItem","updateCartItemGaTrackingMiddleware","ecommerce_cart_recipes","edit_order","isInEditOrderMode","updateDatalayer","updateCartRecipeGaTrackingMiddleware","debug","postUrl","specId","punchoutUserInfoReducer","punchoutUserInfoActions","medmeraId","isMunicipal","epi","userProfileActions","userProfileReducer","userInfo","municipalUserInfo","checkout","enableDevTols","logDev","errorDev","mockMunicipalUI","comments","commentAboutCustomer","municipalityCode","municipalityUnitCode","mockShoppingForAnother","mockEditOrderUI","mock","mockPunchoutUI","orgUnitName","agreementId","gln","toggleA11yDevTool","a11yDevToolEnabled","addProductsInDocument","setExcludeTaxPriceType","setIncludeTaxPriceType","getRenderedSSRprops","reactProps","togglePreheader","setFeatureFlag","hidePreHeader","trackActiveElement","getServerData","ReactQueryDevtools2","ErrorBoundaryClass","hasError","resetError","errorSeverityLevel","errorFallbackUI","CriticalErrorBoundry","useNotificationOnError","errorCallback","ErrorGroupBoundary","Critical","behaviour","ctaProps","ANNOUNCER_TYPE","CurrentPageTitleAnnouncer","portalNode","setPortalNode","announcer","existingAnnouncer","childNodes","getAnnouncerNode","createAnnouncerNode","isConnected","useAnnouncerPortalNode","announcedTitle","accessibleTitle","currentPageSelectors","selectA11yPageTitle","setAnnouncedTitle","previousAnnouncedTitle","useCurrentPageTitleAnnouncer","CurrentPageAnnouncer","allyAnnounceText","selectA11yAnnounceText","initialQueryClientData","QueryClientProvider","routerBasename","RouteChangeFocusManagement","initialIsOpen","buttonPosition","CoopDevTools","moveFocusAfterSoftNav","focusTarget","createSoftNavFocusTargetNode","locationChanged","debugA11yFocusOnSoftNavDisabled","selectDebugA11yFocusOnSoftNavDisabled","BaseLazyComponents","WideUspBlock","ReplaceableTextBlock","SideBarMenu","EpiServerBlocks","EpiBlockLoader","CustomerServiceBlock","EcommerceLazyComponents","SingleImageTextBlock","DoubleImageTextBlock","TripleImageTextBlock","RecipeItemPagePartial","MemberLazyComponents","ApplyExtraMMCard","MemberPanelBlock","ApplyCardBlock","mountableReactComponents","isMountableReactComponent","buildReactComponentSelectorByName","buildReactComponentSelectorById","buildReactPageSelector","getReactComponentData","cmpId","reactId","reactComponent","cmpPropsString","cmpError","reactError","isPartialPage","reactIsPartialPage","getReactBlocksDataFromDom","getReactPageFromDom","reactPageDomElement","errorPrefix","getInitialQueryDataFromDOM","domModelString","domDepth","domType","domUrl","domContentReference","contentReference","domModel","getByUrl","getByContentReference","microApp","initialQueryDataDom","initialQueryData","ssrData","isMultiBuyPromotion","isFixedPricePromotion","isPercentagePromotion","mapPrices","prices","factor","mapVariantPromotion","PriceType","RecommendationType","BUSINESS_TOGGLE_COOKIE","FAVORITE_STORES_COOKIE_NAME","RECIPE_RATINGS_COOKIE_NAME","FAVORITE_RECIPE_COOKIE_NAME","ALERTS_DISMISSED_COOKIE_PREFIX","COOKIE_LOGIN_REMINDER","KEY","getMainStorage","abTestStorage","abTest","getAlertKey","alertId","cookieName","DY_ID_COOKIE_NAME","DY_SESSION_COOKIE_NAME","DY_SERVER_COOKIE_NAME","validCookies","maxAge","removeCookies","eraseCookie","STORE_CONTEXT_COOKIE","storeContextCache","storeContextCookie","decodedCookie","atob","getDefaultStoreContext","storeName","defaultStoreId","getEcommerceSectionsKey","isB2bRoute","sectionListStorage","insertedAt","setMinutes","isCompanyUser","sectionTree","tree","sectionTreeStorage","getStorageKey","storageKey","getCurrent","SessionStorageFacade","SESSION_KEY","SESSION_STORAGE_DEV_TOOLS_KEY","getAllPreferences","activePanel","saveAllPreferences","preferences","coopDevToolsSession","getOpenPreference","saveOpenPreference","saveActivePanel","getActivePanel","getSessionKey","ecommerceSections","recipeRatings","cartEditOrderNumber","editOrderNumber","isInCartEditOrder","cartEditOrderTimeslotStartTime","cartEditOrderTimeslot","cartEditOrderTimeslotEndTime","cartSelectors","selectedTimeslot","isSelected","isProductDataAvailable","hasSelectedTimeslot","editOrderDate","editOrderExpirationTime","editOrderTimeout","isInEditOrder","editOrderSummary","editOrderTimeslot","a11yTitle","a11yContextSpecificPageTitleAnnouncementsEnabled","a11yAnnounceText","debugSelectors","selectA11yDevToolEnabled","a11yFocusOnSoftNavigationEnabled","_2","currentType","currentId","selectedDeliveryMode","isHomeDeliverySelected","isPickupSelected","_isHomeDeliverySelected","_isPickupSelected","currentStore","selectedStore","_currentProductionUnit","uiSelectors","stepTrail","selectPreviousStep","selectStepNavigationParam","selectProfile","selectFirstName","selectLastName","selectIsAuthenticated","selectIsCompany","selectIsMember","selectHasKimCustomerId","selectShoppingUserId","selectUserId","selectIsEpiUser","fullName","initials","productsAdapter","recipesAdapter","userAddressAdapter","initLoading","finishLoading","editOrderSubtotalDifferencePriceData","editOrderSubtotalPriceData","editOrderTotalDifferencePriceData","editOrderTotalPriceData","editOrderPayment","cartEditOrderSlice","cartEditOrderActions","cartEditOrderReducer","changeCartItemQuantity","changeCartItemReplaceability","setAllCartItemsReplaceability","prevItemId","prevProductId","prevVariantId","newCartItem","restoreItem","itemIndex","cartActions","cartRecipeActions","cartEditedOrderItemsSlice","cartEditedOrderItemsActions","cartEditedOrderItemsReducer","cartPreviousOrderItemIdsSlice","cartPreviousOrderItemIdsActions","cartPreviousOrderItemIdsReducer","cartSectionsSlice","sectionIndex","cartSectionsActions","cartSectionsReducer","leftToCheckout","inCredit","tax","deliveryFeePriceData","productDiscountPriceData","totalDepositSum","productSumPriceData","productSumWithoutDiscountPriceData","totalPriceExclReservationFee","minimumShoppingValue","setFullCart","combined","ecoFriendly","expectETANotification","fullyBooked","shippingType","timeSlotDay","timeslotType","cartTimeslotActions","cartTimeslotReducer","checkoutResetAction","checkoutErrorAction","checkoutInitAction","checkoutSuccessAction","checkoutClearAction","startFetch","finishFetch","errorReducer","selectedDeliveryAddress","selectedPaymentMethod","selectedInvoiceAddress","messageToDriver","messageToDriverActions","setMethod","setKlarnaInitialized","isKlarnaLoaded","setKlarnaPostalCode","klarnaPostalCode","paymentMethodActions","paymentMethodReducer","setPhoneNumber","punchoutActions","punchoutReducer","selectDeliveryAddress","getDeliveryAddress","selectedDeliveryAddressActions","selectedDeliveryAddressReducer","invoiceAddress","selectedInvoiceAddressReducer","selectedInvoiceAddressActions","subscriptionFrequencyActions","subscriptionFrequencyReducer","canonicalUrl","setTitle","setA11yTitle","currentPageActions","errorsActions","errorsReducer","setBool","featureFlagsActions","openModal","actionsAndReducer","modalReducer","syncStore","syncStoreWithCookie","productionUnitIdentifier","cookieState","storeActions","goBack","clearNavigationParams","setPreviewPostalCode","existingStepInTrail","cncUiActions","mockReclamationUI","notInProd","toggleA11yContextSpecificPageTitleAnnouncements","toggleFocusOnSoftNavigation","toggleA11yLogsInConsole","debugActions","defaultSharedUiState","hideSubMenu","layoutSize","contentPageSize","userName","getElementById","parsedLayoutSettings","setContentPageSize","sharedUiActions","cncNavigateTo","cncSetTo","existingIndex","addUnsyncedCartItems","unsyncedCartItemsActions","municipalUserInfoActions","municipalUserInfoReducer","userAddressesSlice","setUserAddresses","updateUserAddress","createUserAddress","removeUserAddress","fetchingAction","idleAction","isFetchingReducer","userAddressActions","userInfoActions","userInfoReducer","getInitialUserType","company","private","anonymous","userTypeActions","userTypeReducer","ErrorGroup","StoreChangeNotificationType","FoodRegisteredCompanyModalType","WeeklyMenuModalType","LastOrdersModalType","SavedCartsModalType","ReplaceMissingItemsNotificationType","MyOrdersModalType","EditOrderNotificationType","ShoppingListNotificationType","ShoppingListType","ZoomProductImageType","FlyInType","StoreModalType","RecipeModalType","DropdownType","FullOverlayType","TimeslotModalType","DeliveryMode","CncStep","UserType","cartQueue","timeslotQueue","getCartSilent","cartProducts","newCartState","cartData","cartPromo","cost","milisecondsToExpire","getInitialImmutableState","entityState","sharedProductsMap","normalizeRecipeData","cartSectionsDictionary","cartSections","otherSection","ID","NAME","connectedProduct","productSection","sortedSections","alphabeticSortAscPredicate","normalizeSectionData","relevantFields","includedInRecipes","normalizeCartToReduxState","buildCartState","storeThunks","currentTimeslot","selectTimeslotWithStore","changeVariant","silent","previousCartItemState","cartErr","deliverMode","currentProductionUnitId","updatedStoreContext","coopStore","cookieSettings","ensureStoreContextInSync","syncStoreContext","simulateResult","mapped","mapSimulationResult","confirmMissingItemsReplacement","deliveryType","productsToBulkAdd","simulated","forStoreId","removedCartItems","sendGaInteractionClickEvent","clickWithCustomerSegment","customerSegment","sendGaNavigationInteractionEvent","currRoute","clickedRoute","sendGaInteractionWithoutCustomerSegment","trackAddToCartBulk","trackPurchase","purchaseData","transactionId","totalValue","personalizationTracking","sendGaTimeslotInteractionEvent","isHomeDelivery","deliveryModeText","reservationText","gaContextEventFormatted","CnC","getGaFormatTimeslotFunction","timeslotTracking","calendar","nextTimeslot","deliveryModePretty","toLocaleDateString","hoursUntilNextTimeslot","deliveryDate","deliveryTime","deliveryMethod","nextDelivery","gaProductListDropdownLabel","openProductListDropdown","vatSelectionClick","clickText","click_text","event_key","viewBonus","page_type","navigateBonusInteraction","clickUrl","click_url","walletInteraction","walletLevel1","walletLevel2","wallet_level_1","wallet_level_2","viewHowDoesItWork","viewLastMonthBonus","chartInteraction","viewSavedBonus","bonusInteraction","inputProductData","productsWithVariants","productsToAdd","productsToRemove","mappedItems","item_list_id","item_list_name","currency","recipe_type","order_status","addProductItems","removalActionType","removeProductItems","_products","previousProducts","currentProducts","changedItems","highAmountInCartImpression","viewCart","inputData","addToWishlist","replacedItems","removeItems","miniCartRecipeAccordionClick","recipe_name","cartRecipeSubstituteTriggerClick","item_id","item_name","button_text","emailSubscriptionInteraction","mapProductToGaEcommerceItem","beforePromotionPrice","selectedVariant","item_variant","mapProductToGaItemWithDetails","gaItem","item_brand","item_category","item_category2","item_category3","getGaTotalProductsValue","getGaMinimalProductKey","getGaProductsWithVariantsMap","getGaProductsWithVariantsList","getGaChangedItems","mergedProducts","previousProductsMap","previousProduct","REPLACED_ITEM_LIST_NAME","buildViewItemListEvent","listId","listName","viewItemListBatcher","createBatcher","sendSplittedData","dataChunk","gaList","viewItem","mappedItem","viewReplacedItemList","originalProductId","original_product_id","viewUnavailableItemList","OUTBOUND_DISALLOWED_DOMAINS","OUTBOUND_DISALLOWED_KEYWORDS","OUTBOUND_DOMAINS_WITH_URL_IN_QUERYSTRING","hostname","urlInQueryString","linkDomain","getOutboundClickEventData","click_domain","menuLevel1","menuLevel2","pageTypeNameForAnalytics","menu_level_1","menu_level_2","profileMenuInteractionTrigger","savedItemsInteractionTrigger","hamburgerMenuInteractionTrigger","deliveryTimeInteractionTrigger","preHeaderNavigationClick","onPageNavigationClick","sideMenu","hamburgerMenu","menu_level","isPromoDataAcceptable","formatGaCreativeSlot","mapToGaPromotion","idAndNameMissing","promotion_id","promotion_name","creative_name","creative_slot","mappedPromotion","viewPromotionChunked","maxSliceCount","recipe_id","feature_name","weeklyMenuRecipeInteraction","recipeType","menuConfiguration","menu_configuration","recipeRecommendationsClick","eventType","buyableRecipe","buyableFoodbox","weeklyMenu","filterRecipes","filter_category_1","recipeAdClick","promoId","creativeName","creativeSlot","reviewRecipe","addRecipe","arrowClick","cardNumber","card","categoryPillClick","handleIngredient","event_action","faqClick","pdpRecipeRecommendations","buyButtonClick","recipeTeaserClick","plpRecipeRecommendations","mapSearchFeatureName","StartPage","Ecommerce","Stores","Member","Finance","viewSearchResultSuggestionClick","click_path","viewSearchResults","actualSearchTerm","originalSearchTerm","totalResultNumber","search_term","search_term_inferred","search_feature_name","search_results_number","actionTrigger","search_term_action_type_trigger","searchDropdownAction","searchDropdownItemAction","itemName","noSearchResults","searchType","searchTerm","featureName","mapSearchTypeToGa","searchIconClick","mapDeliveryModeToGA","mapDateRangeToGA","mapDateWeekdayToGA","mapDateToGA","mapGaList","sendEvent","sendGA4Event","sendUntypedGA4Event","shoppingList","check","contactInfo","customerType","customer_type","accountSettingsInteraction","sendGaModifyCartEvent","useSearchOverlayGA4ActionTracking","originalQuery","originalQueryToTrack","queryUsedToTrack","previousOriginalQuery","trackSearchAction","trackSearchDropdownAction","trackSearchDropdownItemAction","useEcommerceSearchOverlayGA4ActionTracking","totalResults","trackAutocompleteItemClick","getSelectedCategories","parentName","categoryFacets","categoryFacet","getRecipeComboHit","selectedCategoryFacets","childrenStr","ValueContext","recipeComboHit","useRecipeFilterTrackingContext","userInteraction","experiment_name","experiment_variant","sendHomeDeliveryTabInteractionClick","sendHomeDeliveryBillingTabInteractionClick","sendHomeDeliveryAddressInteractionClick","sendHomeDeliveryEditAddressInteractionClick","sendGaReplacableItemSwitchInteractionClick","sendPickupDeliveryTabInteractionClick","sendPickupDeliveryBillingTabInteractionClick","sendPickupDeliveryAddressInteractionClick","sendPickupDeliveryEditAddressInteractionClick","sendPickupDeliveryAddAddressInteractionClick","sendGaSubscriptionInteractionEvent","subscriptionInterval","replaceItems","clickAll","clickProductCheckbox","delivery","tabClick","cancelConfirm","cancelCancel","pickupStore","change","contactAddress","flyIn","editClick","removeConfirm","removeCancel","homeDelivery","messageToDriverClick","loginDialog","editOrderTotalPrice","editOrderTotalDifference","tidigareBetalt_metric9","truncateDecimalsWithSeparator","POSTAL_CODE_PREVIEW_EVENT_ACTION","POSTAL_CODE_SELECTOR_EVENT_ACTION","MINI_CART_EVENT_ACTION","POPUP_CHANGE_DELIVERY_OPTION","getEventAction","TimeSlots","PostalCodePreview","sendDeliveryOptionEvent","createSendDeliveryOptionEvent","goToZipCode","readMoreExpress","home","newStore","deliverySearch","Utbud","seeMore","goToDeliveryOption","goToTimeslots","goToMap","createSendMiniCartEvent","goToCheckout","startShopping","startEmptyCart","createSendStoreChangeEvent","storeChange","deliveryOption","accept","decline","sendPostalCodeSelectorEvent","sendPostalCodeZipCodeUpdateInteraction","sendOpenCncEvent","hasSelectedZip","zipCodeAlreadyChosen","noticeRibbonDefaultStore","miniCart","selectPostalCode","inputFirst","inputUpdate","goToCreateLogin","campaign","selector_name","campaign_id","campaignId","campaign_name","campaignName","experience_id","experienceId","experience_name","experienceName","variation_id","variationId","variation_name","variationName","cookingTime","actualCookingTime","amountOfIngredients","modalName","modalTitle","slugify","recipeCookingTime","recipeStartTab","recipePrefilledPortions","recipeAmountOfIngredients","modalButtonClick","modalLinkClick","previousPortions","sustainability","openFlyin","closeFlyin","applyFilter","selectedFilters","hasAnyFiltersSelected","markning","varumkare","selectedEnvironmentalLabels","selectedBrands","eventPayload","clearFilters","currentProductOffers","createSendLoginReminderEvent","ACCOUNT_TYPE_TO_TEXT","Matkonto","Matkonto_Credit","Matkonto_Invoice","loginWithBankIdStart","accountType","loginService","loginAttempt","userService","loginWithBankIdSuccess","getCustomerSegment","getServiceEventAction","matkonto","myPoints","showAllPointsHistory","showWithdrawnPointsHistory","togglePositiveTransaction","toggleNegativeTransaction","myProfile","subscribeToWeeklyNewsletter","ORDER_RECLAMATION_EVENT_CATEGORY","REFUND_INTERACTION_EVENT","getStepEventAction","getNextStepEventAction","nextStep","goToStep","submit","refundType","submitFinished","orderReclamationProducts","productList","apiProduct","topSection","orderItem","refundReason","reclamationReason","totalRefundAmount","currentTotal","orderReclamationProduct","refund","refundAmount","useFilterPageTracking","nonInteractionEvent","recipeHits","recipeCombo","sendRecipeNonInteractionEvent","categoryLinkClick","recipeCategoryFacet","parentCategoryFacet","recipeCategory","sendRecipeCategoryInteractionClick","sendRecipeTeaserClick","resultsPage","formattedSearchResultType","promoImpression","resultClick","overlay","contextAware","timeslots","orderReclamation","sendInteractionEvent","batchDebounceTime","currentBatch","sendDebounced","itemToBatch","callbackWhenError","maxCountPerSplit","sendEventFunction","dataSplitted","sendGaVirtualPageView","virtualPageURL","virtualPageTitle","isAriaCurrentPage","pathToMatch","currentPagePath","b2bStartPageSegment","segmentUrl","currentSegments","removeEmptyEntries","segmentsToMatch","B2B_SEGMENT","isB2BMode","isB2BWindowLocation","getIsRouteB2B","firstSegmentsOfB2Broutes","b2bRoutes","currentPathnameFirstSegment","useIsB2BRoute","isWindowB2BRoute","isRouterB2BRoute","isInB2BCrossContext","getCloudinaryUrl","getTransformedImageUrl","getFallbackImgUrl","sanitizedUrl","makeImagePathSeoFriendly","makeImageIdentifierSeoFriendly","removeStartingSlash","getAnonymousCustomerGroups","getRobotsContent","noIndex","noFollow","getCanonical","isInteger","getNextPage","getPrevPage","stringifiedParams","SESSION_STORAGE_NEO_IDENTITY","getNeoId","storedNeoId","isNumeric","isFinite","orderEntryItemEqualsPredicate","orderEntryEqualsPredicate","convertToFriendlyDateString","lowerCase","comma","allowYesterday","weekday","getDay","dateIsToday","tommorow","dateIsTomorrow","dateIsYesterday","convertTimeWindowToFriendlyString","orderTimelineStepAccessibleName","orderStatus","isAttributeEko","isAttributeNicotine","getAgeRestrictionBadge","ageRestrictionAttribute","isAttributeAgeRestriction","filterProductAttributes","isEuOrganic","filteredAttributes","isKrav","identiier","hiddenProductLabelsIds","getTopProductSection","mapProductToEcomPromotion","promoHighestPriority","mapProductToProps","eanCode","healthattributeLabels","countriesOfOrigin","listOfNonFoodIngredients","storageState","compulsoryAdditiveLabel","productScore","isProductObjectsEqualPredicate","product1","product2","isProductEqualPredicate","product1Id","variant1Id","product2Id","variant2Id","getFormattedPackagingInfo","getFormattedComparativePrice","isNortforkRecipeFoodBox","foodBagTagId","foodBoxTagId","gt","getStickerUrl","keyword","imageStickers","_sticker","mapToIngredientProps","ingredient","usePlural","pluralName","singularName","sequenceNumber","prePreparation","postPreparation","quantityFromattedText","parsedQuantity","formatNumber","mapToRecipeCookingInstructions","recipeCookingInstructions","regexTitleStart","regexAllTags","instructionTitle","instruction","regexTitleEnd","titleAndInstruction","getRecipeSubCategoryNames","categoryName","recipeSubCategories","recipeCategories","getRecipeSubCategories","getMinutesFromTimeParts","timeDigit","timeUnit","digit","timeInMinutes","getCookingTimeInMinutes","timeMatch","time2","unit2","time3","unit3","mapToComments","isAdmin","mapToRecipeProps","stickers","numberOfAllIngredients","recipeParts","portionsUnit","yieldUnit","stickerUrl","ratingPercent","ratingCount","ovenTemperature","prepTime","preparationTime","servingTips","tips","numberOfIngredients","recipeCreator","diactricMap","alphaNumericAndDashOnlyRegEx","doubleDashesRegEx","urlFriendlySlug","cleanedUrl","trimEnd","toTrim","trimStart","ensureLeadingSlash","ensureLeadingCharacter","ensureTrailingSlash","ensureTrailingCharacter","ensureSlashes","trimTrailingSlash","trimSlashes","toTitleCase","safeSplit","firstLetterTitleCase","separator","getLoginParams","intent","prompt","returnUrl","getCreateAccountUrl","getLoginUrl","getLoginUrlWithReturnUrl","stayOnPage","defaultReturnUrl","myCoopUrl","addQueryParamsToUrl","paramValues","currQueryString","removedPotentialLastSlashFromPath","urlSearchParams","consent","dontNavigateToFullResults","addToCartSilent","buildAllProductResultsUrl","searchQuery","EcommerceSearchOverlayResults","disableModalFocusBackToTrigger","setDisableModalFocusBackToTrigger","usedQuery","navigateToResultsPage","_usedQuery","_originalQuery","onFullResultsClick","dontNavigateAway","onHintClick","onItemAddToCartClick","onItemRemoveFromCartClick","SearchAutocompleteAbTestContext","isVariant","useSearchAutocompleteAbTestContext","SearchAutocompleteAbTestProvider","autocompleteResult","useProductSearchStateContext","handleEnterPress","hints","ss","SearchAutocomplete","placeholder","inputValue","onInputChange","showEmptyStateWhen","showErrorStateWhen","hint","overlayMaxHeight","textValue","calculateRowFromIndex","elementsInRow","rowPosition","renderLast","withNotification","searchProductsFunction","isAutocompleteAbTest","searchPromise","spellingSuggestions","searchProductsLoop","resultsPerPage","facets","sortBy","autocomplete","RouterContext","useRouterContext","RouterContextProvider","isAbTestPreview","calculateAbTestValue","randomNumber","stringToHash","chr","randomizePersistant","useAbTest","trackOnce","trackInteraction","isResultVariant","isTestEnabled","epiAbTest","abTests","abTestValue","modified","setupAbTest","useImperativeAbTest","alreadyTrackedRef","trackAbTest","epiAbTests","abTestsToRemove","epiTest","cleanupAbTests","breakpointAreaName","windowSize","setWindowSize","innerHeight","breakpointArray","getBreakpointsFor","breakpointRanges","getCellsInRow","setCellsInRow","inRow","useBreakpointsSidebar","isProductRecommendation","recommendationItem","getRecommendationUniqueIdentifier","useDynamicYieldRecommendations","useVerticalProductTeaserContainer","containerType","hasBanner","AREA_NEW_PRODUCT_GRID","AREA_NEW_PRODUCT_LIST_WITH_BANNER","AREA_NEW_PRODUCT_LIST","getProductTeaserContainerBreakpointAreaName","punchoutQueryKeys","usePunchoutOrgUnit","userTypeQuery","isPath","routerContext","isReactRouted","pushPath","isRedirect","prepareLocation","newLocationState","pushLocation","newLocation","fetchProductRecommendations","buildEcommerceSectionUrl","escapedNames","buildAbsoluteUrl","relativeUrl","buildSubSectionUrl","sectionTrail","sectionsUntilIndex","subSections","buildProductUrl","baseProductUrl","productBaseUrl","buildProductRedirectUrl","mapContentParams","expand","contentDeliveryApi","getContentByUrl","urlPath","getContent","contentReferenceId","getContentExtended","getMultipleContents","contentReferenceIds","references","serializedParams","getMenu","withAncestors","withContainers","getMenuByUrl","EpiComponentTypeEnum","lazyComponents","getEpiComponent","componentData","componentType","contentType","Block","Page","isContentAreaItem","PagePartial","getEpiComponentType","contentTypeToMount","getEpiComponentData","modulePromise","messageText","EpiEmptyComponent","lazyModule","getEpiComponentModule","LazyComponent","expandedValue","epiTag","itemCssClass","areaItems","expanded","contentAreaItem","epiComponentProps","contentAreaItemClasses","displayOption","guidValue","mapEpiButtonLinkPropertyBlock","mapEpiButtonPropertyBlock","mapEpiButtonTheme","marginRight","exhaustiveGuard","mapEpiImagePropertyBlock","imageBlock","images","cloudinaryImageUrl","breakpointFrom","defaultImageUrl","defaultCloudinaryImageUrl","defaultImage","defaultImageHeight","mapBlockPropToImageTextPropertyBlock","adBlock","imageProperty","useEpiPageByContentId","queryOptions","placeholderData","useEpiPageByUrl","useCurrentPageEpiBasePath","allowWildCards","pathParams","firstClientOnlySegmentValue","firstClientOnlyParamIndex","basePath","EPI_PAGE_KEY","BY_URL_KEY","BY_CONTENT_REFERENCE_KEY","epiPageQueryKeys","byUrl","byContentReference","isEpiPageByUrlQueryKey","isEpiPageByContentReferenceQueryKey","getCssClassForDisplayOptionWithDefaultTag","potentialCssClass","blockDisplayOptionToCssClass","baseChildrenCssClass","filterContentArea","contentArea","filterContentType","contents","isEpiEditMode","mapEpiPageHeadData","metaDescription","isEpiPageViewSettings","MEMBER_CONSENT_QUERY","MEMBER_CONSENT_NEWSLETTERS_EMAIL","MEMBER_CONSENT_NEWSLETTERS_SMS","MEMBER_CONSENT_NEWSLETTER_STORE","ADOBE_MEMBER_CONSENT_NEWSLETTERS_EMAIL","defaultDataSet","kimPhoneNumber","customerData","typeOfAddress","addressVerified","autoVoucherStatusQueryKey","kimCustomerDataQueryKeys","fullDatSet","byEmail","eliableForBonus","householdMonetaryBalance","pointsQueryKeys","expiringPoints","expiringPointsByNumberMonths","allOffers","pointBalanceByMonth","previousMonthsBonus","householdBalance","pointsMatrixStructureLevel","member20PointsSummary","member20PointsSummaryYearly","searchedPointOffer","byIds","offerPropositionHistory","byRedeemed","includedRedeemed","byDate","vklVoucherDetails","byTransactionGuid","myCoopSettings","bonusInfoNotificationHeadline","bonusInfoNotificationText","queryKeyName","consentSubscriptionsByNeoId","consentSubscriptionsByMmId","consentSubscriptionsByEmail","selectedFields","myCoopSettingsPageContentId","savedCartQueryKeys","byPaging","subscriptionsQueryKeys","byId","subId","klarnaSnippet","orderReclamationsQueryKey","deliveryAddressQueryKey","connectedCardsQueryKey","lastOrdersQueryKeys","myCoopProfileMenuKeys","settingsPage","myCoopHouseholdKeys","householdMembers","associationNamesQueryKey","householdMemberQueryKeys","pointItemWithdrawalHistoryKeys","pointHistoryKeys","purchaseHistoryKeys","consentSubscriptionsKeys","mmId","adobeConsentSubscriptionsKeys","confirmData","onCancel","notificationData","NotificationContextDispatch","NotificationContextState","NotificationStateProvider","confirmButtonText","cancelButtonText","getTopActivePage","getMenuPageById","ariaExpanded","ariaControls","MenuItemAccordion","menuPageItem","isSideMenu","hasChildren","withChevron","myCoopProfileChildPage","previouslyExpandedRef","expandedId","setExpandedId","expandedPageId","_expandedId","expandedItem","myCoopProfilePage","recipeNamesJoinedText","sharedRecipes","TooltipContent","gastrofyApiUrl","gastrofyApiKey","recipeApi","getDistributionAd","distributionAdApi","discoverNorthforkRecipes","gastrofyDiscoveryRequest","store_identifier","limit","data_fields","dataFields","extra_data","extraData","allergies","diets","randomize","exclude_external_recipe_ids","excludeRecipeIds","must_have_image","mustHaveImage","is_published","isPublished","match_all_products","matchAllProducts","external_product_ids","order_by","orderBy","external_recipe_ids","externalRecipeIds","gastrofyRecipes","gastrofyApi","gr","getRecipesByProduct","sortedRecipeIds","external_id","getRecipesByCategories","tagIds","authenticatedToken","getRecipeUserRating","forbiddenNames","forbiddenName","resolveGastrofyRecipes","gastrofyResolveRequest","getRecipeCommentsAdmin","deleteRecipeCommentAdmin","commentId","getRecipeSection","mapItem","isRemoved","rowTotalPriceData","Removed","recipeCartQueue","initialLoading","setCartState","cartChangesState","setCartChangesState","removedItems","prevChanges","productChanges","recipeSection","recipeToChange","prioritizationType","reCalculateCart","resolvedRecipes","resolveError","debouncedResolve","cp","isDirty","removedSubstituteIds","removedSubsituteIdentifiers","singleProducts","sharedProducts","goodToHaveProducts","recipeSectionsMap","sectionName","_recipe","final","productIdentifiers","sharedProductsBelongingToRecipe","sharedProduct","joinedRecipe","sharedSubstituteIdentifiers","sharedRecipeProductIds","goodToHaveProductIds","sharedRecipeSubstituteIds","goodToHaveSubstituteIds","recipeSectionList","mapSections","hybrisRecipeList","recipesTotalPrice","createCartState","recipeCartChanges","changedSubstituteIds","loadHybrisSubstitutes","recipeProducts","substitute","handleSubstituteChangeClick","setExpandedSubstituteIds","substituteSentForChange","onSubstituteToggle","prevIds","newIds","onSubstitutesLoaded","subsituteCount","setSubstitutes","substitutesDispatcher","loadSubstitutes","substitutesById","substituteMap","loadedCount","ItemState","RecipeModalTab","trackOnButtonClick","adGaPromoId","adGaPromoName","adGaPromoCreative","hasBottomButtonDiv","imageTextProperties","adGaPromoPosition","buttonLink1","backgroundColorHex","buttonLink2","distributionAdContentId","recipeAd","buttonProps1mapped","buttonProps2mapped","useDynamicYieldTracking","dynamicYieldSimiliarRecipesRecommendationId","newItems","additionalRecipes","numberOfSimiliarsToShow","ListBlockHeader","recommendationGaList","DynamicYieldBuyableProductTeaser","DynamicYieldFavoriteRecipeTeaser","pageRecipeName","numberOfCommentsToShow","setNumberOfCommentsToShow","initialRecipeComments","saveComments","commnentsForbiddenNames","readyToComment","setReadyToComment","textAreaRef","hideComments","textAreaInput","TextArea","rows","formData","formatDateYyyyMmDd","heroImageUrl","DynamicHeroMedia","heroImageName","buttonSlot","buttonRender","contentClasses","fontSize","marginTop","_index","int","useBuyableRecipeQuery","byRequest","addRecipeStatus","removeRecipeStatus","showAddSuccessNotice","setShowAddSuccessNotice","showRemoveSuccessNotice","setShowRemoveSuccessNotice","fetchListsDispatcher","fetchLists","isLoadingLists","addRecipeToNewListDispatcher","addRecipeToNewList","addRecipeToNewListError","addRecipeToNewListReset","addRecipeToListDispatcher","addRecipeToList","addRecipeError","addRecipeReset","removeRecipeFromListDispatcher","removeRecipeFromList","removeRecipeError","removeRecipeReset","shoppingListApi","getLists","_recipeId","currentList","ing","createRequest","newList","noLists","AddToShoppingListModal","onAddToNewListClick","isItemAdded","RecipeIds","userActivatedButton","setUserActivatedButton","showModal","SocialMedia","handleShareLinkClick","shareName","mailMessageBody","showSocialMedia","setShowSocialMedia","isDesktop","numOfStarsChosen","setNumOfStarsChosen","ratingFirstText","ratingOneStarText","ratingTwoStarText","ratingThreeStarText","ratingFourStarText","ratingFiveStarText","lastChosenStarIndex","starsChosenStateArray","currentText","isHoverState","maskUnits","mask","x1","y1","x2","y2","gradientUnits","stopColor","rateRecipeDispatcher","ratingCompletedText","ratingCancelButtonText","ratingRateButtonText","ratingSuccessfulCloseButtonText","rateRecipeBasedOnCurrentState","rateRecipeStatus","rateRecipeError","clearRateRecipeError","resetRateRecipeDispatcher","hasSentRatingSuccessfully","ratingLinkText","isRatingModalOpen","setIsRatingModalOpen","isLoginModalOpen","setIsLoginModalOpen","anonymousUserHasSentAlready","climateImpactUrl","recipePreamble","formatISODuration","_duration$years","_duration$months","_duration$days","_duration$hours","_duration$minutes","_duration$seconds","recipePage","recipeCuisine","instructionsWithoutTitle","instructionsWithTitle","properlyGroupedInstructions","recipeInstructions","instructionSection","itemListElement","schemaItem","metaKeywords","recipeYield","recipeIngredient","datePublished","startPublish","aggregateRating","ratingValue","author","cookingTimeInMinutes","cookTime","prepTimeInMinutes","totalTimeInMinutes","isNotificationOpen","setIsNotificationOpen","isPickup","isRecipeBuyable","buyableSlot","notBuyableSlot","storeNotSelectedSlot","fetchEpiSimiliarRecipes","epiRecipePage","epiSimiliarRecipeIds","similarRecipes","isRecipeItemPage","externalRecipeID","apiRecipesResult","getSimiliarRecipes","epiSimliarRecipes","isFetchingRecipe","byExternalId","pageData","recipePageContentId","settingsPageContentId","recipePagePromise","recipeSettingsPagePromise","recipeSettingsPage","isBuyable","abTestRef","recipeSuggestionsInView","recipeProps","mappedRecipePageHeadData","BaseLayout","HeaderNotices","PageHead","MainPageLayout","RecipeModalTrigger","climateImpactCalculationPageReference","mainModules","EpiContentArea","disableCommentModule","listForbiddenNames","DynamicYieldBlock","dynamicYieldRecipesRecommendationId","dynamicYieldRecipesRecommendationGaList","dynamicYieldSimiliarRecipesGaList","renderMicroApp","ReactAppWrapper","recipeQueryKeys","byExternalIds","externalIds","recipeAdContent","gastrofyQueryKeys","savedFavoriteRecipeKey","createNewArrayByTogglingString","currStringArray","newString","createGetUrlForCategories","categoryNameToUrlSegment","categoriesUrlOrder","recipeRootUrl","removedPotentialLastSlashFromRoot","hasFilterQuery","builtPath","currSegment","getCategoriesWhileRemovingCategoryFacetChildren","currentCategories","childrenNames","childCategory","categoriesWithoutChildren","currCategory","getCategoriesWhileRemovingCategoryFacetsParent","parentCategory","lowerCaseParentName","categoriesWithoutParent","getAllCategoryNamesFromLevel2AndDown","collectedNames","rootCall","facet","getCategoryNamesUnderLevel1","ssrCategoriesUrlOrder","buildRecipeRedirectUrl","prepareRequestParams","searchService","directSearchErrorAxiosInterceptor","withConsent","acceptedConsent","Loop54","loop54CookieName","transformRequest","loopUserId","directSearchAxiosClient","SearchDropdownStateContext","contextNotInitialized","SearchDropdownDispatchContext","setA11yResultAnnounceMessage","SearchStateProvider","resultDescription","initialInputText","hasResponse","useAsyncAbortableDispatcher","useAbortableDebouncedSearch","useSearchDropdownState","useSearchStateContext","mapFacets","searchResults","facetType","facetsByType","mapLoopSearchArticle","loopArticle","published","mapLoopArticleSearchResponse","searchResponse","searchRequest","makeSense","mapLoopSearchStore","loopStore","ledgerAccountNumber","ledger_account_number","city","hasDR","latitude","longitude","zip","openingHours","opening_hours","openingHour","mapLoopSearchPointshop","loopPointshop","headline","pointPrice","fulfillmentProcess","validityStartDate","validityEndDate","mapLoopSearchRecipeCategory","loopRecipeCategory","page_title","full_image","mapLoopSearchRecipe","loopRecipe","average_rating","alternativeTitle","alternative_title","cooking_instructions","cooking_time","number_of_votes","oven_temperature","preparation_time","serving_tips","total_time","yieldAlternative","yield_alternative","yield_unit","carbGram","carb_gram","carbPercent","carb_percent","climate_impact_kg","fatGram","fat_gram","fatPercent","fat_percent","proteinGram","protein_gram","proteinPercent","protein_percent","publicationDate","publication_date","saltGram","salt_gram","saturatedFatGram","saturated_fat_gram","yield_value","energyValueKcal","energyValueKj","image_url","is_food_box","mapApiRecipe","apiRecipe","mapLoopStoreSearchResponse","mapLoopProductNoQuerySearchResponse","brandFacets","environmentalFacets","EnvironmentalLabels","categoryIdsFacets","CategoryIds","topCategoryFacets","TopCategory","localeCompare","relatedProducts","relatedResults","relatedResult","mapLoopProductSearchResponse","suggestion","mapLoopAutocompleteResponse","loopAutocompleteResponse","mapLoopGlobalSearchResponse","mappedResponse","productResults","editorialContentResults","articleResults","storesResults","storeResults","pointshopResults","recipesResults","recipeResults","recipeCategoriesResults","recipeCategoryResults","searchDirectApi","loopSearchRequest","sortOrderMap","popular","facetMap","RecipeCategories","loyaltybrand","Loyaltybrand","loyaltyCategory","LoyaltyCategory","categoryIds","environmentalLabels","topCategory","mapSortOrder","sortOrders","sortOrder","loopFacets","loopFacet","selectedFacets","isAnd","mapResultOptions","requestAlias","getEntitiesByAttributeABTest","searchByAttributeLoop","selectedPage","selectedBrand","selectedSortOrder","personalizeProductsByAttribute","relatedResultsOptions","searchProductOffersLoop","groupOffers","searchArticlesLoop","searchStoresLoop","searchGlobalLoop","loopGlobalSearchRequest","productSearchRequest","storeSearchRequest","storesResultsOptions","articleSearchRequest","editorialContentResultsOptions","pointshopSearchRequest","pointshopResultsOptions","and","or","mapResultFilterOptions","recipeSearchRequest","recipesResultsOptions","recipeCategoriesSearchRequest","recipeCategoriesResultsOptions","searchByAttribute","loopAutocompleteRequest","queriesOptions","searchProductsInSection","searchRecipesLoop","searchLoyaltyProductsById","distinctIds","searchLoyaltyProducts","searchPointshopProductsInPointRange","minPointsValue","maxPointsValue","rangeFacet","globalSearchAbortable","resultCountsPerPage","partnererbjudandeAndFilter","comparisonMode","pointshopValidityStartFilter","pointshopValidityEndFilter","pointshopAndFilter","not","orFilter","searchRequestPointshop","useGlobalSearchResultState","pageCounts","_quickSearch","useGlobalSearchSingleTypeState","resultType","_selectedPage","filledSingleTypeRquest","filledSingleTypeFilterRquest","Articles","Pointshop","getGlobalSearchSingleTypeRequest","SearchResultType","SearchFacetType","SearchType","GLOBAL_SEARCH_PAGE","globalSearch","globalSearchRoutes","root","pointOffers","mapSearchFromPageToExpectedResultType","formattedSearchResultTypeMap","getSearchResultCountName","itemCount","getFormattedSearchResultType","getSearchResultTypeAriaLabel","totalHits","getFullSearchResultLink","getFullSearchResultAbsoluteLink","getNonEmptyResultTypes","getFullSearchResultUrlWithOrder","searchResultType","shoppingListApiUrl","shoppingListApiVersion","getListsWithoutProducts","getIngredients","rename","toggleCheck","offer","offerType","isAdded","Name","singularToPlural","ask","askar","bit","bitar","burk","burkar","cm","flaska","flaskor","knippa","knippe","knippor","krm","kruka","krukor","kvist","kvistar","liter","msk","paket","pkt","portion","portioner","skiva","st","stk","stycken","tsk","pluralToSingular","acceptableUnits","stringQuantityToNumber","getValidUnit","found","findQuantityFromInputString","acceptableNumberChars","foundFirstCharacter","preFirstChar","findUnitFromInputString","foundUnits","unitObj","closestUnit","lowest","preUnit","postPost","preUnitIsNumber","postUnitExists","findNameFromInputString","afterQuantity","createProductRequestBody","isSimilarIngredient","hasSameName","getIngredientsThatShouldNotBeUpdated","getIngredientsThatShouldBeUpdatedInMergedForm","similiarIngredients","matchedIngredient","recipeID","correctQuantity","addedItem","availableAsEcological","externalIngredientID","offerID","createIngredientRequestBody","hasOrganicAlternative","konsumHasEcological","getDefaultListName","currentDate","currentWeekDayName","getDayName","currentMonthName","getMonthName","getSortedListByUpdatedDate","Updated","DefaultProductSection","BreakPoint","BrowserSize","Keyboard","KeyboardCustom","PlatformType","BREAKPOINT_MIN_FROM","BREAKPOINT_MAX_TO","Browser","breakPoints","vendor","xxsm","xxlg","Cloudinary","IMAGE_MATCH","DOMAIN_MATCH","imgIdentifier","imgPath","IDS_REDIRECTREASON_QUERY","IDS_REDIRECTREASON_QUERYVALUE_SIGNUP","IDS_RETURNURL_QUERY","Cookies","secure","toUTCString","nameEq","CoopSwiperBreakpoints","hasSideMenu","pageContentSize","isViewportInconsistent","FULL_WITH_SIDEMENU_BREAKPOINTS","NARROW_WITH_SIDEMENU_BREAKPOINTS","NARROW_WITHOUT_SIDEMENU_BREAKPOINTS","DEFAULT_WITH_SIDEMENU_BREAKPOINTS","DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS","AREA_BRAND_CATEGORY","AREA_LARGE_TEASER_LIST","AREA_LARGE_TEASER_GRID","AREA_BRAND_CATEGORY_LISTING","AREA_HERO_PRODUCT","AREA_RECIPE","AREA_NEW_RECIPE_LIST","AREA_MY_COOP","AREA_PRODUCT_LIST","AREA_PRODUCT_GRID","AREA_GROUPED_OFFERS_GRID","AREA_RECIPE_LISTING_GRID","AREA_RECIPE_LISTING_NARROW","AREA_DR_OFFERS_LIST","AREA_WEEKLY_MENU_LIST","AREA_PERSONAL_OFFERS_LIST","AREA_TV_OFFERS_LIST","getSwiperBreakpoint","browserSize","SIDEBAR_HIDE_BREAKPOINT","BrandCategory","slidesPerView","slidesPerGroup","LargeTeasersList","LargeTeasersGrid","BrandCategoryListing","HeroProduct","MyCoop","ProductGrid","GroupedOffersGrid","NewProductList","NewProductListWithBanner","NewProductGrid","NewRecipeList","RecipeListingGrid","RecipeListingSwiperNarrow","DrOffersList","WeeklyMenuList","PersonalOffersList","TVOffersList","FooterGrid","getGridBreakpointRanges","perView","ranges","CoopSwiperBreakpointsUnique","uniqueArea","UNIQUE_AREA_BREAKPOINTS","AREA_MINICART","AREA_CHECKOUT_STEP_2","CheckoutStep2","consentRejected","updateDYConsent","trackSpaDY","updateDyStaticContext","createCartPageContext","cartProductIds","createOtherPageContext","createProductPageContext","createCategoryPageContext","categoryNamesList","Environment","isProductionEnvironment","Production","isTestingEnvironment","QA","isDevelopmentEnvironment","Development","Storybook","GdprCookiePurposes","GdprCookieVendors","isTestingOrDevEnv","gdprAddEventListener","gdprRemoveEventListener","triggerOnConsentGatheredGdpr","hasAcceptedGdprPurpose","gdprPurpose","purposeLI","hasAcceptedGdprCookieVendor","gdprCookieVendor","vendorConsents","syncConsentManagerVendors","ccmAcceptedVendors","getAcceptedVendors","importantVendors","vendorsForCookie","hasAcceptedGdprCookieVendorsSync","vendors","consentCookie","stringedVendors","cookieVendors","triggerOnAllConsentAccepted","triggerOnAllConsentRejected","triggerOnSingleConsentChange","cmpData","triggerWhenGDPRConsentExists","Helpers","ONE_DAY","emailReg","monthIndex","dayIndex","datesIsSameDay","date1","date2","formatDateDdMmm","shortMonth","localDate","formatDateYyyyMmDdIgnoringTimeZone","getToday","getDatePart","newDate","containsOnlyMonthInDate","dates","currentMonth","getDaysForMonthInDate","getDaysLeftForMonthInDate","getMonthsInInterval","startDate","endDate","startYear","startMonth","monthNumber","formatDateToHHDate","dateToFormat","TODAY_TEXT","TOMORROW_TEXT","formattedTime","formatHHmm","formatTimeTwoDigts","safeStringAddition","numberString","decimalSeparator","sep","decSep","PRICE_DECIMAL_SEPARATOR","noDecimalMode","decimalMode","hideDecimals","insertEveryNCharacters","hasNoRest","truncateWithoutEmptyDecimals","isMmkid","mmkid","trimAndRemoveWhiteSpaces","isNullOrWhiteSpace","digits","numS","decPos","substrLength","trimmedResult","finalResult","decLength","capitalizeFirstLetter","capitalizeWords","by","swedishAmount","resultWithoutSpaces","swedishPhoneNumber","safeSwedishPhoneNumber","swedishPhoneNumberFullFormat","cleanedNumber","testNumber","formatPostalCode","getPriceForGa","isZipCode","zipCodeString","possibleZipCode","logMissingContext","contextName","splitted","AccordionItem","iconClassName","iconPosition","AccordionTrigger","AccordionChevron","AccordionHeader","AccordionContent","isUpdatingAndActive","animProps","appearActive","Badge","offsetX","offsetY","leftIcon","getBadgeClasses","getSizeClass","getColorClass","getSpinnerSizeForButtonSize","buttonSize","exhaustiveCheck","customProps","loadingText","keysNotFromCustomProps","baseButtonProps","useHtmlButtonElement","buttonClick","htmlButtonOnlyProps","ariaHidden","validationMsg","labelVisuallyHidden","labeVerticalPosition","htmlFor","leftSlot","CountBadge","countVariant","CountBadgeAlt1","CountBadgeAlt2","getSpinnerSizeForChipSize","chipSize","chipButtonProps","headerRef","useInitialFocus","noAnimation","bodySlot","closeButtonRef","confirmButtonTextFinal","cancelButtonTextFinal","iconProps","getIconSvgColor","typed","colorByStroke","svgProps","buildSvgIconProps","StaticListBox","StaticListBoxItem","DynamicListBox","listBoxProps","useListBox","NoResults","NoResultsItem","renderErrorState","collection","renderEmptyState","DynamicListBoxItem","itemClassName","optionProps","isFocusVisible","useOption","ItemFocusVisible","rendered","ListBoxItemIcon","ItemIcon","useDelayedIsLoading","getClassForTheme","getClassForSize","enableDelay","showDelayedLoader","useTrapFocus","getElements","ACCEPTABLE_SELECTORS","focusIsOutsideOfTrap","acceptableElements","handleUserKeyPress","foundElements","handleNext","handlePrev","useEscapeKey","useIsInsideModal","useModalContext","findDirectBodyChild","toggleBodyChildrenInert","htmlId","shouldInert","htmlElement","skipInertElement","useModalInert","hasParentModal","zeroRightClassName","fullWidthClassName","ItoI","effectCar","useMedium","assignSyncMedium","cbs","assignMedium","pendingQueue","executeQueue","cycle","innerCreateMedium","ssr","createSidecarMedium","nothing","RemoveScroll","parentRef","onScrollCapture","onWheelCapture","onTouchMoveCapture","setCallbacks","forwardProps","removeScrollBar","shards","sideCar","noIsolation","inert","allowPinchZoom","gapMode","SideCar","assignRef","facade","useMergeRefs","containerProps","lockRef","zeroRight","Target","isSideCarExport","stylesheetSingleton","counter","stylesheet","css","nonce","makeStyleTag","insertStyleTag","styleSingleton","sheet","useStyle","isDynamic","dynamic","zeroGap","gap","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","RemoveScrollBar","noRelative","noImportant","newCounter","offsets","getOffset","documentWidth","windowWidth","getGapWidth","passiveSupported","nonPassive","elementCanBeScrolled","overflowY","overflowX","alwaysContainsScroll","locationCouldBeScrolled","axis","ShadowRoot","elementCouldBeScrolled","getScrollVariables","elementCouldBeVScrolled","elementCouldBeHScrolled","scrollHeight","clientHeight","getHScrollVariables","getTouchXY","getDeltaXY","extractRef","generateStyle","idCounter","lockStack","getOutermostShadowParent","shadowParent","exported","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","currentAxis","touch","touchStart","moveDirection","canBeScrolledInMainDirection","cancelingAxis","endTarget","sourceDelta","directionFactor","getDirectionFactor","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","elementScroll","handleScroll","shouldPrevent","_event","sourceEvent","should","shardNodes","shouldCancel","scrollTouchStart","scrollWheel","scrollTouchMove","ReactRemoveScroll","BaseModal","modalContext","ModalContext","triggerRef","MaybePortal","usePortal","exitActive","exitDone","BaseModalContent","modalHtmlId","modalContainerStyles","Animated","handleClose","hasOtherModalsAsChildren","asideRef","outsideRef","focusedElementOnMount","ModalContextState","ModalContextDispatch","modalHasModalAsChild","maybeParentModalContextState","maybeParentModalContextDispatch","idFromParent","ModalContextHeader","colorTheme","HeaderTag","asModal","MessageTag","TextContent","Message","bottomSlot","DEFAULT_NOTIFICATION_HIDE_TIME","ContainerAbsolute","ContainerFixed","leastDestructiveActionRef","useInitialCtaFocus","wrapperRef","setMessage","loaderId","shouldTrapFocus","LoaderContent","PacmanLoader","OverlayPacmanLoader","A11yOverlayLoader","toggleAttribute","FullOverlayLoaderWrapper","pacmanRef","labelId","localRef","descriptionId","enterKeyHint","onInputFocus","onInputBlur","onKeyDown","onInputClick","clearButtonProps","clearButtonRef","SearchContent","SearchInputSlot","usePopover","Overlay","popoverRef","outerRef","listBoxRef","useComboBoxState","allowsCustomValue","allowsEmptyCollection","ariaClearButtonProps","inputProps","descriptionProps","labelProps","useSearchField","setInputValue","autoComplete","onClear","selectionManager","focusedKey","comboBoxInputProps","useComboBox","onFocusChange","mergeProps","useSearchAutocomplete","useButton","menuWidth","setMenuWidth","outerRect","boxOptions","resizeObserverInstance","ResizeObserver","box","useResizeObserver","ComboBox","SearchRoot","SearchActions","isNonModal","SearchAutocompleteItem","SearchAutocompleteItemIcon","ListBox","SearchAutocompleteItemLabel","pre","highlighted","inputLowercase","hintLowercase","endIndex","hightlightAutocompleteSubstring","forwardedRef","isInsideModal","SelectItem","Size48","SnackbarWithAction","Show","NoAnimation","charCount","textAreaProps","helperText","postfixSlot","validationBehavior","TopContainer","Label","HelperText","InputContainer","Postfix","BottomContainer","ValidationError","indicator","disabledReason","ValidationText","Prefix","PrefixSlot","PostfixSlot","textInputProps","isReadOnly","runImmediately","addOptions","addOptionsRef","triggerFocus","onClickOutside","whenTrigger","savedHandler","memoizedCallback","callbackRef","splitCustomObjectFromIntersection","whole","hasValue","toPropertyKey","hasOwn","appendClass","parseValue","newClass","Axios","AxiosError","CanceledError","isCancel","VERSION","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","kindOf","thing","kindOfTest","typeOfTest","isArrayBuffer","isString","toStringTag","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","isContextDefined","isTypedArray","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","descriptors","reducedDescriptors","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","asap","process","nextTick","isBuffer","isFormData","FormData","isArrayBufferView","isBoolean","isStream","pipe","caseless","assignValue","targetKey","stripBOM","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","forEachEntry","pair","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","define","toCamelCase","p1","p2","toFiniteNumber","isSpecCompliantForm","toJSONObject","visit","reducedValue","captureStackTrace","utils","toJSON","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","convertValue","Buffer","isFlatArray","exposedHelpers","charMap","AxiosURLSearchParams","_pairs","encoder","_encode","buildURL","serializeFn","hashmarkIndex","handlers","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","protocols","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","adapter","getContentType","hasJSONContentType","isObjectPayload","setContentType","platform","helpers","toURLEncodedForm","formSerializer","_FormData","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parseHeaders","parser","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","headerValue","transformData","fns","__CANCEL__","ERR_CANCELED","settle","ERR_BAD_REQUEST","progressEventReducer","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","bytes","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","lastArgs","invoke","loaded","lengthComputable","progressBytes","progress","estimated","progressEventDecorator","throttled","asyncDecorator","isMSIE","write","toGMTString","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","auth","username","unescape","isURLSameOrigin","xsrfValue","resolveConfig","requestData","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","upload","parseProtocol","signals","streamChunk","chunk","chunkSize","byteLength","trackStream","stream","onProgress","onFinish","iterable","reader","getReader","readStream","readBytes","_onFinish","ReadableStream","pull","loadedBytes","highWaterMark","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","knownAdapters","http","composedSignal","toAbortSignal","requestContentLength","getContentLength","_request","getBodyLength","resolveBodyLength","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","responseData","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","validators","deprecatedWarnings","validator","formatMessage","desc","ERR_DEPRECATED","spelling","correctSpelling","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","instanceConfig","configOrUrl","dummy","boolean","function","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","executor","resolvePromise","_listeners","onfulfilled","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","isFrozen","fun","thisValue","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","lcElement","cleanArray","clone","newObject","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","purify","createDOMPurify","DOMPurify","originalDocument","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","getNextSibling","getChildNodes","getParentNode","trustedTypesPolicy","emptyHTML","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","ATTR_NAME","hasAttribute","policyName","scriptUrl","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","parseFromString","createDocument","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","hasChildNodes","_isNode","_executeHooks","currentNode","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","createElementIfNotDefined","originalParams","checkProps","createElements","auto","Navigation","extendParams","on","emit","getEl","hostEl","uniqueNavElements","toggleEl","subEl","watchOverflow","isLocked","loop","isBeginning","isEnd","onPrevClick","slidePrev","onNextClick","slideNext","initButton","dir","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","disable","targetEl","targetIsButton","pathEl","toggle","enable","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","realIndex","prevIndex","slides","slideToLoop","slideTo","rtl","previousIndex","slidesLength","virtual","snapGrid","previousRealIndex","previousSnapIndex","activeIndex","firstIndex","midIndex","isHorizontal","classesToRemove","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transitionDuration","speed","paginationHTML","numberOfBullets","freeMode","Scrollbar","dragStartPos","dragSize","trackSize","divider","isTouched","dragTimeout","setTranslate","rtlTranslate","dragEl","progressLoop","newSize","newPos","updateSize","virtualSize","slidesOffsetBefore","centeredSlides","getPointerPosition","setDragPosition","positionRatio","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","cssMode","onDragMove","onDragEnd","snapOnRelease","slideToClosest","activeListener","passiveListeners","passiveListener","eventMethod","swiperEl","dragClass","scrollbarDisabledClass","setTransition","ssrDocument","ssrWindow","CustomEvent","getPropertyValue","win","classesToTokens","deleteProps","getTranslate","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","HTMLElement","keysArray","nextKey","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","translate","scrollSnapType","cssModeFrameID","isOutOfBound","animate","easeProgress","cos","PI","currentPosition","scrollTo","elementChildren","HTMLSlotElement","elementIsChildOf","isChild","elementsQueue","elementToCheck","elementIsChildOfSlot","showWarning","elementOffset","clientTop","clientLeft","scrollY","scrollX","elementPrevAll","prevEls","previousElementSibling","elementNextAll","nextEls","nextElementSibling","elementStyle","elementIndex","elementParents","parents","elementOuterSize","includeMargins","makeElementsArray","support","deviceCached","getSupport","smoothScroll","DocumentTouch","calcSupport","overrides","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","calcDevice","eventsEmitter","eventsListeners","destroyed","onceHandler","off","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","toggleSlideClasses$1","slideEl","toggleSlideClasses","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","unlazy","preload","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","slideIndexLastInView","isVertical","updateSlides","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","addToSnapGrid","addToSlidesGrid","checkOverflow","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","multiplier","translatesDiff","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","newActiveIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","firstSlideInColumn","activeSlideIndex","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","currentSlideTranslate","touchEventsData","startTranslate","currentTranslate","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","originalEvent","touchId","simulateTouch","touchEventsTarget","isMoved","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","closestElement","allowClick","swipeHandler","currentX","currentY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","setBreakpoint","isVirtualLoop","autoplay","running","resizeTimeout","preventClicks","preventClicksPropagation","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","swiperElementNodeName","resizeObserver","eventsPrefix","virtualTranslate","breakpointsBase","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transitionDelay","moving","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpointContainer","breakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","hasLoop","containerEl","currentHeight","point","minRatio","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","extendedDefaults","swipers","newParams","needPerspectiveFix","major","minor","isSafariBrowser","need3dFix","calcBrowser","__modules__","mod","swiperParams","passedParams","velocity","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","slideSlots","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observers","attach","WebkitMutationObserver","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","paramsList","needsNavigation","needsPagination","needsScrollbar","uniqueClasses","isChildSwiperSlide","processChildren","foundSlides","SwiperSlideContext","SwiperContext","externalElRef","Tag","WrapperTag","eventsAssigned","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","allowedParams","plainObj","getParams","onBeforeBreakpoint","_containerClasses","initSwiper","passParams","extendWith","renderExternal","renderExternalUpdate","scrollbarEl","mountSwiper","changedParams","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","oldKeys","oldKey","getChangedParams","updateParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","nextButtonSvg","prevButtonSvg","updateSwiper","parallax","loopFrom","loopTo","slidesToRender","virtualIndex","renderVirtual","SwiperSlide","externalRef","slideElRef","slideClasses","setSlideClasses","lazyLoaded","setLazyLoaded","updateClasses","slideData","renderChildren","$e42e1063c40fb3ef$export$b9ecd428b558ff10","originalEventHandler","ourEventHandler","checkForDefaultPrevented","$ea1ef594cf570d83$export$be92b6f5f03c0fe9","span","border","clip","wordWrap","$08b6689415b2f49a$export$5aec92af04ace2d2","$409067139f391064$var$COLLAPSIBLE_NAME","$409067139f391064$var$createCollapsibleContext","$409067139f391064$export$952b32dcbe73087a","$409067139f391064$var$CollapsibleProvider","$409067139f391064$var$useCollapsibleContext","$409067139f391064$export$6eb0f7ddcda6131f","__scopeCollapsible","openProp","defaultOpen","collapsibleProps","setOpen","defaultProp","onOpenToggle","prevOpen","div","$409067139f391064$var$getState","$409067139f391064$export$c135dce7b15bbbdc","triggerProps","$409067139f391064$var$CONTENT_NAME","$409067139f391064$export$aadde00976f34151","forceMount","contentProps","present","$409067139f391064$var$CollapsibleContentImpl","setIsPresent","composedRefs","heightRef","widthRef","isMountAnimationPreventedRef","originalStylesRef","rAF","rect","hidden","$409067139f391064$export$be92b6f5f03c0fe9","$409067139f391064$export$41fb9f06171c75f4","$409067139f391064$export$7c6e2c02157bb7d2","$1bf158f521e1b1b4$var$ACCORDION_NAME","$1bf158f521e1b1b4$var$ACCORDION_KEYS","$1bf158f521e1b1b4$var$Collection","$1bf158f521e1b1b4$var$useCollection","$1bf158f521e1b1b4$var$createCollectionScope","$1bf158f521e1b1b4$var$createAccordionContext","$1bf158f521e1b1b4$export$9748edc328a73be1","$1bf158f521e1b1b4$var$useCollapsibleScope","$1bf158f521e1b1b4$export$a766cd26d0d69044","accordionProps","singleProps","multipleProps","__scopeAccordion","$1bf158f521e1b1b4$var$AccordionImplMultiple","$1bf158f521e1b1b4$var$AccordionImplSingle","$1bf158f521e1b1b4$var$AccordionValueProvider","$1bf158f521e1b1b4$var$useAccordionValueContext","$1bf158f521e1b1b4$var$AccordionCollapsibleProvider","$1bf158f521e1b1b4$var$useAccordionCollapsibleContext","valueProp","accordionSingleProps","$1bf158f521e1b1b4$var$AccordionImpl","accordionMultipleProps","value1","handleItemOpen","itemValue","handleItemClose","$1bf158f521e1b1b4$var$AccordionImplProvider","$1bf158f521e1b1b4$var$useAccordionContext","accordionRef","isDirectionLTR","handleKeyDown","_triggerCollection$cl","triggerCollection","_item$ref$current","triggerIndex","triggerCount","moveNext","movePrev","Slot","$1bf158f521e1b1b4$var$ITEM_NAME","$1bf158f521e1b1b4$var$AccordionItemProvider","$1bf158f521e1b1b4$var$useAccordionItemContext","$1bf158f521e1b1b4$var$TRIGGER_NAME","$1bf158f521e1b1b4$var$getState","$1bf158f521e1b1b4$export$be92b6f5f03c0fe9","$1bf158f521e1b1b4$export$6d08773d2e66f8f2","accordionItemProps","accordionContext","valueContext","collapsibleScope","triggerId","open1","$1bf158f521e1b1b4$export$8b251419efc915eb","headerProps","itemContext","h3","$1bf158f521e1b1b4$export$41fb9f06171c75f4","collapsibleContext","ItemSlot","$1bf158f521e1b1b4$export$7c6e2c02157bb7d2","$e698a72e93240346$var$CHECKBOX_NAME","$e698a72e93240346$var$createCheckboxContext","$e698a72e93240346$export$b566c4ff5488ea01","$e698a72e93240346$var$CheckboxProvider","$e698a72e93240346$var$useCheckboxContext","$e698a72e93240346$export$48513f6b9f8ce62d","__scopeCheckbox","checkedProp","checkboxProps","setButton","hasConsumerStoppedPropagationRef","isFormControl","setChecked","initialCheckedStateRef","$e698a72e93240346$var$isIndeterminate","$e698a72e93240346$var$getState","prevChecked","$e698a72e93240346$var$BubbleInput","controlSize","inputProto","HTMLInputElement","indeterminate","pointerEvents","$e698a72e93240346$export$be92b6f5f03c0fe9","$e698a72e93240346$export$adb584737d712b70","indicatorProps","$e02a7d9cb1dc128c$export$c74125a8e3af6bb2","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","collectionRef","itemMap","COLLECTION_SLOT_NAME","ITEM_SLOT_NAME","ITEM_DATA_ATTR","itemData","collectionNode","orderedNodes","$6ed0406888f73fc4$export$43e446d32b3d21af","$6ed0406888f73fc4$var$setRef","$6ed0406888f73fc4$export$c7b2cbe3552a0d05","$c512c27ab02ef895$export$50c7b4e9d9f19c1","scopeName","createContextScopeDeps","defaultContexts","createScope","scopeContexts","defaultContext","contexts","rootComponentName","BaseContext","consumerName","$c512c27ab02ef895$var$composeContextScopes","scopes","baseScope","createScope1","scopeHooks","useScope","overrideScopes","nextScopes1","nextScopes","$f631663db3294ace$var$DirectionContext","$f631663db3294ace$export$b39126d51d94e6f3","localDir","globalDir","$1746a345f3d73bb7$var$useReactId","$1746a345f3d73bb7$var$count","$1746a345f3d73bb7$export$f680877a34711e37","deterministicId","setId","$921a889cee6df7e8$export$99c2b779aa4e8b8b","presence","node1","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","machine","$fe963b355347cc68$export$3e6543de14f8614f","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","currentAnimationName","$921a889cee6df7e8$var$getAnimationName","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","handleAnimationStart","$921a889cee6df7e8$var$usePresence","$8927f6f2acc4f386$export$250ffa63cdc0d034","primitive","primitiveProps","Comp","$d7bdfb9eb0fdf311$var$ENTRY_FOCUS","$d7bdfb9eb0fdf311$var$EVENT_OPTIONS","$d7bdfb9eb0fdf311$var$GROUP_NAME","$d7bdfb9eb0fdf311$var$Collection","$d7bdfb9eb0fdf311$var$useCollection","$d7bdfb9eb0fdf311$var$createCollectionScope","$d7bdfb9eb0fdf311$var$createRovingFocusGroupContext","$d7bdfb9eb0fdf311$export$c7109489551a4f4","$d7bdfb9eb0fdf311$var$RovingFocusProvider","$d7bdfb9eb0fdf311$var$useRovingFocusContext","$d7bdfb9eb0fdf311$export$8699f7c8af148338","__scopeRovingFocusGroup","$d7bdfb9eb0fdf311$var$RovingFocusGroupImpl","currentTabStopId","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","groupProps","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","onItemFocus","tabStopId","onItemShiftTab","onFocusableItemAdd","prevCount","onFocusableItemRemove","outline","onMouseDown","isKeyboardFocus","entryFocusEvent","$d7bdfb9eb0fdf311$var$focusFirst","$d7bdfb9eb0fdf311$export$ab9df7c53fe8454","itemProps","autoId","isCurrentTabStop","focusIntent","$d7bdfb9eb0fdf311$var$getDirectionAwareKey","$d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT","$d7bdfb9eb0fdf311$var$getFocusIntent","candidateNodes","currentIndex","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PageUp","Home","PageDown","End","PREVIOUSLY_FOCUSED_ELEMENT","candidate","$d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9","$d7bdfb9eb0fdf311$export$6d08773d2e66f8f2","$ce77a8961b41be9e$var$RADIO_NAME","$ce77a8961b41be9e$var$createRadioContext","$ce77a8961b41be9e$export$67d2296460f1b002","$ce77a8961b41be9e$var$RadioProvider","$ce77a8961b41be9e$var$useRadioContext","$ce77a8961b41be9e$export$d7b12c4107be0d61","__scopeRadio","onCheck","radioProps","$ce77a8961b41be9e$var$getState","$ce77a8961b41be9e$var$BubbleInput","$ce77a8961b41be9e$export$d35a9ffa9a04f9e7","$f99a8c78507165f7$var$ARROW_KEYS","$f99a8c78507165f7$var$RADIO_GROUP_NAME","$f99a8c78507165f7$var$createRadioGroupContext","$f99a8c78507165f7$export$c547093f11b76da2","$f99a8c78507165f7$var$useRovingFocusGroupScope","$f99a8c78507165f7$var$useRadioScope","$f99a8c78507165f7$var$RadioGroupProvider","$f99a8c78507165f7$var$useRadioGroupContext","$f99a8c78507165f7$export$be92b6f5f03c0fe9","__scopeRadioGroup","rovingFocusGroupScope","$f99a8c78507165f7$export$6d08773d2e66f8f2","isArrowKeyPressedRef","handleKeyUp","_ref$current","$f99a8c78507165f7$export$adb584737d712b70","$5e63c961fc1ce211$export$8c6ed5c666ac1360","slotProps","childrenArray","slottable","$5e63c961fc1ce211$var$isSlottable","newChildren","$5e63c961fc1ce211$var$SlotClone","$5e63c961fc1ce211$var$mergeProps","$5e63c961fc1ce211$export$d9f1ccf0bdb05d45","slotPropValue","childPropValue","$b1b2314f5f9a1d84$export$25bec8c6f54ee79a","_callbackRef$current","$71cd76cc60e0454e$export$6f32135080cb4c3","uncontrolledProp","setUncontrolledProp","uncontrolledState","handleChange","$71cd76cc60e0454e$var$useUncontrolledState","isControlled","nextValue","$9f79659886946c16$export$e5c5a5f917a5871c","$010c2913dbd2fe3d$export$5cae361ad82dce8b","$db6c3485150b8e66$export$1ab7ae714698c4b8","setSize","borderSizeEntry","borderSize","$701a24aa0da5b062$export$ea18c227d4417cc3","additionalProps","onPressStart","onPressEnd","onPressUp","onPressChange","preventFocusOnPress","allowFocusWhenDisabled","deprecatedOnClick","pressProps","isPressed","focusableProps","$","labelable","$23b9f4fcf0fe224b$export$d68d59712b04d9d1","parentKey","prevKey","firstChildKey","lastChildKey","$23b9f4fcf0fe224b$export$408d25a4e12db025","keyMap","getKeys","firstKey","getKeyBefore","_node_key","getKeyAfter","getFirstKey","getLastKey","lastKey","_this_keyMap_get","addNode","frozen","removeNode","commit","isSSR","$681cc3c98f569e39$export$410b0c854570d131","_firstChild","markDirty","_lastChild","_previousSibling","_nextSibling","_parentNode","_this_parentNode","startTransaction","hasSetProps","endTransaction","queueUpdate","newNode","referenceNode","$681cc3c98f569e39$export$dc064fe9e59310fd","updateNode","_this_previousSibling","_this_nextSibling","_this_firstChild","_this_lastChild","getMutableNode","_this_previousSibling_node_key","_this_nextSibling_node_key","_this_firstChild_node_key","_this_lastChild_node_key","setProps","nodeId","$681cc3c98f569e39$export$b34a105447964f9f","mutatedNodes","getMutableCollection","collectionMutated","dirtyNodes","transactionCount","getCollection","updateCollection","subscriptions","resetAfterSSR","nodesByProps","$e1995378a142960e$var$ShallowRenderContext","$e1995378a142960e$var$CollectionDocumentContext","$e1995378a142960e$export$bf788dd355e3a401","createCollection","getServerSnapshot","$e1995378a142960e$var$useSyncExternalStore","$e1995378a142960e$var$useCollectionDocument","$e1995378a142960e$var$CollectionInner","isSSRRef","getSnapshotWrapper","$e1995378a142960e$var$SSRContext","$e1995378a142960e$export$18af5c7a9e9b3664","Result","Type","itemRef","$e1995378a142960e$var$useSSRCollectionNode","$e1995378a142960e$var$CollectionContext","$e1995378a142960e$export$fb8073518f34e6ec","idScope","addIdAndValue","$e1995378a142960e$var$CollectionRoot","wrappedChildren","getFirstChild","reactAriaHidden","$f39a9eba43920ace$export$94b6d0abf7d33e8c","$f39a9eba43920ace$var$hiddenFragment","$f39a9eba43920ace$export$8dc98ba7eadeaa56","$f39a9eba43920ace$export$86427a43e3e48ebb","$f39a9eba43920ace$export$b5d7cc18bb8d2b59","$e948873055cbafe4$export$727c8fc270210f13","_rendered_props_id","$de5926a92e8ebc5b$exports","plural","optionCount","true","groupTitle","groupCount","isGroupChange","optionText","$c350ade66beef0af$export$8c18d1b4f7232bbf","buttonRef","keyboardDelegate","layoutDelegate","shouldFocusWrap","backupBtnRef","stringFormatter","menuTriggerProps","menuProps","disabledKeys","delegate","collectionProps","disallowTypeAhead","disallowEmptySelection","isVirtualized","validationDetails","displayValidation","errorMessageProps","isComposing","isLink","collectionItem","routerOptions","selectedKey","continuePropagation","setFocusedKey","_popoverRef_current","blurFromButton","blurIntoPopover","setFocused","isFocused","triggerLabelProps","lastEventTime","focusedItem","_focusedItem_parentKey","sectionKey","_state_selectionManager_focusedKey","itemKey","lastSection","lastItem","sectionTitle","announcement","lastSize","lastOpen","didOpenWithoutFocusedItem","lastSelectedKey","selectedItem","excludeFromTabOrder","_inputRef_current","centerX","centerY","_inputRef_current1","autoCorrect","spellCheck","focusStrategy","shouldUseVirtualFocus","shouldSelectOnPressUp","shouldFocusOnHover","linkBehavior","$645f2e67b85a24c9$export$e989c0fffaa6b27a","childElement","windowObject","SVGElement","computedDisplay","computedVisibility","$645f2e67b85a24c9$var$isStyleVisible","$645f2e67b85a24c9$var$isAttributeVisible","$9bf71ea28793e738$var$FocusContext","$9bf71ea28793e738$var$RESTORE_FOCUS_EVENT","$9bf71ea28793e738$var$activeScope","$9bf71ea28793e738$export$20e40289641fbbb6","contain","restoreFocus","startRef","endRef","scopeRef","$9bf71ea28793e738$var$TreeNode","$9bf71ea28793e738$export$d06fae2ee68b101e","getTreeNode","$9bf71ea28793e738$var$isAncestorScope","activeNode","addChild","_startRef_current","restore","$9bf71ea28793e738$var$isElementInScope","$9bf71ea28793e738$var$isElementInAnyScope","$9bf71ea28793e738$var$useActiveScopeTracker","focusedNode","raf","$9bf71ea28793e738$var$shouldContainFocus","focusedElement","walker","$9bf71ea28793e738$export$2d6ec8fc375ceafa","$9bf71ea28793e738$var$getScopeRoot","nextElement","previousNode","$9bf71ea28793e738$var$focusElement","$9bf71ea28793e738$var$isElementInChildScope","$9bf71ea28793e738$var$focusFirstInScope","_focusedNode_current","$9bf71ea28793e738$var$useFocusContainment","nodeToRestoreRef","$9bf71ea28793e738$var$shouldRestoreFocus","treeNode","nodeToRestore","_nodeToRestoreRef_current","clonedTree","$9bf71ea28793e738$var$restoreFocusToElement","$9bf71ea28793e738$var$getFirstInScope","$9bf71ea28793e738$var$useRestoreFocus","autoFocusRef","$9bf71ea28793e738$var$useAutoFocus","traverse","_focusScopeTree_getTreeNode_parent","_focusScopeTree_getTreeNode","_focusScopeTree_getTreeNode_parent_scopeRef","parentScope","removeTreeNode","focusNext","wrap","sentinel","focusPrevious","focusFirst","focusLast","$9bf71ea28793e738$var$createFocusManagerForScope","$9bf71ea28793e738$export$10c5169755ce7bd7","_useContext","$9bf71ea28793e738$var$focusableElements","$9bf71ea28793e738$var$FOCUSABLE_ELEMENT_SELECTOR","$9bf71ea28793e738$var$TABBABLE_ELEMENT_SELECTOR","$9bf71ea28793e738$export$1258395f99bf9cbf","ancestor","scopeRoot","createTreeWalker","acceptNode","_opts_from","FILTER_REJECT","FILTER_SKIP","FILTER_ACCEPT","$9bf71ea28793e738$var$Tree","fastMap","addTreeNode","_node_parent","newTree","_node_parent_scopeRef","$6a99195332edec8b$export$80f3e147d781571c","lastFocusedElement","$f7dceffc5ad7768b$export$4e328f61c538687f","isTextInput","within","isFocusVisibleState","setFocusVisible","updateState","focusProps","focusWithinProps","onFocusWithinChange","$e6afbd83fe6ebbd2$var$FocusableContext","$e6afbd83fe6ebbd2$export$4c014de7c8940b4c","domRef","keyboardProps","interactions","$e6afbd83fe6ebbd2$var$useFocusableContext","interactionProps","$e93e671b31057976$export$b8473d3665f3a75a","realtimeValidation","setCustomValidity","updateValidation","validity","valid","$e93e671b31057976$var$getValidity","validationMessage","resetValidation","onInvalid","_ref_current","commitValidation","_ref_current1","$e93e671b31057976$var$getFirstInvalidInput","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","$148a7a147e38ea7f$var$RTL_SCRIPTS","$148a7a147e38ea7f$var$RTL_LANGS","localeString","Locale","maximize","textInfo","getTextInfo","lang","$1e5a04cdaf7d1af8$var$localeSymbol","$1e5a04cdaf7d1af8$export$f09106e7c6677ec5","language","userLanguage","DateTimeFormat","supportedLocalesOf","$1e5a04cdaf7d1af8$var$currentLocale","$1e5a04cdaf7d1af8$var$listeners","$1e5a04cdaf7d1af8$var$updateLocale","$18f2051aff69b9bf$var$I18nContext","$18f2051aff69b9bf$export$43bb16f9c6d9e3f7","setDefaultLocale","$325a3faab7a68acd$var$cache","$325a3faab7a68acd$export$a16aca283550c30d","Collator","$5b160d28a433310d$var$localeSymbol","$5b160d28a433310d$var$stringsSymbol","$5b160d28a433310d$var$cachedGlobalStrings","$5b160d28a433310d$export$c17fa47878dc55b6","getStringForLocale","getStringsForLocale","strings","$5b160d28a433310d$var$getLanguage","$5b160d28a433310d$var$getStringsForLocale","getGlobalDictionaryForPackage","packageName","globalStrings","pkg","dictionary","messages","fromEntries","$6db58dc88e78b024$var$pluralRulesCache","$6db58dc88e78b024$var$numberFormatCache","$6db58dc88e78b024$export$2f817fcdc4b89ae0","variables","pluralRules","PluralRules","numberFormat","$fca6afa0e843324b$var$cache","$fca6afa0e843324b$export$f12b703ca79dfbb1","$fca6afa0e843324b$var$getCachedDictionary","$fca6afa0e843324b$export$87b761675e8eaa10","$f1ab8c75478c6f73$export$3351871ee4b288b8","isRegistered","prevContext","register","$f1ab8c75478c6f73$export$cf75428e0b9ed1ea","$ae1eeba8b9eafd08$export$5165eccb35aaadb5","$14c0b72509d70225$var$state","$14c0b72509d70225$var$savedUserSelect","$14c0b72509d70225$var$modifiedElementMap","$14c0b72509d70225$export$16a4697467175487","documentObject","webkitUserSelect","userSelect","$14c0b72509d70225$export$b0d6fa1ab32e3295","targetOldUserSelect","$a1ea59d68270f0dd$export$f8168d8dd8fd66e6","onFocusProp","onBlurProp","onSyntheticFocus","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS","Tab","Escape","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","$507fabe10e71c6fb$var$handleKeyboardEvent","$507fabe10e71c6fb$var$isValidKey","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","PointerEvent","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$b9b3dfddab17db27","$507fabe10e71c6fb$export$630ff653c5ada6a9","$507fabe10e71c6fb$export$8397ddfc504fdb9a","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$var$nonTextInputTypes","$507fabe10e71c6fb$export$ec71b4b83ac08ec3","_e_target","IHTMLInputElement","IHTMLTextAreaElement","HTMLTextAreaElement","IHTMLElement","IKeyboardEvent","KeyboardEvent","$507fabe10e71c6fb$var$isKeyboardFocusEvent","$9ab94262bd0047c7$export$420e68273165f4ec","onBlurWithin","onFocusWithin","isFocusWithin","$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$hoverCount","$6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$handleGlobalPointerEvent","$6179b936705e76d3$var$setupGlobalTouchEvents","$6179b936705e76d3$export$ae780daf29e6d456","onHoverStart","onHoverChange","onHoverEnd","isHovered","setHovered","ignoreEmulatedMouseEvents","hoverProps","triggerHoverEnd","triggerHoverStart","onPointerEnter","onPointerLeave","$93925083ecbb358c$export$48d1ea6320830260","shouldStopPropagation","$46d819fcbaf35654$export$8f71654801c2f7cd","$ef06256079686ba0$var$descriptionId","$ef06256079686ba0$var$descriptionNodes","$8a26561d2877236e$var$DEFAULT_THRESHOLD","$8a26561d2877236e$export$c24ed0104d07eab9","onLongPressStart","onLongPressEnd","onLongPress","accessibilityDescription","timeRef","addGlobalListener","removeGlobalListener","onContextMenu","refCount","longPressProps","_class_extract_field_descriptor","receiver","privateMap","_class_private_field_set","_class_apply_descriptor_set","$f6c31cce2adf654f$var$_shouldStopPropagation","$f6c31cce2adf654f$var$PressEvent","_class_apply_descriptor_get","_state_target","privateCollection","_check_private_redeclaration","$f6c31cce2adf654f$var$LINK_CLICKED","$f6c31cce2adf654f$export$45712eceda6fad21","isPressedProp","shouldCancelOnPointerExit","allowTextSelectionOnPress","contextProps","$f6c31cce2adf654f$var$usePressResponderContext","setPressed","ignoreClickAfterPress","didFirePressStart","isTriggeringEvent","activePointerId","isOverTarget","removeAllGlobalListeners","triggerPressStart","triggerPressEnd","wasPressed","triggerPressUp","$f6c31cce2adf654f$var$createEvent","cancelOnPointerExit","$f6c31cce2adf654f$var$isValidKeyboardEvent","_state_metaKeyEvents","$f6c31cce2adf654f$var$shouldPreventDefaultKeyboard","originalTarget","pressUp","metaKeyEvents","isOpening","stopPressStart","stopPressUp","stopPressEnd","_state_metaKeyEvents1","$f6c31cce2adf654f$var$isHTMLAnchorLink","onPointerDown","$f6c31cce2adf654f$var$shouldPreventDefaultDown","onPointerMove","onPointerUp","onPointerCancel","$f6c31cce2adf654f$var$isOverTarget","$f6c31cce2adf654f$var$shouldPreventDefaultUp","onMouseUp","$f6c31cce2adf654f$var$getTouchFromEvent","$f6c31cce2adf654f$var$createTouchEvent","$f6c31cce2adf654f$var$getTouchById","onTouchCancel","_ref_current_target","$f6c31cce2adf654f$var$isValidInputKey","pointRect","radiusX","radiusY","$f6c31cce2adf654f$var$getPointClientRect","HTMLButtonElement","$f6c31cce2adf654f$var$nonTextInputTypes","$8a9cb279dc87e130$export$905e7fc544a71f36","$8a9cb279dc87e130$export$715c682d09d639cc","stateRef","dispatchBlur","HTMLSelectElement","onBlurHandler","_stateRef_current_observer","relatedTargetEl","FocusEvent","attributeFilter","$2baaea4c71418dea$export$294aa081a6c6f55d","validationState","fieldProps","errorMessageId","$d191a55c9702f145$export$8467354a121f1b9f","ariaLabelledby","labelElementType","$c132121280ec012d$export$50eacbbf140a3141","selectionBehavior","listProps","collator","usage","sensitivity","disabledBehavior","onAction","selectionMode","$880e95eb8b93ba9a$var$isActionKey","$880e95eb8b93ba9a$var$isSelectionKey","$293f70390ea03370$export$497855f14858aa34","_item_props","_item_props1","_props_isDisabled","_props_isSelected","_props_shouldSelectOnPressUp","_props_shouldFocusOnHover","_props_shouldUseVirtualFocus","_props_isVirtualized","_data_onAction","hasAction","allowsSelection","allowsDifferentPressOrigin","onSelect","toggleSelection","getItemProps","setSelectedKeys","selectedKeys","replaceSelection","extendSelection","childFocusStrategy","isLinkOverride","hasLinkAction","canSelectItem","allowsActions","hasPrimaryAction","isEmpty","hasSecondaryAction","longPressEnabled","longPressEnabledOnPressStart","hadPrimaryActionOnPressStart","performAction","itemPressProps","onDoubleClick","setSelectionBehavior","onDragStartCapture","linkProps","$b1f0cad8af73213b$export$3585ede4d035bf14","$b1f0cad8af73213b$export$9145995848b05025","$319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY","$319e236875307eab$var$liveAnnouncer","$319e236875307eab$export$a9b970dcc4ae71a9","assertiveness","$319e236875307eab$var$LiveAnnouncer","IS_REACT_ACT_ENVIRONMENT","jest","isAttached","_this_node","createLog","_this_assertiveLog","_this_politeLog","assertiveLog","politeLog","liveAnnouncer","clipPath","$2cbb7ca666678a14$exports","$168583247155ddda$export$dc9c12ed27dd1b49","trigger","menuTriggerId","overlayProps","$96b38030c423d352$export$60d741e20e0aa309","$337b884510726a0d$export$a2200b96afd16271","$337b884510726a0d$export$c6fdb837b070b4ff","portalContainer","isExiting","setContain","getContainer","disableFocusManagement","$337b884510726a0d$export$14c98a7594375490","$5e3802645cc19319$var$refCountMap","$5e3802645cc19319$var$observerStack","$5e3802645cc19319$export$1c3ebcada18427bf","visibleNodes","hiddenNodes","walk","acceptRoot","_refCountMap_get","addedNodes","reactAriaTopLayer","observerWrapper","$dd149f63282afbbf$export$f6211563215e3b37","$dd149f63282afbbf$export$18fc8428861184da","onCloseHandler","$628037886ba31236$export$f9d5c8beee7d008d","ariaHasPopup","overlayId","$edcf132a9284368a$var$AXIS","$edcf132a9284368a$var$FLIPPED_DIRECTION","$edcf132a9284368a$var$CROSS_AXIS","$edcf132a9284368a$var$AXIS_SIZE","$edcf132a9284368a$var$TOTAL_SIZE","$edcf132a9284368a$var$PARSED_PLACEMENT_CACHE","$edcf132a9284368a$var$visualViewport","visualViewport","$edcf132a9284368a$var$getContainerDimensions","containerNode","totalWidth","totalHeight","_visualViewport_scale","isPinchZoomedIn","_visualViewport_width","_visualViewport_height","$edcf132a9284368a$var$getOffset","_visualViewport_pageTop","_visualViewport_pageLeft","pageTop","pageLeft","$edcf132a9284368a$var$getDelta","boundaryDimensions","containerDimensions","containerOffsetWithBoundary","_containerDimensions_scroll_axis","containerScroll","boundarySize","boundaryStartEdge","boundaryEndEdge","startEdgeOffset","endEdgeOffset","$edcf132a9284368a$var$parsePlacement","crossPlacement","crossAxis","crossSize","$edcf132a9284368a$var$computePosition","childOffset","overlaySize","placementInfo","crossOffset","isContainerPositioned","arrowSize","arrowBoundaryOffset","_childOffset_crossAxis","_childOffset_crossSize","_overlaySize_crossSize","_childOffset_crossSize1","_overlaySize_crossSize1","minPosition","maxPosition","containerHeight","$edcf132a9284368a$var$getAvailableSpace","margins","_boundaryDimensions_scroll_axis","_margins_axis","_margins_axis1","$edcf132a9284368a$export$b3ceb0cbf1056d98","overlayNode","scrollNode","shouldFlip","boundaryElement","offsetParent","$edcf132a9284368a$var$isContainingBlock","$edcf132a9284368a$var$getContainingBlock","isViewportContainer","containerPositionStyle","$edcf132a9284368a$var$getPosition","$edcf132a9284368a$var$getMargins","_margins_left","_margins_right","_margins_top","_margins_bottom","scrollSize","placementInput","flip","userSetMaxHeight","normalizedOffset","flippedPlacementInfo","flippedPosition","heightGrowthDirection","overlayHeight","_position_bottom","overlayTop","_boundaryDimensions_scroll_top","_boundaryDimensions_scroll_top1","_margins_top1","_margins_bottom1","$edcf132a9284368a$var$getMaxHeight","arrowPosition","preferredArrowPosition","arrowMinPosition","overlayMargin","arrowMaxPosition","arrowOverlappingChildMinEdge","arrowOverlappingChildMaxEdge","arrowPositionOverlappingChild","arrowOffsetLeft","arrowOffsetTop","$edcf132a9284368a$export$6839422d1f33cee9","parentOffset","parentStyle","borderTopWidth","borderLeftWidth","willChange","backdropFilter","WebkitBackdropFilter","$2a41e45df1593e64$var$visualViewport","$2a41e45df1593e64$var$translateRTL","$e0b6e0b68ec7f50f$var$isValidEvent","$a11501f3d1d39e6c$var$visibleOverlays","$a11501f3d1d39e6c$export$ea8f71083e90600f","shouldCloseOnBlur","isDismissable","isKeyboardDismissDisabled","shouldCloseOnInteractOutside","onHide","onInteractOutside","onInteractOutsideStart","isPointerDown","triggerInteractOutside","underlayProps","$62d8ded9296f3872$export$cfa2225e87938781","checkForOverflow","scrollableNode","scrollingElement","$49c51c25361d4cd2$var$visualViewport","$49c51c25361d4cd2$var$nonTextInputTypes","$49c51c25361d4cd2$var$restore","$49c51c25361d4cd2$var$preventScrollCount","$49c51c25361d4cd2$var$setStyle","cur","$49c51c25361d4cd2$var$addEvent","$49c51c25361d4cd2$var$scrollIntoView","nextTarget","scrollable","scrollableTop","targetTop","$49c51c25361d4cd2$var$willOpenKeyboard","$f2f8a6077418541e$export$542a6fd13ac93354","positionProps","arrowProps","targetRef","overlayRef","scrollRef","containerPadding","shouldUpdatePosition","setPosition","lastScale","updatePosition","anchor","_document_activeElement","anchorRect","scrollRect","_anchorRect_top","_anchorRect_bottom","_window_visualViewport","_window_visualViewport_height","newOffset","isResizing","_position_maxHeight","_position_placement","restoreScrollableStyles","restoreStyles","setupStyles","pageXOffset","pageYOffset","removeEvents","overscrollBehavior","$49c51c25361d4cd2$var$preventScrollMobileSafari","$8112f8b883c0272d$exports","$4d52238874b24f86$export$9bb30bbe003b82e0","validation","$657e4dc4a6e88df0$export$8f5ed9ff9f511381","getItemRect","containerRect","itemRect","getContentSize","_container_scrollWidth","_container_scrollHeight","getVisibleRect","_container_scrollLeft","_container_scrollTop","_container_offsetWidth","_container_offsetHeight","$2a25aae57d74318e$export$a05409b8bb224a5a","findNextNonDisabled","getNextKey","getPreviousKey","shouldSkip","tempKey","prevRect","isSameRow","isSameColumn","getKeyBelow","layout","getKeyAbove","getNextColumn","getKeyRightOf","layoutDelegateMethod","getKeyLeftOf","getKeyPageAbove","getKeyPageBelow","getKeyForSearch","fromKey","$e9faafb641e167db$export$90fc3a17d93f704c","handleEvent","$2f04cbc44ee30ce0$export$53a0910f038337bd","scrollView","$2f04cbc44ee30ce0$var$relativeOffset","borderAdjustedX","borderAdjustedY","maxX","maxY","sum","$2f04cbc44ee30ce0$export$c826860796309d1b","targetElement","scrollParents","scrollParent","_targetElement_scrollIntoView","originalLeft","originalTop","newLeft","newTop","_opts_containingElement_scrollIntoView","_opts_containingElement","_targetElement_scrollIntoView1","containingElement","inline","$ae20dd8cbca75726$export$d6daf82dcd84e87c","disallowSelectAll","selectOnFocus","allowsTabNavigation","scrollPos","_scrollRef_current","_scrollRef_current1","_scrollRef_current_scrollTop","_scrollRef_current_scrollLeft","_delegate_getFirstKey","_delegate_getLastKey","_delegate_getFirstKey1","_delegate_getLastKey1","lastFocusedKey","navigateToKey","childFocus","_delegate_getKeyBelow","_delegate_getKeyAbove","_delegate_getKeyLeftOf","_delegate_getFirstKey2","_delegate_getLastKey2","_delegate_getKeyRightOf","_delegate_getLastKey3","_delegate_getFirstKey3","clearSelection","navigateToFirstKey","_manager_lastSelectedKey","_manager_firstSelectedKey","DOCUMENT_POSITION_FOLLOWING","firstSelectedKey","typeSelectProps","$fb3050f43d946246$var$TYPEAHEAD_DEBOUNCE_WAIT_MS","$fb3050f43d946246$export$e32c88dfddc6e1d8","onTypeSelect","onKeyDownCapture","character","$feb5ffebff200149$export$d3e3bd3e26688c04","$feb5ffebff200149$export$16792effe837dba3","$b5e257d569688ac6$var$defaultContext","$b5e257d569688ac6$var$SSRContext","$b5e257d569688ac6$var$IsSSRContext","$b5e257d569688ac6$var$canUseDOM","$b5e257d569688ac6$var$componentIds","$b5e257d569688ac6$export$619500959fc48b26","defaultId","didSSR","$b5e257d569688ac6$export$535bd6ca7f90a273","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","currentOwner","prevComponentValue","$b5e257d569688ac6$var$useCounter","$b5e257d569688ac6$var$getSnapshot","$b5e257d569688ac6$var$getServerSnapshot","$b5e257d569688ac6$var$subscribe","onStoreChange","$2d73ec29415bd339$export$712718f7aec83d5","inputElementType","inputOnlyProps","readOnly","autoCapitalize","minLength","inputMode","onCopy","onCut","onPaste","onCompositionEnd","onCompositionStart","onCompositionUpdate","onBeforeInput","onInput","$ff5963eb1fccf552$export$e08e3b67e392101e","$431fbd86ca7dc216$export$b204af158042fbac","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$65484d02dcb7eb3e$var$DOMPropNames","$65484d02dcb7eb3e$var$labelablePropNames","$65484d02dcb7eb3e$var$linkPropNames","$65484d02dcb7eb3e$var$propRe","$65484d02dcb7eb3e$export$457c3d6518dd4c6f","propNames","filteredProps","$7215afc6de606d6b$export$de79e2c695e052f3","$7215afc6de606d6b$var$supportsPreventScrollCached","$7215afc6de606d6b$var$supportsPreventScroll","scrollableElements","rootScrollingElement","$7215afc6de606d6b$var$getScrollableElements","$7215afc6de606d6b$var$restoreScrollPosition","$cc38e7bd3fc7b213$export$2bb74740c4e19def","isScrollable","$6a7db85432448f7f$export$60278871457622de","mozInputSource","$6a7db85432448f7f$export$29bf1b5f2c56cf63","$3ef42575df84b30b$export$9d1611c77c2fe928","$ea8dcbcb9ea1b556$var$RouterContext","isNative","modifiers","download","ping","referrerPolicy","$ea8dcbcb9ea1b556$var$getSyntheticLink","$ea8dcbcb9ea1b556$export$95185d699e05d4d7","$ea8dcbcb9ea1b556$export$9a302a45f65d0572","$ea8dcbcb9ea1b556$export$efa8c9099e530235","setOpening","_window_event_type","_window_event","keyIdentifier","MouseEvent","$ea8dcbcb9ea1b556$export$7e924b3091a3bd18","_props_href","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","brands","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","maxTouchPoints","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$e1865c3bedcd822b","$c87311424ea30a05$export$78551043582a6a98","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$a11b0059900ceec8","$c87311424ea30a05$export$b7d78993b74f766d","$bbed8b41f857bcc0$var$transitionsByElement","$bbed8b41f857bcc0$var$transitionCallbacks","$bbed8b41f857bcc0$var$setupGlobalEvents","isTransitionEvent","$bbed8b41f857bcc0$export$24490316f764c430","$8ae05eaa5c114e9c$export$7f54fc3180508a52","$99facab73266f662$export$5add1d006293d136","resetValue","handleReset","$03deb23ff14920c4$export$4eaf04e54aa8eed6","globalListeners","eventTarget","_globalListeners_current_get","$bdb11010cef70236$var$canUseDOM","$bdb11010cef70236$var$idsUpdaterMap","$bdb11010cef70236$export$f680877a34711e37","nextId","updateValue","$bdb11010cef70236$export$cd8c9cb68f842629","idA","idB","setIdsA","setIdsB","$bdb11010cef70236$export$b4cc09c592e8fdb8","depArray","resolvedId","setResolvedId","nextRef","updateId","$313b98861ee5dd6c$export$d6875122194c7b44","defaultLabel","labelledBy","$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$df56164dff5785e2$export$4338b53315abf666","objRef","$9daab02d461809db$export$683480f191c0e3ea","$e7801be82b4b2a53$export$4debdb1a3f0fa79e","$5c3e21d68f1c4674$var$styles","$5c3e21d68f1c4674$export$a966af930f325cab","visuallyHiddenProps","$5c3e21d68f1c4674$export$439d29a4e110a164","$c1d7fb2ec91bae71$var$Item","$c1d7fb2ec91bae71$var$hasChildItems","hasChildItems","childItems","getCollectionNode","suppressTextValueWarning","$c1d7fb2ec91bae71$export$6d08773d2e66f8f2","$c5a24bc478652b5f$export$1005530eda016c13","$c5a24bc478652b5f$export$fbdeaa6a76694f71","$c5a24bc478652b5f$export$5f3398f8733f90e2","$c5a24bc478652b5f$export$8c434b3a7a4dad6","aAncestors","$c5a24bc478652b5f$var$getAncestors","bAncestors","firstNonMatchingAncestor","currNode","$453cc9f0df89c0a5$var$cache","$453cc9f0df89c0a5$export$77d5aafae4e095b2","countItems","$a9e7382a7d111cb5$export$b453a3bfd4a5fa9e","_collection_getItem","defaultFilter","menuTrigger","showAllItems","setShowAllItems","setFocusedState","setFocusStrategy","_props_items","setSelectedKey","resetInputValue","closeMenu","defaultItems","defaultInputValue","_collection_getItem1","_collection_getItem_textValue","originalCollection","filteredCollection","$a9e7382a7d111cb5$var$filterNodes","$a9e7382a7d111cb5$var$filterCollection","lastCollection","setLastCollection","menuOpenTrigger","triggerState","displayAllItems","updateLastCollection","toggleMenu","lastValue","setLastValue","itemText","_props_selectedKey","_collection_getItem_textValue1","lastSelectedKeyText","selectedItemText","commitCustomValue","commitSelection","_props_onSelectionChange","commitValue","valueOnFocus","displayedCollection","filteredNode","filtered","$e5be200c675c3b3a$export$aca958c65c314e6c","$e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE","$e5be200c675c3b3a$export$dad6ae84456c676a","$e5be200c675c3b3a$export$571b5131b7e65c11","$e5be200c675c3b3a$export$a763b9476acd3eb","$e5be200c675c3b3a$export$fc1a364ae1f3ff10","builtinValidation","controlledError","clientError","validateErrors","$e5be200c675c3b3a$var$asArray","$e5be200c675c3b3a$var$runValidate","$e5be200c675c3b3a$var$getValidationResult","serverErrors","serverErrorMessages","flatMap","lastServerErrors","setLastServerErrors","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","$e5be200c675c3b3a$var$isEqualValidation","$e5be200c675c3b3a$var$useFormValidationStateImpl","$a02d57049d202695$export$d085fb9e920b5ca7","_node_prevKey","_node_nextKey","_last_key","$7af3f5b51489e0b5$var$convertSelection","selection","$eb2240fc39a57fa5$export$bf788dd355e3a401","$eb2240fc39a57fa5$var$iterable","iterateCollection","getFullNode","renderer","partialNode","_v_key","getChildState","_partialNode_index","cached","shouldInvalidate","_partialNode_index1","childNode","_childNode_key","nodeKey","wrapper","$eb2240fc39a57fa5$var$compose","_childNode_value","_parentNode_type","$eb2240fc39a57fa5$var$capitalize","_partialNode_value","_partialNode_textValue","outer","inner","$e72dd72e1c76a225$export$2f645645f7bca764","selectionState","allowDuplicateSelectionEvents","selectionBehaviorProp","isFocusedRef","focusedKeyRef","childFocusStrategyRef","selectedKeysProp","defaultSelectedKeys","disabledKeysProp","lastSelectionBehavior","setA","setB","$7af3f5b51489e0b5$var$equalSets","factory","cachedCollection","startItem","cachedItemNodes","itemNode","itemNodes","_cachedItemNodes_length","_itemNodes_length","_startItem_index","_startItem_index1","_itemNodes_length1","isReverseSearching","_startItem_index2","_startItem_index3","$a0d645289fe9b86b$export$e7f05e985daf4b5f","_props_defaultSelectedKey","_keys_values_next_value","$fc909762b330b746$export$61c6a8c84e605fb6","$e40ea825a81a3709$export$52baac22726c72bf","anchorKey","currentKey","$d496c0a20b6e58ec$export$6c8a5aaad13c9852","getSelectAllKeys","rawSelection","mappedKey","isSelectAll","_isSelectAll","_first_key","toKey","mappedToKey","_selectedKeys_anchorKey","_selectedKeys_currentKey","getKeyRange","fromItem","toItem","getKeyRangeInternal","_this_layoutDelegate","allowsCellSelection","addKeys","_getFirstItem","_getFirstItem_key","toggleSelectAll","isSelectionEqual","_this_collection_getItem_props","_this_collection_getItem","_options_allowsCellSelection","$9446cca9a3875146$export$7d15b64cf5a3a4c4","$9446cca9a3875146$export$e1a7b8e69ef6c52f","roundedValue","stepString","pointIndex","precision","$9446cca9a3875146$export$cb6e0bb50bc19463","remainder","snappedValue","$458b0a5536c1a7cf$export$40bfa8c7b0832715","stateValue","setStateValue","isControlledRef","wasControlled","currentValue","onChangeCaller","onChangeArgs","oldValue","functionArgs","interceptedValue","onSubscribe","setEventListener","onUnsubscribe","hasListeners","setup","Mutation","failureCount","failureReason","submittedAt","setOptions","scheduleGc","updateGcTime","addObserver","clearGcTimeout","removeObserver","optionalRemove","onFail","onContinue","restored","canStart","onMutate","onMutationUpdate","getDefaultState","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","originalQueue","batchCalls","setNotifyFunction","setBatchNotifyFunction","setScheduler","createNotifyManager","onlineListener","offlineListener","setOnline","Query","hasData","initialDataUpdatedAt","dataUpdateCount","dataUpdatedAt","errorUpdateCount","errorUpdatedAt","fetchFailureCount","fetchFailureReason","fetchMeta","isInvalidated","newData","updatedAt","setStateOptions","getObserversCount","isStale","getCurrentResult","shouldFetchOnWindowFocus","refetch","shouldFetchOnReconnect","cancelRetry","continueRetry","addSignalProperty","isFetchingOptimistic","initialPromise","fetchState","onQueryUpdate","Removable","newGcTime","defaultRetryDelay","canFetch","CancelledError","isCancelledError","createRetryer","continueFn","promiseResolve","promiseReject","isRetryCancelled","isResolved","outerResolve","outerReject","canContinue","continueResolve","promiseOrValue","shouldRetry","Subscribable","isServer","functionalUpdate","isValidTimeout","timeUntilStale","resolveStaleTime","resolveEnabled","matchQuery","stale","hashQueryKeyByOptions","partialMatchKey","matchMutation","hashKey","queryKeyHashFn","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","copy","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","prot","sleep","replaceData","structuralSharing","keepPreviousData","previousData","addToEnd","addToStart","skipToken","ensureQueryFn","QueryClientContext","useQueryClient","bindMethods","prevOptions","isIdle","mutateOptions","mutateAsync","QueryObserver","shouldFetchOnMount","updateResult","shouldFetchOn","notifyOptions","prevQuery","shouldFetchOptionally","nextRefetchInterval","getOptimisticResult","createResult","optimisticResult","trackResult","onPropTracked","trackedResult","trackProp","getCurrentQuery","fetchOptimistic","refetchInterval","nextInterval","refetchIntervalInBackground","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","selectError","isInitialLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","shouldNotifyListeners","retryOnMount","shouldLoadOnMount","refetchOnMount","QueryErrorResetBoundaryContext","isReset","clearReset","createValue","useQueryErrorResetBoundary","IsRestoringContext","useIsRestoring","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureSuspenseTimers","shouldSuspend","Observer","isRestoring","_experimental_beforeQuery","_experimental_afterQuery","useBaseQuery","shouldThrowError","nn","rn","tn","en","Proxy","revocable","revoke","deleteProperty","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","an","freeSelf","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","funcToString","reIsHostCtor","reIsNative","Hash","__data__","ListCache","MapCache","resolver","Cache","lastCalled","rePropName","reEscapeChar","quote","subString","symbolProto","symbolToString","baseToString","iteratee","objValue","reIsUint","customizer","isArguments","hasFunc","spreadableSymbol","isConcatSpreadable","baseFlatten","isStrict","nativeMax","nativeNow","stamp","otherArgs","$0393f8ab869a0f1a$export$e9f3bf65a26ce129","$d2b4bc8c273e7be6$var$additionalButtonHTMLAttributes","$d2b4bc8c273e7be6$export$24d547caef80ccd1","$d2b4bc8c273e7be6$var$Button","$d2b4bc8c273e7be6$var$disablePendingProps","renderValues","defaultClassName","buttonId","progressId","wasPending","$d2b4bc8c273e7be6$export$353f5b6fc5456de1","$d01f2c01039c0eec$export$c02625b26074192c","$4e85f108e88277b8$export$d688439359537581","$3674c52c6b3c5bce$export$795aec4671cbae19","$de32f1b87079253c$export$8b93a07348a7730c","$de32f1b87079253c$export$2e1e1122cf0cba88","overlayTriggerState","expandedKeysStack","setExpandedKeysStack","openSubmenu","triggerKey","oldStack","closeSubmenu","$de32f1b87079253c$var$Dialog","originalAriaLabelledby","dialogProps","titleProps","isRefocusing","$de32f1b87079253c$export$3ddf2d174ce01153","$ee014567cb39d3f0$export$ff05c3ac10437e03","$ee014567cb39d3f0$var$FieldError","$ee014567cb39d3f0$var$FieldErrorInner","$ee014567cb39d3f0$export$f551688fc98f2e09","defaultChildren","$d3e0e05bdfcf66bd$export$c24727297075ec6a","$3985021b0ad6602f$export$37fb8590cf2c088c","$3985021b0ad6602f$var$filterHoverProps","$3985021b0ad6602f$var$Input","$3985021b0ad6602f$export$f5b8910cec6cf069","$01b77f81d0f07f68$export$75b6ee27786ba447","$01b77f81d0f07f68$var$Label","$01b77f81d0f07f68$export$b04be29aa201d4f5","$4f118338184dc1d9$export$e2509388b49734e7","$4f118338184dc1d9$var$Link","interactionHandlers","routerLinkProps","_pressProps_onClick","$4f118338184dc1d9$export$a6c7ac8248d6e38a","$7135fc7d473fd974$export$d40e14dec8b060a8","$7135fc7d473fd974$export$a164736487e3f0ae","CollectionRoot","renderDropIndicator","$7135fc7d473fd974$var$useCollectionRender","CollectionBranch","keyAfter","dropPosition","$7135fc7d473fd974$export$4feb769f8ddf26c5","$612b8eb6cb90e02d$export$d188a835a7bc5783","$612b8eb6cb90e02d$export$f55761759794cf55","$612b8eb6cb90e02d$var$DropIndicator","$612b8eb6cb90e02d$export$62ed72bc21f6b8a6","$612b8eb6cb90e02d$export$971707d8a129a1f7","dragAndDropHooks","dropState","_dragAndDropHooks_isVirtualDragging","isVirtualDragging","isDropTarget","useDropIndicator","$612b8eb6cb90e02d$export$d1e8e3fbb7461f6","_dropState_target","dropTargetKey","_dropState_collection_getKeyAfter","$72a5793c14baf454$export$e0e4026c12a8bdbb","$431f98aba6844401$export$6615d83f6de245ce","$eed445e0843c11d0$export$7ff8f37d2d81a48d","$eed445e0843c11d0$export$7c5906fe4f1f2af2","$eed445e0843c11d0$var$ListBox","$eed445e0843c11d0$var$ListBoxInner","$eed445e0843c11d0$var$StandaloneListBox","$eed445e0843c11d0$export$41f133550aa26f48","dragState","droppableCollection","isListDraggable","useDraggableCollectionState","isListDroppable","useDroppableCollectionState","dropTargetDelegate","ctxDropTargetDelegate","dragHooksProvided","dropHooksProvided","isRootDropTarget","dragPreview","preview","renderDragPreview","useDraggableCollection","DragPreview","ListDropTargetDelegate","useDroppableCollection","emptyState","$eed445e0843c11d0$var$ListBoxDropIndicatorWrapper","$eed445e0843c11d0$var$ListBoxSection","persistedKeys","headingRef","_props_arialabel","headingId","$eed445e0843c11d0$export$a11e76429ed99b4","states","draggableItem","useDraggableItem","droppableItem","useDroppableItem","isDragging","allowsDragging","dragProps","dropProps","dropIndicatorProps","$eed445e0843c11d0$var$ListBoxDropIndicatorForwardRef","$eed445e0843c11d0$var$ListBoxDropIndicator","$44f671af83e7d9e0$export$2de4954e8ae13b9f","$a2f21f5f14f60553$exports","$86ea4cb521eb2e37$export$2317d149ed6f78c4","onDismiss","$07b14b47974efb58$export$9b9a0cd73afb7ca4","$07b14b47974efb58$var$Popover","contextState","localState","isEntering","$07b14b47974efb58$var$PopoverInner","$07b14b47974efb58$export$5b6b19405a83ff9d","UNSTABLE_portalContainer","arrowRef","arrowWidth","setArrowWidth","_props_offset","inset","$df39c1238ae2b5f3$exports","$58aed456727eb0f3$export$703601b7e90536f8","$bdd25dc72710631f$export$cbd84cdb2e668835","selectRef","selectProps","_state_selectedKey","_triggerRef_current","$bdd25dc72710631f$export$f809e80f58e251d1","$82d7e5349645de74$export$7540cee5be7dc19b","$82d7e5349645de74$export$ef445b55be0601bd","$82d7e5349645de74$var$Select","$82d7e5349645de74$var$SelectInner","formValidationBehavior","_props_validationBehavior","listState","labelRef","valueProps","valueId","buttonWidth","setButtonWidth","renderPropsState","DOMProps","$82d7e5349645de74$export$f8f745c04421623f","$82d7e5349645de74$export$ef9b1a59e592288f","$82d7e5349645de74$var$SelectValue","_state_selectedItem","_state_selectedItem1","_state_selectedItem_value","_state_selectedItem_textValue","selectedText","isPlaceholder","$82d7e5349645de74$export$e288731fd71264f0","$514c0188e459b4c0$export$9afb8bc826b033ea","$514c0188e459b4c0$var$Text","$514c0188e459b4c0$export$5f1af8db9871e1d6","$216918bed6669f72$export$2dc6166a7e65358c","$216918bed6669f72$var$filterHoverProps","$216918bed6669f72$var$TextArea","$216918bed6669f72$export$f5c9f3c2c4054eec","$bcdf0525bf22703d$export$2129e27b3ef0d483","$bcdf0525bf22703d$var$TextField","setInputElementType","inputOrTextAreaRef","$bcdf0525bf22703d$export$2c73285ae9390cec","$64fa3d84918910a7$export$c62b8e45d58ddad9","$64fa3d84918910a7$export$2881499e37b75b9a","$64fa3d84918910a7$export$4d86445c2cf5e3","defaultStyle","computedClassName","computedStyle","computedChildren","$64fa3d84918910a7$export$fabf2dc03a41866e","availableSlots","ListFormat","slotKey","$64fa3d84918910a7$export$29f1550f4b0d4415","contextRef","mergedRef","mergedProps","contextStyle","$64fa3d84918910a7$export$9d4c57ee4c6ffdd8","hasSlot","setHasSlot","$64fa3d84918910a7$export$6d3443f2c48bfc20","isReady","setEntering","$64fa3d84918910a7$var$useAnimation","$64fa3d84918910a7$export$45fda7c47f93fd48","setExiting","exitState","setExitState","onEnd","prevAnimation","onAnimationEnd","$64fa3d84918910a7$export$ef03459518577ad4","isCheckBoxInput","isDateObject","isObjectType","getEventValue","isNameInFieldArray","getNodeParentName","tempObject","prototypeCopy","isWeb","cloneObject","FileList","compact","isKey","stringToPath","tempPath","EVENTS","BLUR","FOCUS_OUT","CHANGE","VALIDATION_MODE","onTouched","INPUT_VALIDATION_RULES","HookFormContext","useFormContext","getProxyFormState","formState","localProxyFormState","isRoot","_defaultValues","_proxyFormState","isEmptyObject","shouldRenderFormState","formStateData","updateFormState","convertToArrayPayload","shouldSubscribeByName","signalName","currentName","useSubscribe","subject","generateWatchOutput","_names","isGlobal","watch","fieldName","watchAll","Controller","methods","shouldUnregister","isArrayField","_name","_subjects","_formValues","_getWatch","_removeUnmounted","useWatch","_formState","_mounted","_localProxyFormState","dirtyFields","touchedFields","validatingFields","isValidating","_updateFormState","_updateValid","useFormState","_registerProps","_shouldUnregisterField","updateMounted","_fields","_state","unregister","_updateDisabledField","elm","reportValidity","invalid","useController","appendErrors","validateAllFieldCriteria","getValidationModes","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isWatched","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","abortEarly","currentField","updateFieldArrayRootError","fieldArrayErrors","isFileInput","isHTMLElement","isMessage","isRadioInput","isRegex","defaultResult","validResult","getCheckboxValue","defaultReturn","getRadioValue","getValidateError","getValueAndMessage","validationData","validateField","shouldUseNativeValidation","isFieldArray","isCheckBox","isRadioOrCheckbox","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","unset","childObject","updatePath","baseGet","isEmptyArray","createSubject","_observers","isPrimitive","deepEqual","object1","object2","keys1","keys2","val1","val2","isMultipleSelect","live","objectHasFunction","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","getFieldValueAs","setValueAs","getFieldValue","files","selectedOptions","getResolverOptions","criteriaMode","getRuleValue","rule","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","validateFunction","hasValidation","schemaErrorLookup","foundError","skipValidation","isSubmitted","unsetEmptyArray","shouldFocusError","createFormControl","delayErrorCallback","submitCount","isSubmitting","isSubmitSuccessful","unMount","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","shouldUpdateValid","_executeSchema","executeBuiltInValidation","_updateIsValidating","updateValidAndValue","shouldSkipSetValueAs","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","disabledField","_getDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldOnlyCheckValid","isFieldArrayRoot","isPromiseFunction","fieldError","optionRef","checkboxRef","radioRef","shouldTouch","shouldValidate","setValues","fieldKey","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","shouldSkipValidation","watched","previousErrorLookupResult","errorLookupResult","previousFieldError","delayError","updateErrors","updatedFormState","shouldRenderByError","_focusInput","fieldNames","executeSchemaAndUpdateState","shouldFocus","getFieldState","currentError","currentRef","restOfErrorTree","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","disabledIsDefined","progressive","fieldRef","radioOrCheckbox","_focusError","onValid","onValidError","fieldValues","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","_updateFieldArray","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","_getFieldArray","_resetDefaultValues","resetOptions","_disableForm","_setErrors","resetField","clearErrors","inputName","setFocus","shouldSelect","useForm","_formControl","_values","observerMap","RootIds","unsupportedValue","rootId","fallbackInView","bounds","intersectionRatio","boundingClientRect","intersectionRect","rootBounds","optionsToId","thresholds","_elements$get","trackVisibility","createObserver","useInView","_state$entry","setRef","entryTarget","previousEntryTarget","__rest","__awaiter","_arguments","adopt","__values","__read","ar","pack","SuppressedError","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","isNull","tagTester","nodelist","Int8Array","hasDataViewBug","isIE11","isDataView","getInt8","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","isMatch","attrs","_keys","_wrapped","toBufferView","bufferSource","byteOffset","tagDataView","eq","aStack","bStack","deepEq","areArrays","aCtor","bCtor","isEqual","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","pairs","invert","functions","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","toPath","deepGet","optimizeCb","argCount","accumulator","baseIteratee","mapObject","propertyOf","times","accum","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","oldSettings","variable","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","callArgs","strict","hasher","throttle","later","_now","trailing","debounce","immediate","negate","after","before","createPredicateIndexFinder","sortedIndex","low","high","mid","createIndexFinder","predicateFind","findLastIndex","findWhere","each","createReduce","guard","contextPath","pluck","where","lastComputed","reStrSymbol","sample","rand","temp","shuffle","criteria","partition","pass","keyInObj","pick","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chainResult","mixin"],"sourceRoot":""}