{"version":3,"sources":["webpack:///./Scripts/src/v2/app/Components/ModalPopup.ts","webpack:///./Scripts/src/v2/app/ViewModels/Products/Components/AddToCart.ts","webpack:///./Scripts/src/v2/app/ViewModels/Products/Models/ItemRowModel.ts","webpack:///./Scripts/src/v2/app/Components/CustomPopover.ts","webpack:///./Scripts/src/v2/app/ViewModels/Products/Models/ItemListModels.ts","webpack:///./Scripts/src/v2/app/ViewModels/Products/Models/IProductRowItem.ts"],"names":["ModalPopup","_createClass","_classCallCheck","_defineProperty","this","Title","ko","observable","Content","MainButtonText","SecondButtonText","AlertModal","_ModalPopup2","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","CustomPopover","turnAllocationDialogOn","GetAdvisoryAllocation","GetAdvisoryNoOrderAllocation","GetAllocationsNoticeAddressBook","ContactRecNo","Email","FirstName","LastName","Name","Phone","failedItemList","failedItemNotTakingOrder","AddToCartVM","observableArray","data","context","self","endpoint","ApprovalType","comment","RestrictionComment","Comment","SendRequestToApprover","payload","ajaxPost","JSON","stringify","toJS","AjaxPost","$","collapse","modal","console","debug","SelectedApprover","on","event","itemsAddedForAllocationMsg","itemsAddedForAllocationNotTakingMsg","ItemsToAdd","forEach","item","QtySelected","originalValue","added","push","ItemID","AllocationRequest","EmailTo","ProductURL","window","location","href","ItemsListOver","ItemsListNotTaking","stopImmediatePropagation","validationGroup","validation","group","CustEmail","CustName","CustPhone","isModified","UserMeta","toJSON","request","extend","required","email","maxLength","phoneUS","restriction","title","find","first","message","heading","Promise","resolve","reject","text","AddressBook","msgText","AltItemsHtml","html","url","getJSON","res","advisory","Message","toString","trim","approvers","RestrictAdmins","_AddToCartVM","arrayToUpdate","itemIndex","findIndex","x","cbFunction","each","UoMPrices","i","o","ContractPricingLevels","j","o1","UMQty","Price","SpecialPrice","Display","toFixed","UoM","OnContract","valueHasMutated","errFunction","err","cookieArr","document","cookie","split","cookiePair","decodeURIComponent","clickHereText","AltItemsString","BackOrderString","AltItemList","altItem","ImageName","ItemAltText","ProductUrl","alertContent","DataTarget","hide","removeClass","product","cartVM","qtyOrdered","undefined","header","QtyOrdered","Quantity","log","localStorage","getItem","itemToAdd","selectedSupplyListID","init","onSale","addToContract","ProductToAdd","getSelectedSupplyList","backdrop","action","supplyListID","response","then","result","cart","setItem","CartOrderNo","LocalKey","ParseCartData","UpdateRequestID","msgHeader","Messages","msgBody","msgSuccess","msgError","isContract","indexOf","OnSale","AddToContract","ajax","async","success","ShowRetrictionModal","CartOrderID","QuantityOrdered","prompt","Description","done","ContractItems","AskReviewCart","show","headers","dismissPermanent","info","attr","modalConfirmAdd","CartItems","click","addClass","viewModel","items","ContractItemsAll","index","itemsAdded","itemsRemoved","removed","dataLayerItem","obj","Object","assign","allProducts","ItemRows","ItemRowModel","AccessoryRowModel","UoMSelected","UMQtySelected","brand","VendName","category","Heading","id","name","SDname","price","variant","quantity","position","addDataLayerArray","map","removeDataLayerArray","getContractPrices","contractPromises","all","results","OnlySupplyList","OnlyContractPrice","QuotaExceeded","QuoteProvided","AllocationExceeded","AllocationExceededNoOrder","SuccessItemsResponse","getRestrictAdmins","itemsArray","parseInt","UoMPackSize","dataLayer","DataLayerModelFactory","addToCart","removeFromCart","addManyToCart","Cart","ItemList","LastActivity","indx","sortRestrictions","fail","successItems","failItems","reduce","a","b","indexOfProperty","processResults","array","isAllocation","isAllocation_NoOrderTaken","RestrictionItems","error","ContractPricingLength","row","displaySpecialPrice","cartItems","_loop","whatToDo","logic","z","extraPrice","vm","SupplyListName","val","CreateNewList","ajaxSuccess","xhr","options","empty","ajaxError","evt","opt","exc","setTimeout","contractItem","AddToContractFunction","ArrayToUpdate","promises","PopupImage","ItemImagePrimary","popupImage","getElementById","setAttribute","computed","owner","read","alertStatus","alertExpStatus","ALERTStatus","replace","ALERTExpStatus","htmlShipping","INFOEstShipDate","htmlBackorder","ALERTOrgDate","ALERTUpdateDate","htmlExpiring","alertString","Status","AlertType","Rx","setOriginalValue","umqty","uom","button","currentTarget","input","parent","btn","qty","baseValue","currentValue","maxValue","minValue","newValue","children","link","msg","append","removeItem","templateEngine","nativeTemplateEngine","bindingHandlers","customPopover","element","valueAccessor","allBindings","bindingContext","placement","get","trigger","templateName","$element","popover","content","template","container","renderTemplate","innerHTML","utils","domNodeDisposal","addDisposeCallback","ItemListModels","SelectedItem","DefaultUMDescription","SelectedList","SupplyListRecNo","ItemGroupRecNo","AddToList","itemToAddDesc","listname","listObj","SupplyLists","HasAnySupplyListItems","ProductRowPayLoad"],"mappings":"0fAOO,IAAMA,EAAUC,KAOnB,SAAAD,IAAcE,IAAA,KAAAF,GAAAG,IAAA,qBAAAA,IAAA,uBAAAA,IAAA,8BAAAA,IAAA,gCACVC,KAAKC,MAAQC,GAAGC,WAAW,MAC3BH,KAAKI,QAAUF,GAAGC,WAAW,MAC7BH,KAAKK,eAAiBH,GAAGC,WAAW,MACpCH,KAAKM,iBAAmBJ,GAAGC,WAAW,SAMjCI,EAAU,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAX,IAAA,KAAAS,GAAA,QAAAG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAC8C,OAD9CN,EAAAO,EAAA,KAAAT,EAAA,GAAAU,OAAAJ,IAAAd,IAAAU,EAAA,aAC2BP,GAAGC,WAAW,OAAKM,EAAA,OAAAS,IAAAX,EAAAC,GAAAX,IAAAU,GAD9C,CAASX,I,wJCfhCuB,cACA,IAAIC,GAAkC,EAClCC,EAAwB,qiBAOxBC,EAA+B,sWAO/BC,EAAkC,CAClC,CACIC,aAAc,EACdC,MAAO,+BACPC,UAAW,WACXC,SAAU,OACVC,KAAM,gBACNC,MAAO,iBAIXC,EAAiB,GACjBC,EAA2B,GAEVC,EAAWnC,KAAA,SAAAmC,IAAAlC,IAAA,KAAAkC,GAAAjC,IAAA,wBAC4BG,GAAG+B,gBAAgB,KAAGlC,IAAA,oBAC/BG,GAAGC,WAAW,OAAKJ,IAAA,wBACfG,GAAGC,WAAW,OAAKJ,IAAA,uBAC9C,SAACmC,EAAMC,GAE3B,IAAIC,EAAOD,EAEPE,EAAW,GAEf,GAA4B,MAAxBD,EAAKE,gBAAkD,MAAxBF,EAAKE,gBAAkD,MAAxBF,EAAKE,gBAAkD,MAAxBF,EAAKE,eAGlG,OAFAD,EAAmC,MAAxBD,EAAKE,eAAyB,kCAAoC,sCAErEF,EAAKE,gBACT,IAAK,IACL,IAAK,IACDD,EAAW,oCACX,MACJ,IAAK,IACDA,EAAW,sCACX,MACJ,IAAK,IACDA,EAAW,kCAUvB,IAAIE,EAAkC,MAAxBH,EAAKE,eAAyBF,EAAKI,mBAAqBJ,EAAKK,QAS3E,SAASC,EAAsBC,GAC3B,GAAgB,IAAZN,EAAgB,CAChB,IAAIO,EAA4B,CAC5BP,SAAUA,EACVM,QAASE,KAAKC,UAAU5C,GAAG6C,KAAKJ,KAGpC,IAAIK,IAASJ,GAEjBK,EAAE,mBAAmBC,SAAS,QAC9BD,EAAE,+BAA+BE,MAAM,QAG3C,GAAKjB,EAAL,CAQA,GALAkB,QAAQC,MAAM,wBAAyB,CAAEnB,OAAMC,YAE/CC,EAAKkB,iBAAiBpB,GAGM,MAAxBE,EAAKE,gBAAkD,MAAxBF,EAAKE,eAEpCW,EAAE,+BAA+BM,GAAG,QAAS,sBACzC,SAAUC,GAEN,IAAIC,EAA6B,GAC7BC,EAAsC,GAEtCvB,EAAQwB,YACRxB,EAAQwB,aAAaC,SAAQ,SAAUC,GAC/BA,EAAKC,cAAgBD,EAAKC,YAAYC,gBACtCF,EAAKG,MAAQH,EAAKC,cAAgBD,EAAKC,YAAYC,cACnDN,EAA2BQ,KAAKJ,EAAKK,YAKjDpC,EAAe8B,SAAQ,SAAUC,GAC7BJ,EAA2BQ,KAAKJ,EAAKK,WAGzCnC,EAAyB6B,SAAQ,SAAUC,GACvCH,EAAoCO,KAAKJ,EAAKK,WAIlD,IAAIC,EAAyB,CACzBC,QAASlC,EAAKT,MACdgB,QAASF,EACT8B,WAAYC,OAAOC,SAASC,KAC5BC,cAAehB,EACfiB,mBAAoBhB,GAExB5B,EAAiB,GACjBC,EAA2B,GAC3B0B,EAA6B,GAC7BC,EAAsC,GAEtCF,EAAMmB,2BAEN,IAAIC,EAAkB1E,GAAG2E,WAAWC,MAAM,CACtCC,UAAW3C,EAAK2C,UAChBC,SAAU5C,EAAK4C,SACfC,UAAW7C,EAAK6C,YAMpB7C,EAAK2C,UAAUG,YAAW,GAC1B9C,EAAK4C,SAASE,YAAW,GAEpBZ,OAAOa,SAURzC,EAAsByB,GAhBNS,IAAkBhE,OAAS,IASvCuD,EAAkBa,SAAW9E,GAAGkF,OAAOhD,EAAK4C,UAC5Cb,EAAkBc,UAAY/E,GAAGkF,OAAOhD,EAAK6C,WAC7Cd,EAAkBY,UAAY7E,GAAGkF,OAAOhD,EAAK2C,WAE7CrC,EAAsByB,WASrC,CACD,IAAIkB,EAAe,CACfjB,QAASlC,EAAKT,MACdgB,QAASF,EACT8B,WAAYC,OAAOC,SAASC,MAGhCvB,EAAE,+BAA+BM,GAAG,QAAS,sBACzC,SAAUC,GACNA,EAAMmB,2BACNjC,EAAsB2C,MAKlC,IAAIA,EAAe,CACfjB,QAASlC,EAAKT,MACdgB,QAASF,EACT8B,WAAYC,OAAOC,SAASC,MAGhCvB,EAAE,+BAA+BM,GAAG,QAAS,sBACzC,SAAUC,GACNA,EAAMmB,2BACNjC,EAAsB2C,UAEjCtF,IAAA,6BAC4DG,GAAG+B,gBAAgB,KAAGlC,IAAA,mBAChCG,GAAG+B,gBAAgB,KAAGlC,IAAA,0BACjBG,GAAGC,WAAW,OAAKJ,IAAA,iBAC5BG,GAAGC,aAC7CmF,OAAO,CAAEC,UAAU,EAAMC,OAAO,EAAMC,UAAW,OAAM1F,IAAA,gBACdG,GAAGC,aAC5CmF,OAAO,CAAEC,UAAU,EAAME,UAAW,OAAM1F,IAAA,iBACAG,GAAGC,aAC7CmF,OAAO,CAAEI,SAAS,EAAMD,UAAW,MAAK1F,IAAA,6BAAAA,IAAA,sBAAAA,IAAA,0BAAAA,IAAA,4BAIhB,SAACmC,EAAuByD,EAAqBxD,GACtE,IAAIyD,EAAQ3C,EAAE,+BAA+B4C,KAAK,gBAAgBC,QAC9DC,EAAU9C,EAAE,wBAEZ+C,EAAU,wBACV5D,EAAOD,EAOX,OALAC,EAAKE,aAAa,KAClBF,EAAKK,QAAQ,MAEbW,QAAQC,MAAM,6BAA8B,CAAEnB,OAAMyD,cAAaxD,YAE1D,IAAI8D,SAAc,SAACC,EAASC,GAE/B,OAAQR,GACJ,IAAK,4BACDvD,EAAKE,aAAa,KAClB0D,EAzMe,2BA0Mf,MACJ,IAAK,gCACD5D,EAAKE,aAAa,KAClB0D,EA9MsB,wDA+MtB,MACJ,IAAK,iBACD5D,EAAKE,aAAa,KAClB0D,EAAU,iBACV,MACJ,IAAK,oBACDA,EAAU,yCACV,MACJ,IAAK,iBACDA,EAAU,oCACV,MACJ,QACI,OAAOE,IAMf,GAFAN,EAAMQ,KAAKJ,GAES,8BAAhBL,GAA+D,kCAAhBA,EAAiD,CAEhGvD,EAAKiE,YAAY9E,GAEjBqE,EAAMQ,OACN,IAAIE,EAAkC,MAAxBlE,EAAKE,eAAyBjB,EAAwBC,EAUpE,OANAgF,GADqBtE,EAAYuE,aADb,uCACyCrE,GAK7D6D,EAAQS,KAAKF,GACbrD,EAAE,+BAA+BE,MAAM,QAChC+C,IAGP,IAAIO,EAAM,mCACNpE,EAA2B,mBAAhBsD,EAAmCc,EAAMd,EAAcc,EAAM,gBAE5ExD,EAAEyD,QAAQrE,GAAU,SAAUsE,GAC1B,GAAKA,EAAL,CAGA,IAAIC,EAAWD,EAAIE,QAAQC,WAAWC,QAAU,6BAC5CC,EAAwBL,EAAIM,gBAAkB,GAElD7D,QAAQC,MAAM,0BAA2B2D,GAGzC5E,EAAKiE,YAAY,IAEjBW,EAAUpD,SAAQ,SAACC,GACfzB,EAAKiE,YAAYpC,KAAKJ,MAG1BkC,EAAQK,KAAKQ,GAEb3D,EAAE,+BAA+BE,MAAM,QACvC+C,iBAMfgB,EA/PgBlF,EAAWjC,IAAXiC,EAAW,yBAiQG,SAACkC,EAAgBiD,EAA6ChF,GACzF,IAAIC,EAAOD,EACPiF,EAAYD,IAAgBE,WAAW,SAAAC,GAAC,OAAIA,EAAEpD,SAAWA,KAI7D,OAFAd,QAAQC,MAAM,+BAAgC,CAAEa,SAAQiD,gBAAehF,YAEhE,IAAI8D,SAAc,SAAUC,EAASC,GACxC,OAAO,IAAInD,IAAS,CAChBX,SAAU,kCACVM,QAASE,KAAKC,UAAU,CAAEoB,OAAQA,IAClCqD,WAAY,SAAUZ,GAElB1D,EAAEuE,KAAKL,IAAgBC,GAAWK,aAAa,SAACC,EAAGC,GAC/C1E,EAAEuE,KAAKpF,EAAKwF,yBAAyB,SAACC,EAAGC,GACjCH,EAAEI,QAAUD,EAAGC,QACfJ,EAAEK,MAAQF,EAAGG,aACbN,EAAEO,QAAQ,IAAMJ,EAAGG,aAAaE,QAAQ,GAAK,IAAML,EAAGM,YAKlEjB,IAAgBC,GAAWiB,YAAW,GACtClB,EAAcmB,kBAEdpC,KAEJqC,YAAa,SAAUC,GACnBrC,EAAOqC,YAMtBzI,IAlSgBiC,EAAW,yBAoSG,WAG3B,IAFA,IAAIyG,EAAYC,SAASC,OAAOC,MAAM,KAE7BlB,EAAI,EAAGA,EAAIe,EAAU7H,OAAQ8G,IAAK,CACvC,IAAImB,EAAaJ,EAAUf,GAAGkB,MAAM,KAEpC,GAAI,uBAAyBC,EAAW,GAAG9B,OACvC,OAAO+B,mBAAmBD,EAAW,IAG7C,MAAO,MACV9I,IA/SgBiC,EAAW,gBAiTN,SAAC+G,EAAuB7G,GAE1C,IAAI8G,EAAiB,GACjBC,EAAkBF,EAA2CA,EACjE,GAAI7G,EAAKgH,YAAYtI,OAAS,EAqB1B,OAnBAoI,GAAkB,cAClBA,GAAkB,kGAAoG9G,EAAKgC,OAAS,yDAA6DhC,EAAKgC,OAAS,uJAA2J+E,EAAkB,yBAC5XD,GAAkB,gBAClBA,GAAkB,qBAAuB9G,EAAKgC,OAAQ,kJACtDhC,EAAKgH,YAAYtF,SAAQ,SAAUuF,GAC/BH,GACI,uPAEkGG,EAAQC,UAF1G,uFAIiCD,EAAQE,YAJzC,4KAM4LF,EAAQjF,OANpM,sBAMiPiF,EAAQG,WANzP,QAMqRH,EAAQjF,OAN7R,kCAYR8E,GAAkB,YAGzBjJ,IA5UgBiC,EAAW,YA6UV,SAACuH,EAAsBpH,GACrC,IAAIC,EAAOD,EACXC,EAAK7B,WAAWiJ,WAAatJ,GAAGC,WAAW,MAC3CiC,EAAK7B,WAAWN,MAAM,qBACtBsJ,EAAe,mCAAqCA,EAAe,iBACnEnH,EAAK7B,WAAWH,QAAQmJ,GACxBtG,EAAE,eAAeE,MAAM,QACvBF,EAAE,eAAe4C,KAAK,gBAAgB4D,OACtCxG,EAAE,eAAe4C,KAAK,qBAAqB4D,OAC3CxG,EAAE,eAAe4C,KAAK,iBAAiB6D,YAAY,YAC/CtI,GAAwB6B,EAAE,eAAeE,MAAM,WACtDpD,IAxVgBiC,EAAW,aAyVT,SAAC2H,EAAcxH,GAC9B,IAAIyH,EAAStF,OAAOsF,OAEhBC,GAD0BC,MAAjBF,EAAOG,QAAsBH,EAAOG,OAChCJ,EAAQK,YAAcL,EAAQM,YAE/C,GADA7G,QAAQ8G,IAAIP,IACO,IAAfE,GACKvF,OAAO6F,aAAaC,QAAQ,oBAMhCT,EAAL,CAGAvG,QAAQC,MAAM,iBAAkB,CAAEsG,UAASxH,YAE3C,IAAIC,EAAOD,EACXC,EAAKwF,sBAAsB,IAC3B,IAyEmB1F,EACXmI,EACAC,EA3EJC,GAAO,EAmGPC,EAAS,IACTC,EAAgB,IAChBxC,GAAe,EAwJfsC,KApLerI,EAqLLyH,EApLNU,EAAYK,YAAaxI,GACzBoI,EAAuBtI,EAAY2I,wBAChC,IAAI1E,SAAQ,SAACC,EAASC,GACzB,OAAO,IAAInD,IAAS,CAChB4H,UAAU,EACVvI,SAAU,yBACVM,QAASE,KAAKC,UAAU,CACpBe,KAAM3D,GAAG6C,KAAKsH,GACdQ,OAAQ,MACRC,aAAcR,IAElB/C,WAAY,SAACwD,GACT7E,EAAQ,CACJ6E,SAAUA,EACVV,UAAWA,EACXnI,KAAMA,KAGdqG,YAAa,SAACC,GACVrC,EAAOqC,UAiKAwC,MAxJvB,SAAuBC,GACnB,GAAKA,EAAL,CAEA,IAAIF,EAAWE,EAAOF,SAClBV,EAAYY,EAAOZ,UACnBnI,EAAO+I,EAAO/I,KAGdgJ,EAAkBH,EAElBhB,EADezF,OAAQsF,OACaG,OAGxCI,aAAagB,QAAQ,iBAAkBD,EAAKE,YAAYtE,YACxDiD,EAAOsB,SAASH,EAAKE,YAAYtE,YAEjC1D,QAAQC,MAAM,qCAAsC6H,GACpDnB,EAAOuB,cAAcJ,GAAMF,MAAK,WAC5BjB,EAAOwB,qBAEXnI,QAAQ8G,IAAI,OAAQhI,GAEpB,IAAIsJ,EAAoBT,EAASU,SAAS7C,MAAM,KAAK,GAAG9B,WAAWC,OAC/D2E,EAAkBX,EAASU,SAAS7C,MAAM,KAAK,GAAG9B,WAAWC,OAC7D4E,EAAoC,YAAdH,EACtBI,EAAkC,UAAdJ,EAEpBK,IAAsBH,EAAQI,QAAQ,kBAAoB,GAiB9D,GAhBAtB,EAAStI,EAAK6J,OACdtB,EAAgBvI,EAAK8J,mBACNlC,IAAXU,GAAyCV,MAAjBW,GAExBxH,EAAEgJ,KAAK,CACHxF,IAAK,yCAA2CvE,EAAKgC,OACrDgI,OAAO,EACPC,QAAS,SAAUxF,GACf6D,EAAS7D,EAAIiC,MAAM,KAAK,GACxB6B,EAAgB9D,EAAIiC,MAAM,KAAK,MAK3CX,EAAeyD,EAAQI,QAAQ,iBAAmB,EAClD1I,QAAQ8G,IAAIM,EAAS,IAAMC,EAAgB,IAAMoB,EAAa,IAAM5D,EAAe,KAAO8C,EAASU,YAC/FV,EAASU,SAASK,QAAQ,sBAAwB,GAItD,OAAO,IAAI7F,SAAQ,SAACC,GAChB,GAAI0F,EAGA,GAFAzB,aAAagB,QAAQ,iBAAkBJ,EAASK,YAAYtE,YAC5DiD,EAAOsB,SAASN,EAASK,YAAYtE,YACrB,kBAAZ4E,EACAtJ,EAAKgK,oBAAoBzC,EAAS+B,EAASvJ,GAG3CJ,EAA2B,IAD3BD,EAAiB,IAEFmC,KAAK0F,OAEnB,CACDvH,EAAK7B,WAAWN,MAAM,eAEtB,IAAIsJ,EAAe,0EACnBA,GAAgB,yCAChBA,GAAgB,2FAChBA,GAAgB,wFAChBA,GAAgB,0DAChBA,GAAgB,mDAChBA,GAAgB,6BAA+Bc,EAAUgC,YAAYvF,WAAWC,OAAS,OACzF3E,EAAK7B,WAAWH,QAAQmJ,GACxBtG,EAAE,eAAeE,MAAM,aAG1B,GAAIwI,EAAY,CACjBxB,aAAagB,QAAQ,iBAAkBJ,EAASK,YAAYtE,YAC5DiD,EAAOsB,SAASN,EAASK,YAAYtE,YACrCZ,EAAQ6E,GACR3H,QAAQ8G,IAAI,uCACZ,IAAIL,EAAsCC,MAAxB5H,EAAKoK,gBAAgC,EAClDpK,EAAKoK,gBAAkB,EAAKpK,EAAKoK,gBAAkBpK,EAAK+H,WAC7D7G,QAAQ8G,IAAI,cAAgBL,GAC5B,IAAI0C,EAAwB,GAAd1C,EAAoB,aAAiBA,EAAa,aAChE0C,GAAU,MAAQrK,EAAKsK,YAAc,OAChCX,GACD5I,EAAEyD,QAAQ,qCAAuCxE,EAAKgC,QACjDuI,MAAK,SAACxB,GACEA,IAEyC,UAApCA,EAAOnE,WAAW8B,MAAM,KAAK,IACX,GAAhBX,GACR7F,EAAKwF,sBAAsBqD,OAGlCD,MAAK,WAEF,IAAIpF,EAAQ,sBAAwB1D,EAAKgC,OACpB,KAAjBuG,IACArI,EAAKsK,cAAgB,GACP,KAAVlC,GAAepI,EAAKsK,cAAczI,KAAK,CAAEC,OAAQhC,EAAKgC,UAE9D,IAAIf,EAAQF,EAAE,0BACd,GAAc,KAAVuH,GAAkC,KAAjBC,EAIjB,OAHA8B,GAAU,6GAEVI,EADAJ,GAAU,iIACY3G,GAcR,KAAV4E,GAAmC,KAAjBC,GAAyC,KAAjBA,EAKtB,GAAhBxC,GAKA9E,EAAM0C,KAAK,gBAAgBW,KAAK+F,EAAS,8CACzCpJ,EAAM0C,KAAK,kBAAkB+G,OAC7BzJ,EAAM0C,KAAK,YAAY+G,OACvBzJ,EAAM0C,KAAK,YAAY4D,OAInCxG,EAAE,0BAA0BE,MAAM,SAXtBwJ,EAAcJ,EAAS,6CAA8C3G,GALzE+G,EAAcJ,EAAS,0EAA2E3G,UAsB3HoF,MAAK,SAAC6B,GACDlB,GAAcE,GAlP1B,SAAyB3J,GAMrB,IALuB,WACnB,GAAIoC,OAAO6F,aAAaC,QAAQ,sBAC5B,OAAO,EAGX0C,GAAJ,CAIA1J,QAAQ8G,IAAI,kBAAmBjC,GAE/B,IACIe,EAAiBhH,EAAYuE,aADb,wIACyCrE,GAE7DE,EAAK7B,WAAWiJ,WAAatJ,GAAGC,WAAW,MAC3C,IAAI4M,EAAO,sBAAwB7K,EAAKgC,OACpC2F,EAAa3H,EAAKoK,gBAElB/C,GAD0B,GAAdM,QAAkCC,IAAfD,EAA6B,aAAiBA,EAAa,cAChE,MAAQ3H,EAAKsK,YAAc,OAOzD,GALIjD,GADAtB,EACgB,4BAEW,KAAVuC,EAAmC,KAAjBC,EAAuB,yDAA2D,2BACvF,4BAEf,IAAfZ,IACAkD,EAAO,0CACPxD,EAAerH,EAAKgC,OAAS,6CAC6B,KAAtDjB,EAAE,gBAAkBf,EAAKgC,QAAQ8I,KAAK,cAH9C,CAQA,GAAI9K,EAAKgH,YAAYtI,OAAS,EAU1B2I,EARqB,8EAEOA,EAFP,oCAKOP,EAMhC2D,EAAcpD,EAAcwD,KAoMpBE,CAAgBtD,GAEpBI,EAAOuB,cAAcuB,GACrBzJ,QAAQC,MAAM,6BAA8BwJ,EAAQK,WACpDnD,EAAOwB,qBAtGPoB,EAAczK,EAAKgC,OAAS,6CAA8C,+CA4G9EqG,GAAO,GA3MX,SAASoC,EAAcpD,EAAcwD,GACjC3K,EAAK7B,WAAWN,MAAM8M,GACtBxD,GAAgB,6EAChBnH,EAAK7B,WAAWH,QAAQmJ,GACxBtG,EAAE,eAAeE,MAAM,QACvBf,EAAK7B,WAAWF,eAAe,eAC/B4C,EAAE,gBAAgBM,GAAG,SAAS,WAE1B,OADAN,EAAE,eAAeE,MAAM,QAChBmB,OAAOC,SAASC,KAAO,mBAElCpC,EAAK7B,WAAWD,iBAAiB,mBACjC2C,EAAE,qBAAqBkK,OAAM,WACzB7I,OAAO6F,aAAagB,QAAQ,qBAAsB,QAClDlI,EAAE,eAAeE,MAAM,WAE3BF,EAAE,eAAe4C,KAAK,gBAAgB+G,OACtC3J,EAAE,eAAe4C,KAAK,qBAAqB+G,OAC3C3J,EAAE,eAAe4C,KAAK,iBAAiBuH,SAAS,YAC5ChM,GAAwB6B,EAAE,eAAeE,MAAM,YA4L1DpD,IA9mBgBiC,EAAW,oBAgnBF,SAACqL,GACvB,IAAIjL,EAAOiL,EACPC,EAAQ,GACRC,EAAmB,GAUvB,GATInL,EAAKuB,YACLV,EAAEuE,KAAKpF,EAAKuB,cAAc,SAAU6J,EAAO3J,GACnCA,EAAKC,gBAAkBD,EAAKC,YAAYC,gBAG5CF,EAAKmG,WAAanG,EAAKC,cACvBV,QAAQ8G,IAAI,qBAAuBrG,GACnCyJ,EAAMrJ,KAAKJ,OAEfyJ,EAAM1M,OAAS,EAIf,OAHAwB,EAAK7B,WAAWN,MAAM,4BACtBmC,EAAK7B,WAAWH,QAAQ,mHACxB6C,EAAE,eAAeE,MAAM,QAI3B,IAAIsK,EAAa,GACjBH,EAAM1J,SAAQ,SAAUC,GAChBA,EAAKC,cAAgBD,EAAKC,YAAYC,gBACtCF,EAAKG,MAAQH,EAAKC,cAAgBD,EAAKC,YAAYC,cACnD0J,EAAWxJ,KAAKJ,OAIxB,IAAI6J,EAAe,GACnBJ,EAAM1J,SAAQ,SAAUC,GAChBA,EAAKC,cAAgBD,EAAKC,YAAYC,gBACtCF,EAAK8J,QAAU9J,EAAKC,YAAYC,cAAgBF,EAAKC,cACrD4J,EAAazJ,KAAKJ,OAM1B,IAAI+J,EAAgB,SAACC,GAEjB,IAAIhK,EAAOiK,OAAOC,OAAO,GAAIF,GACzBG,EAAc,GAGdA,EAD2B,mBAAnB5L,EAAK6L,SACC7L,EAAK6L,WAGL7L,EAAK8L,eAAejN,OAAOmB,EAAK+L,qBAG7CN,EAAIpG,YACLoG,EAAMG,EAAYnI,MAAK,SAAUhC,GAC7B,OAAOA,EAAKK,SAAW2J,EAAI3J,WAInC,IAAIkK,EAAcP,EAAIpG,YAAY5B,MAAK,SAAUhC,GAC7C,OAAOA,EAAKkE,QAAU8F,EAAIQ,mBAG1Bb,EAAQQ,EAAY3G,WAAU,SAACxD,GAC/B,OAAOA,EAAKK,SAAW2J,EAAI3J,UAG/B,MAAO,CACHoK,MAAOT,EAAIjM,MAAQiM,EAAIU,SACvBC,SAAUX,EAAIY,SAAWZ,EAAIrB,YAC7BkC,GAAIb,EAAI3J,OACRyK,KAAMd,EAAIe,QAAUf,EAAIrB,YACxBqC,MAAOT,EAAYpG,MACnB8G,QAASV,EAAYhG,IACrB2G,SAAUlL,EAAKG,OAASH,EAAK8J,SAAWE,EAAI5D,WAC5C+E,SAAUxB,IAIdyB,EAAoBxB,EAAWyB,IAAItB,GACnCuB,EAAuBzB,EAAawB,IAAItB,GAC5CxK,QAAQC,MAAM,0BAA2B,CAAE4L,oBAAmBE,yBA6F9D,SAASC,IAEL,OADAhM,QAAQ2J,KAAK,yCACN,IAAI9G,SAAQ,SAAUC,EAASC,GAClC,IAAIkJ,EAAmB,GAMvB,GAJApM,EAAEuE,KAAKpF,EAAKsK,eAAe,SAAUc,EAAO3J,GA8HpD,IAAyBK,EA7HbmL,EAAiBpL,MA6HJC,EA7HyBL,EAAKK,OA8H5C,IAAI+B,SAAQ,SAAUC,EAASC,GAClClD,EAAEyD,QAAQ,qCAAuCxC,GAAQ,SAAU+G,GAC/D,OAAKA,EAEmC,UAApCA,EAAOnE,WAAW8B,MAAM,KAAK,GACtB1C,EAAQ+E,QADnB,EADW9E,EAAO,0BA9HlBkJ,EAAiBzO,OAAS,EAK1B,OAJAwC,QAAQ2J,KAAK,gCACb5G,EAAO,sCACa,EAKxBF,QAAQqJ,IAAID,GACPrE,MAAK,SAAUuE,IACQ,EACpBrJ,EAAQqJ,SAqDxB,IAAIC,EAAiB,GACjBC,EAAoB,GACpBC,EAAgB,GAChBC,GAAgB,EAChBC,EAAqB,GACrBC,EAA4B,GAC5BC,EAAuB,GA4C3B,SAASC,IACL,OAAO,IAAI9J,SAAQ,SAAUC,EAASC,GAClC,OAAOlD,EAAEyD,QAAQ,kDAAkD,SAAUqE,GACzE7E,EAAQ6E,UAzNpB,SAAuBiF,GACnB,IACIjG,EADezF,OAAQsF,OACAG,OAC3B3G,QAAQ2J,KAAK,oCAYb,IAAIzC,EAAuBtI,EAAY2I,wBAEnCzI,EAAO,CAAEoL,MADC0C,EAAWd,KAXzB,SAAmBrL,GACf,MAAO,CACHwI,YAAa4D,SAASlG,EAAOsB,YAC7BnH,OAAQL,EAAKK,OACbkE,IAAKvE,EAAKuE,IACV4B,WAAYnG,EAAKC,cACjBoM,YAAarM,EAAKkE,UAMG+C,aAAcR,GAC3C,OAAO,IAAIrE,SAAQ,SAAUC,EAASC,GAClC,OAAO,IAAInD,IAAS,CAChB4H,UAAU,EACVvI,SAAU,6BACVM,QAASE,KAAKC,UAAUZ,GACxBqF,WAAY,SAAUwD,GACdkE,EAAkBrO,OAAS,GAC3B0D,OAAO6L,UAAUlM,MAAK,IAAImM,KAAwBC,UAAUpB,IAC5DE,EAAqBvO,OAAS,GAC9B0D,OAAO6L,UAAUlM,MAAK,IAAImM,KAAwBE,eAAenB,IACrEjJ,EAAQ6E,IAEZxC,YAAa,SAAUC,GACnBrC,EAAOqC,UA6MvB+H,CAAcjD,GAETtC,MAAK,SAAUuE,GAEZ,IAAIrE,EAAwBqE,EAASiB,KAEjCzG,EADezF,OAAQsF,OACaG,OAWxC,GATAI,aAAagB,QAAQ,iBAAwBoE,EAASiB,KAAKpF,YAAYtE,YACvEiD,EAAOsB,SAAekE,EAASiB,KAAKpF,YAAYtE,YAChD1D,QAAQC,MAAM,qCAAsC6H,GACpDnB,EAAOuB,cAAcJ,GAAMF,MAAK,WAC5BjB,EAAOwB,qBA5EnB,SAA0BgE,GAEtBC,EAAiB,GACjBC,EAAoB,GACpBC,EAAgB,GAChBE,EAAqB,GACrBC,EAA4B,GACxBC,EAAuBP,EAAQkB,SAED,oBAA9BlB,EAAQiB,KAAKE,aACbf,GAAgB,EAEhBJ,EAAQkB,SAAS7M,SAAQ,SAAUC,EAAM8M,GAChB,0BAAjB9M,EAAKgD,UACLhD,EAAKgD,QAAU,yBACf2I,EAAevL,KAAKJ,IAEH,6BAAjBA,EAAKgD,UACLhD,EAAKgD,QAAU,+BACf4I,EAAkBxL,KAAKJ,IAEN,0BAAjBA,EAAKgD,UACLhD,EAAKgD,QAAU,8BACf6I,EAAczL,KAAKJ,IAEF,qCAAjBA,EAAKgD,UACLhD,EAAKgD,QAAU,4BACf+I,EAAmB3L,KAAKJ,IAGP,yCAAjBA,EAAKgD,UACLhD,EAAKgD,QAAU,gCACfgJ,EAA0B5L,KAAKJ,OAgDvC+M,CAAiBrB,GACZI,EAcE,CACHvN,EAAK7B,WAAWN,MAAM,eACtB,IAAIsJ,EAAe,0EACnBA,GAAgB,yCAChBA,GAAgB,2FAChBA,GAAgB,wFAChBA,GAAgB,0DAChBA,GAAgB,mDAChBA,GAAgB,6BAA+BQ,EAAOsB,WAAa,OACnEjJ,EAAK7B,WAAWH,QAAQmJ,GACxBtG,EAAE,eAAeE,MAAM,aAhPnC,SAAwBoM,GAGpB,OAFAnN,EAAKsK,cAAgB,GAEd,IAAIzG,SAAQ,SAAUC,EAASC,GAE7BoJ,GACDpJ,EAAO,0BAEX,IAAIgG,EAAU,EACV0E,EAAO,EACPC,EAAe,GACfC,EAAY,GAEhBxB,EAAQkB,SAAS7M,SAAQ,SAAUqH,EAAQuC,GACK,kBAAxCvC,EAAOpE,QAAQ+B,MAAM,KAAK,GAAG7B,QAAsE,8BAAxCkE,EAAOpE,QAAQ+B,MAAM,KAAK,GAAG7B,QACxFwG,EAAiBtJ,KAAKgH,GAEkB,UAAxCA,EAAOpE,QAAQ+B,MAAM,KAAK,GAAG7B,QAC7BoF,GAAW,EACX2E,EAAa7M,KAAKgH,KAElB4F,GAAQ,EACRE,EAAU9M,KAAKgH,OAKvB7I,EAAKsK,cAAgBa,EAAiByD,QAAO,SAAUC,EAAGC,GAWtD,OAVA,SAAyBD,EAAGC,GACxB,IAAK,IAAIxJ,EAAI,EAAGA,EAAIuJ,EAAErQ,OAAQ8G,IAC1B,GAAIuJ,EAAEvJ,GAAGxD,QAAUgN,EAAEhN,OACjB,OAAOwD,EAGf,OAAQ,EAGRyJ,CAAgBF,EAAGC,GAAK,GAAGD,EAAEhN,KAAKiN,GAC/BD,IACR,IAGH,IAAIlL,EAAUoG,GAAWA,EAAU,EAAI,UAAY,UAAY,+BAC3D0E,EAAO,IACP9K,GAAW8K,GAAQA,EAAO,EAAI,UAAY,UAAY,yCAK1D3K,EAFgB,CAAEH,QAASA,EAASgL,UAAWA,EAAWD,aAAcA,QA0KpEM,CAAe7B,GACVvE,MAAM,SAAC9E,GACJ9C,QAAQC,MAAM,yBAA0B6C,EAAQH,SAC5CG,EAAQ4K,aAAalQ,OAAS,GAC9BwC,QAAQC,MAAM,sBAAuB6C,EAAQ4K,cAE7C5K,EAAQ6K,UAAUnQ,OAAS,GAC3BwC,QAAQC,MAAM,oBAAqB6C,EAAQ6K,cAEhD,OACI,SAAU5K,GACblD,EAAE,mBAAmBwG,aAkBpCuB,MAAK,WACiB1G,OAAQsF,OACAG,OAD3B,IAEIsH,EAAQ,GACZvP,EAAiB,GACjBC,EAA2B,GAE3B,IAAIuP,GAAe,EACfC,GAA4B,EAC5B/B,EAAe5O,OAAS,GACxB4O,EAAe5L,SAAQ,SAACC,EAAM8M,GAC1BU,EAAMpN,KAAKJ,MAGf6L,EAAc9O,OAAS,GACvB8O,EAAc9L,SAAQ,SAACC,EAAM8M,GACzBU,EAAMpN,KAAKJ,MAGf4L,EAAkB7O,OAAS,GAC3B6O,EAAkB7L,SAAQ,SAACC,EAAM8M,GAC7BU,EAAMpN,KAAKJ,MAGf+L,EAAmBhP,OAAS,GAC5BgP,EAAmBhM,SAAQ,SAACC,EAAM8M,GAC9BU,EAAMpN,KAAKJ,GACXyN,GAAe,EACflP,EAAKE,aAAa,KAClBR,EAAemC,KAAKJ,MAGxBgM,EAA0BjP,OAAS,GACnCiP,EAA0BjM,SAAQ,SAACC,EAAM8M,GACrCU,EAAMpN,KAAKJ,GACXyN,GAAe,EACfC,GAA4B,EAC5BnP,EAAKE,aAAa,KAClBP,EAAyBkC,KAAKJ,MAKlCwN,EAAMzQ,OAAS,IACV0Q,EAoBIA,GACLvB,IAAoB/E,MAAK,SAACuE,GAEtBnN,EAAKiE,YAAY9E,GACjBa,EAAKoP,iBAAiBH,GACtBjP,EAAKoP,iBAAiBlJ,kBAEtB,IAAIvC,EAAUwL,EAA4BjQ,EAA+BD,EACrEuE,EAAQ2L,EAnjCE,wDACP,2BAmjCPtO,EAAE,+BAA+B4C,KAAK,gBAAgBC,QAAQM,KAAKR,GACnE3C,EAAE,wBAAwBuD,KAAKT,GAC/B9C,EAAE,+BAA+BE,MAAM,WACzC,OAAO,SAACqF,GACNvF,EAAE,mBAAmBwG,OACrBrG,QAAQqO,MAAM,4BAA6BjJ,MAjC/CuH,IAAoB/E,MAAK,SAACuE,GAEtBnN,EAAKiE,YAAkBkJ,EAAStI,gBAChC7E,EAAKoP,iBAAiBH,GACtBjP,EAAKoP,iBAAiBlJ,kBAEtB,IAAIvC,EAAUsL,EAAMzQ,OAAS,EAAI,wKAE7B,0JAEAgF,EAAQyL,EAAMzQ,OAAS,EAAI,qCAAuC,oCACtEqC,EAAE,+BAA+B4C,KAAK,gBAAgBC,QAAQM,KAAKR,GACnE3C,EAAE,wBAAwBmD,KAAKL,GAC/B9C,EAAE,+BAA+BE,MAAM,WACzC,OAAO,SAACqF,GACNvF,EAAE,mBAAmBwG,OACrBrG,QAAQqO,MAAM,4BAA6BjJ,UAuB1DwC,MAAK,WACFoE,IACKpE,MAAK,SAAUuE,IA7P5B,SAA6BA,GACzB,GAAIA,EAAS,CACTtM,EAAE,mBAAmBwG,OACrBrH,EAAKwF,sBAAsB,IAC3B,IAAI8J,EAAwB,EAC5BnC,EAAQ3L,SAAQ,SAAUqH,EAAQuC,GAE9BD,EAAiB3J,SAAQ,SAAUC,EAAM2J,GACrCvC,EAAOrH,SAAQ,SAAU+N,EAAKjK,GACtBiK,EAAIzN,SAAWL,EAAKK,QAAUyN,EAAI5J,QAAUlE,EAAKqM,aACjDjN,EAAEgJ,KAAK,CACHxF,IAAK,yCAA2C5C,EAAKK,OACrDgI,OAAO,EACPC,QAAS,SAAUxF,GACH,QAARA,IACAvE,EAAKwF,sBAAsB3D,KAAK0N,GAChCD,iBAQ5B,IAAIvO,EAAQF,EAAE,kCACgB,IAA1ByO,GACAvO,EAAMA,MAAM,SACQ,IAGU,IAA1BuO,EACAvO,EAAM0C,KAAK,aAAaW,KAAK,aAG7BrD,EAAM0C,KAAK,aAAaW,KAAK,eAEjCrD,EAAM0C,KAAK,eAAe+G,OAC1BzJ,EAAM0C,KAAK,qBAAqB4D,OAChCtG,EAAM0C,KAAK,iBAAiB+G,OAC5BzJ,EAAMA,MAAM,QACZF,EAAE,eAAeE,MAAM,SACH,IAqNhByO,CAAoBrC,MACtB,OACK,SAAUpJ,GACblD,EAAE,mBAAmBwG,aAGhCuB,MAAK,WACF,SAAS2B,EAAcpD,EAAcwD,GACjC3K,EAAK7B,WAAWN,MAAM8M,GACtBxD,GAAgB,6EAChBnH,EAAK7B,WAAWH,QAAQmJ,GACxBtG,EAAE,eAAeE,MAAM,QACvBf,EAAK7B,WAAWF,eAAe,eAC/B4C,EAAE,gBAAgBM,GAAG,SAAS,WAE1B,OADAN,EAAE,eAAeE,MAAM,QAChBmB,OAAOC,SAASC,KAAO,mBAElCpC,EAAK7B,WAAWD,iBAAiB,mBACjC2C,EAAE,qBAAqBkK,OAAM,WACzB7I,OAAO6F,aAAagB,QAAQ,qBAAsB,QAClDlI,EAAE,eAAeE,MAAM,WAE3BF,EAAE,eAAe4C,KAAK,gBAAgB+G,OACtC3J,EAAE,eAAe4C,KAAK,qBAAqB+G,OAC3C3J,EAAE,eAAe4C,KAAK,iBAAiBuH,SAAS,YAOhD,IAFA,IACIyE,EAAY,GAAGC,EAAA,SAAAxK,GAEf,IAAIqG,EAAUL,EAAMhG,GAAGqG,QACnB3J,EAAQsJ,EAAMhG,GAAGtD,MACrBZ,QAAQ8G,IAAI,WAAayD,EAAU,YAAc3J,GACjD,IAAI+N,OAAwBjI,IAAZ6D,GAAoC,GAAXA,EAA2B,IAAV3J,EAAc,SAAWA,EAAQ,QAAU,SAAWA,EAAQ,SACrG,IAAZ2J,EAAgB,WAAaA,EAAU,QAAU,WAAaA,EAAU,SAC/EkE,GAAa,MAAQvE,EAAMhG,GAAGpD,OAAS,SAAW6N,EAAW,OAASzE,EAAMhG,GAAGkF,YAC/E,IAAIwF,EAAQ,GAWR,GAVoB,MAApB1E,EAAMhG,GAAGyE,QAA8C,MAA3BuB,EAAM,GAAGtB,eAAoD,MAA3BsB,EAAM,GAAGtB,gBACvEgG,EAAQ,kCAEY,MAApB1E,EAAMhG,GAAGyE,QAA6C,MAA3BuB,EAAM,GAAGtB,gBACpCgG,EAAQ,KAEZH,GAAaG,EAAQ,KAAkC,IAA3B1E,EAAMhG,GAAGxD,cAAsB,0CAA4C,IAAM,OAC7Gb,EAAE,mBAAqBqK,EAAMhG,GAAGpD,QAAQ8I,KAAK,YAAaM,EAAMhG,GAAGxD,eACnEwJ,EAAMhG,GAAGqG,QAAU,EAAGL,EAAMhG,GAAGtD,MAAQ,EAEtB8F,MAAT9F,GAAsBA,EAAQ,EAClC,CACI,IAAIwJ,EAAQsC,EAAqBzI,WAAU,SAAA4K,GAAC,OAAIA,EAAE/N,SAAWoJ,EAAMhG,GAAGpD,UACtE,GAAIsJ,GAAS,GAELsC,EAAqBtC,IACjBsC,EAAqBtC,GAAOtE,YAAYtI,OAAS,EAAG,CACpD,IAAIoI,EAAiBhH,EAAYuE,aA3BrC,oIA2BiEuJ,EAAqBtC,IAClFqE,GAAa7I,KA1B5B1B,EAAI,EAAGA,EAAIgG,EAAM1M,OAAQ0G,IAAGwK,EAAAxK,GAiCrC,GAAoB,GAAhBgG,EAAM1M,OAAa,CACnB,GAAIiR,EAAU/F,QAAQ,iBAAmB,EAGrC,YAFAa,EAAcW,EAAM,GAAGpJ,OAAS,6CAC5B,2CAGR,IAAIgO,EAAa,IACM,KAAnB5E,EAAM,GAAGvB,QAA6C,MAA3BuB,EAAM,GAAGtB,eAAoD,MAA3BsB,EAAM,GAAGtB,gBACtEkG,EAAa,kCAEM,KAAnB5E,EAAM,GAAGvB,QAA4C,MAA3BuB,EAAM,GAAGtB,gBACnCkG,EAAa,KAEjBvF,EAAcW,EAAM,GAAGxJ,eAA6C,IAA3BwJ,EAAM,GAAGxJ,cAAuB,YAAc,cAAgB,MAAQwJ,EAAM,GAAGd,YAClH,gDAAkD0F,EAAY,sBAAwB5E,EAAM,GAAGpJ,aAGrGyI,EAAckF,EAAWvE,EAAM1M,OAAS,sCAQ3Db,IA3oCgBiC,EAAW,kBA6oCH,SAACmQ,GAEtB,IAAI/P,EAAO+P,EAEXlP,EAAE,2BAA2BM,GAAG,SAAS,WAErC,IAAI6O,EAAiBnP,EAAE,kBAAkBoP,MAAMvL,WAAWC,OAG1D,GAA8B,IAA1BqL,EAAexR,OAAnB,CAKAwB,EAAKkQ,cAAcF,EAAgBD,GAEnC,IAAI9P,EAAW,iCAEfY,EAAEyF,UAAU6J,aAAY,SAAC/O,EAAOgP,EAAKC,GAC7BA,EAAQhM,MAAQpE,IAChBY,EAAE,iBAAiByP,QACnBzP,EAAE,0BAA0BE,MAAM,QAClCF,EAAE,kBAAkBoP,IAAI,QAIhCpP,EAAEyF,UAAUiK,WAAU,SAACC,EAAKJ,EAAKK,EAAKC,GAC9BD,EAAIpM,MAAQpE,IACZY,EAAE,kBAAkBoP,IAAI,IACxBpP,EAAE,iBAAiBmD,KAAK0M,YAnB5B7P,EAAE,iBAAiBmD,KAAK,iCAwBhCnD,EAAE,eAAeE,MAAM,QAEvBF,EAAE,+BAA+BM,GAAG,mBAAmB,eAKvDN,EAAE,+BAA+BM,GAAG,iBAAiB,WACjDnC,GAAyB,EAEzB2R,YAAW,WACP9P,EAAE,eAAeE,MAAM,UACxB,QAKPF,EAAE,yBAAyBkK,OAAM,WAE7BlK,EAAE,0BAA0BE,MAAM,QAClCF,EAAE,sBAAsBE,MAAM,WAGlCF,EAAE,2BAA2BkK,OAAM,WAC/B,IAAI6F,EAAe5Q,EAAKsK,cAAc,GAAGxI,OACzC9B,EAAK6Q,sBAAsBD,EAAcb,EAAGe,cAAcF,GAAeb,GACzElP,EAAE,0BAA0BE,MAAM,WAGtCF,EAAE,mCAAmCkK,OAAM,WACvC,GAAI/K,EAAKsK,cAAc9L,OAAS,EAC5BqC,EAAE,kCAAkCE,MAAM,YAD9C,CAKAC,QAAQC,MAAM,2BAA4BjB,EAAKsK,eAE/C,IAAIyG,EAAW,GAEf/Q,EAAKsK,cAAc9I,SAAQ,SAACC,GACxBsP,EAASlP,KAAK7B,EAAK6Q,sBAAsBpP,EAAKK,OAAQ9B,EAAK8Q,cAAcrP,EAAKK,QAAS9B,OAGvF+Q,EAASvS,OAAS,EAClBqC,EAAE,kCAAkCE,MAAM,SAI9CF,EAAE,mBAAmB2J,OACrB3G,QAAQqJ,IAAI6D,GACPnI,MAAK,WACF/H,EAAE,mBAAmBwG,OACrBxG,EAAE,kCAAkCE,MAAM,oB,sHCxwCjD+K,EAAYrO,KAAA,SAAAqO,IAAA,IAAAzN,EAAA,KAAAX,IAAA,KAAAoO,GAAAnO,IAAA,kBAE2BG,GAAGC,WAAW,0BAAwBJ,IAAA,uBAC9D,SAACmC,GAErB,GADAkB,QAAQC,MAAM,mBAAoB,CAAEnB,UAC/BA,EACD,OAAOzB,EAAK2S,WAAW,yBAE3B,GAAmB,iBAARlR,EACPzB,EAAK2S,WAAWlR,OACb,CACH,IAAIA,EAAKmR,iBAiBL,OAAO5S,EAAK2S,WAAW,yBAhBvB,IAAIE,EAAa5K,SAAS6K,eAAe,eACrCrR,EAAKmH,YACLiK,EAAWE,aAAa,MAAOtR,EAAKmH,aAE/BnH,EAAKsK,aACV8G,EAAWE,aAAa,MAAOtR,EAAKsK,aAGpCtK,EAAK0M,OACL0E,EAAWE,aAAa,QAAStR,EAAK0M,QAC/B1M,EAAKsK,aACZ8G,EAAWE,aAAa,QAAStR,EAAKsK,aAE1C/L,EAAK2S,WAAWlR,EAAKmR,sBAMhCtT,IAAA,mBAEmB,SAACmC,GACjB,OAAOhC,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,OAAKzR,GAEkB,MAAnBA,EAAK8H,WACE9H,EAAK8H,WAFL,IAMhBvJ,MACNV,IAAA,sBAEsB,SAACmC,GACpB,OAAOhC,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,OAAKzR,EAEqB,MAAtBA,EAAK8J,cACE9J,EAAK8J,cAEL,GAJA,IAMhBvL,MACNV,IAAA,eAEe,SAACmC,GACb,OAAOhC,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,OAAKzR,EAEc,MAAfA,EAAK6J,OACE7J,EAAK6J,OAEL,GAJA,IAMhBtL,MACNV,IAAA,mBAEmB,SAACmC,GACjB,OAAOhC,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,OAAKzR,EAEkB,MAAnBA,EAAKmG,YACEnG,EAAKmG,WAFL,IAMhB5H,MACNV,IAAA,oBAGoB,SAACmC,GAElB,GAAKA,EAAL,CAGA,IAAI0R,EAAc,GACdC,EAAiB,GACrB,GAAyB,OAArB3R,EAAK4R,YAELF,EADc1R,EAAK4R,YAAYC,QAAQ,KAAM,UACvBA,QAAQ,KAAM,SAExC,GAA4B,OAAxB7R,EAAK8R,eAELH,EADc3R,EAAK8R,eAAeD,QAAQ,KAAM,UACvBA,QAAQ,KAAM,SAE3C,IAAIE,EACA,6GAA+G/R,EAAKgS,gBAAkB,SACtIC,EACA,qKAEEP,EAAc,wIACqG1R,EAAKkS,aAAe,oIACxBlS,EAAKmS,gBAAkB,qCAExIC,EACA,gIAEET,EAAiB,+BAEnBU,EAAc,GAClB,OAAOrU,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,GAAKzR,EAGL,OAAQA,EAAKsS,QACT,IAAK,WACD,MAAO,kGACX,IAAK,QACD,MAAuB,aAAnBtS,EAAKuS,UAGE,mFADPF,EAAcD,GAC2F,UAEtF,cAAnBpS,EAAKuS,YACLF,EAAcJ,GACK,eAAnBjS,EAAKuS,UAGE,wFADPF,EAAcJ,GACgG,SAE3G,oGAAsGI,EAAc,UAC/H,IAAK,OACD,MAAO,4FAA8FN,EAAe,SACxH,IAAK,aACD,MAAO,oHAGpBxT,OACNV,IAAA,aACa,SAACmC,GACX,OAAOhC,GAAGuT,SAAS,CACfC,MAAOjT,EACPkT,KAAM,WACF,GAAKzR,EAEL,OAAIA,EAAKwS,GACE,2CADX,IAGLjU,MACNV,IAAA,wBAEwB,SAACmC,EAAMC,GACvBD,GAASC,IAEdA,EAAQkM,cAAcnM,EAAK6F,OAC3B5F,EAAQ8H,SAAS/H,EAAK4B,eACtB3B,EAAQ8H,SAAS0K,iBAAiBzS,EAAK4B,mBAC1C/D,IAAA,mBAEmB,SAAC6U,EAAO/Q,GACnB+Q,GAAU/Q,GAEfZ,EAAEuE,KAAK3D,EAAK4D,aAAa,SAAC+F,EAAOqH,GAEzBA,EAAI9M,QAAU6M,GACd/Q,EAAKoG,SAAS4K,EAAI/Q,qBAI7B/D,IAAA,kBACkB,SAACmC,EAAWsB,GAC3B,IAAIsR,EAAS7R,EAAEO,EAAMuR,eACjBC,EAAQ/R,EAAE6R,GAAQG,SAASA,SAASpP,KAAK,wBAE7C,GAAiC,KAA7B5C,EAAE+R,GAAOhI,KAAK,YAAoB,CAClC,IAAIkI,EAAOjS,EAAE6R,GAAQ9H,KAAK,MAAO+G,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClEmB,EAAMA,EAAInB,QAAQ,mBAAoB,mBACtCmB,EAAMjS,EAAE,IAAMiS,GAAKlI,KAAK,aAE5B,IACImI,EADAC,EAA+BnS,EAAE,IAAMA,EAAE+R,GAAOhI,KAAK,MAAM+G,QAAQ,mBAAoB,oBAAoB/G,KAAK,aAEpHmI,EAAOjT,EAAK+H,SAAa/H,EAAK+H,SAAY/H,EAAKoK,gBAC/C,IAAI+I,EAAepF,SAAS+E,EAAM3C,MAAMvL,YACpCwO,EAAWrF,SAAS+E,EAAMhI,KAAK,QAC/BuI,EAAWtF,SAAS+E,EAAMhI,KAAK,QAC/BwI,EAAWH,EAiBf,GAhBAjS,QAAQ8G,IAAI,qBAAsB,CAAEhI,OAAMsB,QAAO2R,MAAKE,iBACxB,cAA1BP,EAAO5S,KAAK,UAEZsT,IADAA,GACwBF,EAAYE,EAAWH,EAEhB,cAA1BP,EAAO5S,KAAK,YAEjBsT,IADAA,EACuBD,EAAYC,EAAW,GAElDtT,EAAKoK,gBAAkBkJ,EACnBA,GAAYvF,SAASmF,KACrBlT,EAAKoK,gBAAkBkJ,EACvBtT,EAAK8H,WAAawL,GAEtBL,EAAIK,GAEDvS,EAAE,mBAAmBwS,WAAW7U,QAAU,GAAiB,GAAZ4U,EAAc,CAE9D,IAAIE,EAAOzS,EAAE,kCAAkC+J,KAAK,CAChD,KAAQ,aACR,MAAS,8BAET2I,EAAM1S,EAAE,+CAA+C2S,OAAOF,GAEhEzS,EAAE,qBAAqByP,QAAQkD,OAAOD,GACtC1S,EAAE,gBAAgBwG,OAElBxG,EAAE,sBAAsBmD,KAAK,IAC7BnD,EAAE,4BAA4BwG,OAC9BU,aAAa0L,WAAW,kBAG5BzS,QAAQ8G,IAAI4K,EAAO5S,KAAK,UAAYA,EAAKgC,OAAQ,CAAEhC,OAAMmT,eAAcD,YAAWI,WAAUL,e,gCCxO7F,SAAShU,IAEZ,IAAI2U,EAAiB,IAAI5V,GAAG6V,qBAE5B7V,GAAG8V,gBAAgBC,cAAgB,CAC/B1L,KAAM,SAAU2L,EAASC,EAAeC,EAAa/I,EAAWgJ,GAC5D,IAAIC,EAAYF,EAAYG,IAAI,cAAgB,MAC5CC,EAAUJ,EAAYG,IAAI,YAAc,QACxCE,EAAeL,EAAYG,IAAI,kBAAoB,KACnDG,EAAWzT,EAAEiT,GAMjBQ,EAASC,QAAQ,CACbL,UAAWA,EACXE,QAASA,EACThQ,MAAM,EACNoQ,QAAS,SACTC,SAPJA,0MAUAH,EAASnT,GAAG,uBAAuB,WAC/B,IAAIuT,EAAY7T,EAAE,YAAY,GAE1BwT,EAEAvW,GAAG6W,eAAeN,EAAcpJ,EAAW,CAAEyI,eAAgBA,GAAkBgB,GAG/EA,EAAUE,UAAYN,EAAS1J,KAAK,mBAI5C9M,GAAG+W,MAAMC,gBAAgBC,mBAAmBjB,GAAS,WACjDQ,EAASC,QAAQ,gBApCjC,mC,8HCEaS,EAAcvX,KAAA,SAAAuX,IAAAtX,IAAA,KAAAsX,GAAArX,IAAA,oBACwBG,GAAGC,WAAW,OAAKJ,IAAA,mBACfG,GAAG+B,gBAAgB,KAAGlC,IAAA,kBAEtD,SAAC4J,EAASwI,GAEzB,GAAKxI,EAAL,CAGWwI,EACNkF,aAAa1N,GAsClB1G,EAAE,kBAAkBoP,IAAI,IAGxBjP,QAAQ8G,IAAI,mBAAoB,CAAEP,UAASwI,OAE3C,IAAI5H,GAAO,EAGXtH,EAAEyF,UAAUnF,GAAG,QAAS,uBAAuB,WAG3C,IAAI+T,EAAuBrU,EAAE,yBAAyBoP,MAClDkF,EAAetU,EAAE,iBAAiBoP,MAElC1P,EAAU,CACV6U,gBAAkC,SAAjBD,EAA0B,KAAOA,EAClDrT,OAAQyF,EAAQzF,OAChBoT,qBAAsBA,EACtBG,eAAgB9N,EAAQ8N,gBAGxBlN,IAKAmN,EAAU/U,GACV4H,GAAO,MAIftH,EAAE,2BAA2BkK,OAAM,WAE/B,IAAImK,EAAuBrU,EAAE,yBAAyBoP,MAElDsF,GADOhO,EAAQ6C,YAAc,QAAS,GACf,iBAAmB8K,EAAqBxQ,WAAWC,OAAS,IAEvF9D,EAAE,kBAAkBmD,KAAKuR,GACzB1U,EAAE,sBAAsBE,MAAM,QAE9BF,EAAE,iBAAiByP,QACnBzP,EAAE,0BAA0BE,MAAM,QAElCF,EAAE,yBAAyB2J,OAC3B3J,EAAE,2BAA2BkK,OAAM,WAE/B,IAAIxK,EAAU,CACV6U,gBA/EI,EAgFJtT,OAAQyF,EAAQzF,OAChBoT,qBAAsBA,EAAqBxQ,WAAWC,OACtD0Q,eAAgB9N,EAAQ8N,gBAGxBlN,IACAmN,EAAU/U,GACV4H,GAAO,SAOkD,QAAzCtH,EAAE,8BAA8BoP,MAK5DpP,EAAE,sBAAsBE,MAAM,QAH1BF,EAAE,0BAA0BE,MAAM,QA9FtC,SAASuU,EAAUrN,GAEf,OAAO,IAAIpE,SAAQ,SAACC,EAASC,GACzB,OAAO,IAAInD,IAAS,CAChBX,SAAU,oCACVM,QAASE,KAAKC,UAAU5C,GAAG6C,KAAKsH,IAChC9C,WAAY,SAAUwD,GAClB,GAAKA,EAAL,CAGuC,UAA3BA,EAASnC,MAAM,KAAK,IACCmC,EAASnC,MAAM,KAAK,GAErD3F,EAAE,2BAA2BwG,OAE7BvD,EAAQ6E,KAGZxC,YAAa,SAAUC,GAEnBrC,EAAOqC,SAGhBwC,MAAK,WACJ/H,EAAE,sBAAsBE,MAAM,QAC9BF,EAAE,0BAA0BE,MAAM,eA0E7CpD,IAAA,sBACsB,SAAC6X,EAAkBzF,GACtC,IAAI/P,EAAO+P,EAEX,OAAO,IAAIlM,SAAQ,SAACC,EAASC,GAQzB,OANAlD,EAAE,0BAA0BM,GAAG,mBAAmB,WAE9CN,EAAE,sBAAsBE,MAAM,QAC9BF,EAAE,6BAA6B+J,KAAK,WAAY,eAG7C,IAAIhK,IAAS,CAChBX,SAAU,iCACVM,QAASE,KAAKC,UAAU,CAAEsP,eAAgBwF,IAC1CrQ,WAAY,SAAUwD,GAClB,GAAKA,EAAL,CAGA,IAAIoB,EAAqC,YAA3BpB,EAASnC,MAAM,KAAK,GAE9B8C,EADmC,UAA3BX,EAASnC,MAAM,KAAK,GACVmC,EAAWA,EAASnC,MAAM,KAAK,GAGrD,GAAIuD,EAAS,CAGT,IAAIqL,EAAkBzM,EAASnC,MAAM,KAAK,GAEtCiP,EAAU,CACVL,gBAAiBvH,SAASuH,GAC1BtP,QAAS0P,EAAS9Q,WAAWC,QAiBjC,GAdA3D,QAAQC,MAAM,oBAAqBwU,GAEnCzV,EAAK0V,YAAY7T,KAAK4T,GACtBzV,EAAK0V,YAAYxP,kBACjBrF,EAAE,0BAA0BE,MAAM,QAMdF,EAAE,8BAAgCuU,EAAkB,KAAK5W,OAAS,GAElFqC,EAAE,iBAAiB2S,OAAO,kBAAoB4B,EAAkB,KAAOI,EAAS9Q,WAAWC,OAAS,aAEpG9D,EAAE,8BAA8BrC,OAAS,EAC7C,CACI,IAAImX,EAAwB9U,EAAE,wBAAwBrC,OAAS,EAAI,OAAQ,QAC3EqC,EAAE,8BAA8BoP,IAAI0F,SAIxC3U,QAAQqO,MAAM,2BAA4B/F,GAC1CzI,EAAE,iBAAiBmD,KAAK,sDAG5BF,EAAQ6E,KAGZxC,YAAa,SAAUC,GAEnBrC,EAAOqC,gB,oMC7KrBwP,EAAiBnY,KAMnB,SAAAmY,EAAY9V,GAAWpC,IAAA,KAAAkY,GAAAjY,IAAA,2BAAAA,IAAA,sBAAAA,IAAA,0BAAAA,IAAA,2BAGfoK,aAAaC,QAAQ,kBAFdpK,KAGFqM,YAAclC,aAAaC,QAAQ,kBAAkBtD,WAHnD9G,KAKFqM,YAAc,gBALZrM,KAQNkE,OAAShC,EAAKgC,OARRlE,KASNgK,WAAa9J,GAAG6C,KAAKb,EAAK+H,WAAa/H,EAAK8H,WATtChK,KAUNkQ,YAAchQ,GAAG6C,KAAKb,EAAKmM,gBAAkBnM,EAAKgO,eAIxD,SAASxF,EAAaxI,GACzB,IAAIS,EAAU,IAAIqV,EAAkB9V,GAEpC,OADAkB,QAAQC,MAAM,iBAAkBV,GACzBA,E","file":"chunk-2-category-group~item-group~item-list.44d87454af9a9aae1b85.js","sourcesContent":["export interface IModalConfig {\r\n Title: KnockoutObservable;\r\n Content: KnockoutObservable;\r\n MainButtonText?: KnockoutObservable;\r\n SecondButtonText?: KnockoutObservable;\r\n}\r\n\r\nexport class ModalPopup implements IModalConfig {\r\n [x: string]: any;\r\n Title: KnockoutObservable;\r\n Content: KnockoutObservable;\r\n MainButtonText?: KnockoutObservable;\r\n SecondButtonText?: KnockoutObservable;\r\n\r\n constructor() {\r\n this.Title = ko.observable(null);\r\n this.Content = ko.observable(null);\r\n this.MainButtonText = ko.observable(null);\r\n this.SecondButtonText = ko.observable(null);\r\n }\r\n}\r\n\r\n\r\n// TODO: Extricate code from DataTarget observable + submit to use pure js functions\r\nexport class AlertModal extends ModalPopup {\r\n public DataTarget?: KnockoutObservable = ko.observable(null);\r\n}","import { CartHeaders } from \"../../../Cart/index\";\r\nimport { ICartData } from \"../../../Cart/types/ICartData\";\r\nimport { AlertModal } from \"../../../Components\";\r\nimport { CustomPopover } from \"../../../Components/CustomPopover\";\r\nimport { DataLayerModelFactory } from \"../../../Services/DataLayer/index\";\r\nimport { AjaxPost, IAjaxPostConfig } from \"../../../Services/index\";\r\nimport { IProductRowItem, ProductToAdd } from \"../Models/index\";\r\nimport { IPromoResponseModel } from \"../../../Cart/types/IPromoResponseModel\";\r\n\r\nCustomPopover();\r\nvar turnAllocationDialogOn: boolean = false;\r\nvar GetAdvisoryAllocation = `This product is on order allocation based on your historical 12-month purchases. \r\n The quantity listed as Alloc is the Qty each remaining for you to order this month. \r\n Each month this quantity will be available to order, and your order will be given top priority \r\n IF stock becomes available. If you would like to be placed on our Backorder Priority List to be notified \r\n when additional product is available, please contact Customer Care with the additional quantity you require.`\r\n\r\n\r\nvar GetAdvisoryNoOrderAllocation = `\r\n Inventory on certain items may be temporarily unavailable due to a surge in demand or a disruption to\r\n the supply chain. If you would like to be placed on our Backorder Priority List (BOPL) to be notified \r\n when product is available, please contact Customer Care with the quantity and size(s) you require.`\r\n\r\nvar GetAdvisoryNoOrderAllocationHeading = \"We’re sorry! We are not taking orders for this item.\"\r\nvar GetAdvisoryAllocationHeading = \"Product Allocation Limit\";\r\nvar GetAllocationsNoticeAddressBook = [\r\n {\r\n ContactRecNo: 0,\r\n Email: \"CustomerCare@life-assist.com\",\r\n FirstName: \"Customer\",\r\n LastName: \"Care\",\r\n Name: \"Customer Care\",\r\n Phone: \"800-824-6016\"\r\n }\r\n];\r\n\r\nvar failedItemList = [];\r\nvar failedItemNotTakingOrder = [];\r\n\r\nexport default class AddToCartVM {\r\n public RestrictionItems: KnockoutObservableArray = ko.observableArray([]);\r\n public ApprovalType: KnockoutObservable = ko.observable(null);\r\n public SelectedApprover: KnockoutObservable = ko.observable(null);\r\n public SelectApprover = (data, context) => {\r\n\r\n let self = context;\r\n\r\n let endpoint = \"\"\r\n\r\n if (self.ApprovalType() === \"R\" || self.ApprovalType() === \"Q\" || self.ApprovalType() === \"A\" || self.ApprovalType() === \"N\") {\r\n endpoint = self.ApprovalType() === \"R\" ? \"/ShoppingCart/SendRestrictEmail\" : \"/ShoppingCart/SendQuotaRequestEmail\";\r\n\r\n switch (self.ApprovalType()) {\r\n case \"A\":\r\n case \"N\":\r\n endpoint = \"/ShoppingCart/SendAllocationEmail\"\r\n break;\r\n case \"Q\":\r\n endpoint = \"/ShoppingCart/SendQuotaRequestEmail\"\r\n break;\r\n case \"R\":\r\n endpoint = \"/ShoppingCart/SendRestrictEmail\"\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n\r\n }\r\n\r\n\r\n let comment = self.ApprovalType() === \"R\" ? self.RestrictionComment : self.Comment;\r\n\r\n\r\n function HiglightSelectedAltItem(data)\r\n { \r\n localStorage.setItem('LastSearchTerm', data.ItemID)\r\n window.open(data.ProductUrl);\r\n }\r\n \r\n function SendRequestToApprover(payload) {\r\n if (endpoint != \"\") {\r\n let ajaxPost: IAjaxPostConfig = {\r\n endpoint: endpoint,\r\n payload: JSON.stringify(ko.toJS(payload))\r\n }\r\n\r\n new AjaxPost(ajaxPost);\r\n }\r\n $('#email-approver').collapse('hide');\r\n $(\"#modal-add-item-restriction\").modal('hide');\r\n }\r\n\r\n if (!data)\r\n return;\r\n\r\n console.debug(\"SelectApprover data: \", { data, context });\r\n\r\n self.SelectedApprover(data);\r\n\r\n\r\n if (self.ApprovalType() === \"A\" || self.ApprovalType() === \"N\") {\r\n\r\n $(\"#modal-add-item-restriction\").on('click', '#send-email-button',\r\n function (event) {\r\n\r\n var itemsAddedForAllocationMsg = [];\r\n var itemsAddedForAllocationNotTakingMsg = [];\r\n\r\n if (context.ItemsToAdd) {\r\n context.ItemsToAdd().forEach(function (item) {\r\n if (item.QtySelected() > item.QtySelected.originalValue) {\r\n item.added = item.QtySelected() - item.QtySelected.originalValue;\r\n itemsAddedForAllocationMsg.push(item.ItemID);\r\n }\r\n })\r\n }\r\n\r\n failedItemList.forEach(function (item) {\r\n itemsAddedForAllocationMsg.push(item.ItemID);\r\n })\r\n\r\n failedItemNotTakingOrder.forEach(function (item) {\r\n itemsAddedForAllocationNotTakingMsg.push(item.ItemID);\r\n })\r\n\r\n\r\n let AllocationRequest: any = {\r\n EmailTo: data.Email,\r\n Comment: comment,\r\n ProductURL: window.location.href,\r\n ItemsListOver: itemsAddedForAllocationMsg,\r\n ItemsListNotTaking: itemsAddedForAllocationNotTakingMsg\r\n };\r\n failedItemList = [];\r\n failedItemNotTakingOrder = [];\r\n itemsAddedForAllocationMsg = [];\r\n itemsAddedForAllocationNotTakingMsg = [];\r\n\r\n event.stopImmediatePropagation();\r\n\r\n let validationGroup = ko.validation.group({\r\n CustEmail: self.CustEmail,\r\n CustName: self.CustName,\r\n CustPhone: self.CustPhone\r\n });\r\n\r\n let isValid = () => validationGroup().length > 0 ? false : true;\r\n\r\n // Set values to isModified to trigger validation\r\n self.CustEmail.isModified(true);\r\n self.CustName.isModified(true);\r\n\r\n if (!window.UserMeta) {\r\n if (isValid()) {\r\n // Add extra fields to payload if not logged in\r\n AllocationRequest.CustName = ko.toJSON(self.CustName);\r\n AllocationRequest.CustPhone = ko.toJSON(self.CustPhone);\r\n AllocationRequest.CustEmail = ko.toJSON(self.CustEmail);\r\n\r\n SendRequestToApprover(AllocationRequest);\r\n }\r\n } else { // Ignore validation if logged in, extra fields don't matter\r\n SendRequestToApprover(AllocationRequest);\r\n }\r\n\r\n\r\n });\r\n }\r\n else {\r\n let request: any = {\r\n EmailTo: data.Email,\r\n Comment: comment,\r\n ProductURL: window.location.href\r\n };\r\n\r\n $(\"#modal-add-item-restriction\").on('click', '#send-email-button',\r\n function (event) {\r\n event.stopImmediatePropagation();\r\n SendRequestToApprover(request);\r\n\r\n });\r\n }\r\n\r\n let request: any = {\r\n EmailTo: data.Email,\r\n Comment: comment,\r\n ProductURL: window.location.href\r\n };\r\n\r\n $(\"#modal-add-item-restriction\").on('click', '#send-email-button',\r\n function (event) {\r\n event.stopImmediatePropagation();\r\n SendRequestToApprover(request);\r\n });\r\n }\r\n public ContractPricingLevels: KnockoutObservableArray = ko.observableArray([]);\r\n public AddressBook: KnockoutObservableArray = ko.observableArray([]);\r\n public RestrictionComment: KnockoutObservable = ko.observable(null);\r\n public CustEmail: KnockoutObservable = ko.observable()\r\n .extend({ required: true, email: true, maxLength: 250 });\r\n public CustName: KnockoutObservable = ko.observable()\r\n .extend({ required: true, maxLength: 250 });\r\n public CustPhone: KnockoutObservable = ko.observable()\r\n .extend({ phoneUS: true, maxLength: 30 });\r\n public AddToContract: KnockoutObservable;\r\n public OnSale: KnockoutObservable;\r\n public OnContract: KnockoutObservable;\r\n public ShowRetrictionModal = (data: IProductRowItem, restriction: string, context) => {\r\n let title = $('#modal-add-item-restriction').find('.modal-title').first(),\r\n message = $('#restriction-message');\r\n\r\n let heading = \"Restriction in Effect\";\r\n let self = context;\r\n\r\n self.ApprovalType(\"R\");\r\n self.Comment(null);\r\n\r\n console.debug(\"ShowRetrictionModal data: \", { data, restriction, context });\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n switch (restriction) {\r\n case \"Allocation Limit Reached.\":\r\n self.ApprovalType(\"A\");\r\n heading = GetAdvisoryAllocationHeading;\r\n break;\r\n case \"Allocation Not Taking Orders.\":\r\n self.ApprovalType(\"N\");\r\n heading = GetAdvisoryNoOrderAllocationHeading;\r\n break;\r\n case \"Quota Exceeded\":\r\n self.ApprovalType(\"Q\")\r\n heading = \"Quota Exceeded\";\r\n break;\r\n case \"OnlyContractPrice\":\r\n heading = \"Contract Pricing Restriction in Effect\";\r\n break;\r\n case \"OnlySupplyList\":\r\n heading = \"Supply List Restriction in Effect\";\r\n break;\r\n default:\r\n return resolve();\r\n break;\r\n }\r\n\r\n title.text(heading);\r\n\r\n if (restriction === \"Allocation Limit Reached.\" || restriction === \"Allocation Not Taking Orders.\") {\r\n\r\n self.AddressBook(GetAllocationsNoticeAddressBook)\r\n\r\n title.text()\r\n let msgText = self.ApprovalType() === \"A\" ? GetAdvisoryAllocation : GetAdvisoryNoOrderAllocation\r\n //inject altshtml here\r\n let clickHereText = \"
See available alternatives
\";\r\n let AltItemsString = AddToCartVM.AltItemsHtml(clickHereText, data);\r\n msgText += AltItemsString;\r\n\r\n \r\n\r\n message.html(msgText)\r\n $('#modal-add-item-restriction').modal('show');\r\n return resolve();\r\n }\r\n else {\r\n let url = \"/ShoppingCart/GetRestrictAdmins/\";\r\n let endpoint = restriction !== \"Quota Exceeded\" ? url + restriction : url + \"QuotaExceeded\";\r\n\r\n $.getJSON(endpoint, function (res) {\r\n if (!res)\r\n return;\r\n\r\n let advisory = res.Message.toString().trim() || \"Item restriction in effect\";\r\n let approvers: Array = res.RestrictAdmins || [];\r\n\r\n console.debug(\"Restriction approvers: \", approvers);\r\n\r\n // Clear the address book before filling it up again.\r\n self.AddressBook([]);\r\n\r\n approvers.forEach((item) => {\r\n self.AddressBook.push(item);\r\n })\r\n\r\n message.text(advisory);\r\n\r\n $('#modal-add-item-restriction').modal('show');\r\n resolve();\r\n\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n static AddToContractFunction = (ItemID: string, arrayToUpdate: KnockoutObservableArray, context: any) => {\r\n let self = context;\r\n let itemIndex = arrayToUpdate().findIndex((x => x.ItemID === ItemID));\r\n\r\n console.debug(\"AddToContractFunction data: \", { ItemID, arrayToUpdate, context });\r\n\r\n return new Promise(function (resolve, reject) {\r\n return new AjaxPost({\r\n endpoint: '/ShoppingCart/AddItemToContract',\r\n payload: JSON.stringify({ ItemID: ItemID }),\r\n cbFunction: function (res) {\r\n\r\n $.each(arrayToUpdate()[itemIndex].UoMPrices(), (i, o) => {\r\n $.each(self.ContractPricingLevels(), (j, o1) => {\r\n if (o.UMQty === o1.UMQty) {\r\n o.Price = o1.SpecialPrice;\r\n o.Display(\"$\" + o1.SpecialPrice.toFixed(2) + \" \" + o1.UoM);\r\n }\r\n })\r\n });\r\n\r\n arrayToUpdate()[itemIndex].OnContract(true);\r\n arrayToUpdate.valueHasMutated();\r\n\r\n resolve();\r\n },\r\n errFunction: function (err) {\r\n reject(err);\r\n }\r\n\r\n })\r\n })\r\n\r\n }\r\n\r\n static getSelectedSupplyList = () => {\r\n var cookieArr = document.cookie.split(\";\");\r\n // Loop through the array elements\r\n for (var i = 0; i < cookieArr.length; i++) {\r\n var cookiePair = cookieArr[i].split(\"=\");\r\n\r\n if (\"currentSupplyListID\" == cookiePair[0].trim()) {\r\n return decodeURIComponent(cookiePair[1]);\r\n }\r\n }\r\n return \"\";\r\n }\r\n \r\n static AltItemsHtml = (clickHereText: string, data: any) =>\r\n {\r\n let AltItemsString = \"\";\r\n let BackOrderString = clickHereText = \"\" ? \"View Alternatives\" : clickHereText;\r\n if (data.AltItemList.length > 0) {\r\n //case 'IN STOCK', \"Expiring\", \"Backorder\", \"Allocation\" \r\n AltItemsString += \"
\"\r\n AltItemsString += \"
 \" + BackOrderString + \"
\";\r\n AltItemsString += \"
\"\r\n AltItemsString += \"\";\r\n return AltItemsString;\r\n }\r\n }\r\n static LA_Alert = (alertContent: string, context) => {\r\n let self = context;\r\n self.AlertModal.DataTarget = ko.observable(null);\r\n self.AlertModal.Title(\"Life-Assist Alert\");\r\n alertContent = \"

\" + alertContent + \"

\";\r\n self.AlertModal.Content(alertContent);\r\n $(\"#alertModal\").modal('show');\r\n $(\"#alertModal\").find(\"#main-button\").hide();\r\n $(\"#alertModal\").find(\"#secondary-button\").hide();\r\n $(\"#alertModal\").find(\".modal-dialog\").removeClass(\"modal-lg\");\r\n if (turnAllocationDialogOn) $(\"#alertModal\").modal(\"hide\");\r\n }\r\n static AddToCart = (product: any, context) => {\r\n let cartVM = window.cartVM;\r\n let header = cartVM.header != undefined ? cartVM.header : \"\";\r\n let qtyOrdered = product.QtyOrdered || product.Quantity();\r\n console.log(product);\r\n if (qtyOrdered === 0) {\r\n if (!window.localStorage.getItem(\"CartSessionKey\")) {\r\n return;\r\n }\r\n }\r\n\r\n\r\n if (!product) {\r\n return;\r\n }\r\n console.debug(\"AddToCart data\", { product, context });\r\n\r\n let self = context;\r\n self.ContractPricingLevels([]);\r\n let init = true;\r\n\r\n function modalConfirmAdd(data) {\r\n let dismissPermanent = () => {\r\n if (window.localStorage.getItem(\"SuppressAddConfirm\")) {\r\n return true;\r\n }\r\n }\r\n if (dismissPermanent()) {\r\n return;\r\n }\r\n\r\n console.log(\"SPECIAL PRICE: \", SpecialPrice); \r\n\r\n let clickHereText = \"This item is on an extended backorder.
Click here to view possible alternatives\";\r\n let AltItemsString = AddToCartVM.AltItemsHtml(clickHereText, data);\r\n\r\n self.AlertModal.DataTarget = ko.observable(null);\r\n let info = \"Add to your Cart | \" + data.ItemID;\r\n let qtyOrdered = data.QuantityOrdered;\r\n let qtyAdded = (qtyOrdered == 1 || qtyOrdered === undefined) ? (\"1 unit of \") : (qtyOrdered + \" units of \");\r\n let alertContent = qtyAdded + \"\" + data.Description + \"\";\r\n if (SpecialPrice)\r\n alertContent += \" was added to your cart. \";\r\n else\r\n alertContent += (onSale == \"Y\") ? (addToContract == \"N\" ? \" was added to your cart at Current Sale Price. \" : \" was added to your cart.\")\r\n : (addToContract == \"Y\" ? \" was added to your cart. \"\r\n : \" was added to your cart. \");\r\n if (qtyOrdered === 0) {\r\n info = \"Shopping Cart Item Removal Information.\";\r\n alertContent = data.ItemID + \" has been removed from your shopping cart.\";\r\n if ($(\".qtyContainer\" + data.ItemID).attr(\"old-value\") == \"0\")\r\n return\r\n }\r\n\r\n //if we are going to show alt items format the alt items to the right\r\n if (data.AltItemList.length > 0)\r\n {\r\n let flexBoxContent = \"
\"+\r\n \"
\" +\r\n alertContent +\r\n \"
\"+\r\n \"
\"+\r\n AltItemsString\r\n \"
\"+\r\n \"
\" \r\n alertContent = flexBoxContent\r\n //alertContent += AltItemsString\r\n } \r\n AskReviewCart(alertContent, info);\r\n }\r\n\r\n function AskReviewCart(alertContent, info) {\r\n self.AlertModal.Title(info);\r\n alertContent += \"
Would you like to review your shopping cart?\"; \r\n self.AlertModal.Content(alertContent);\r\n $(\"#alertModal\").modal('show');\r\n self.AlertModal.MainButtonText(\"Review Cart\");\r\n $('#main-button').on('click', function () {\r\n $(\"#alertModal\").modal('hide');\r\n return window.location.href = \"/ShoppingCart\";\r\n })\r\n self.AlertModal.SecondButtonText(\"Never Ask Again\");\r\n $(\"#secondary-button\").click(() => {\r\n window.localStorage.setItem(\"SuppressAddConfirm\", \"true\");\r\n $(\"#alertModal\").modal('hide');\r\n })\r\n $(\"#alertModal\").find(\"#main-button\").show();\r\n $(\"#alertModal\").find(\"#secondary-button\").show();\r\n $(\"#alertModal\").find(\".modal-dialog\").addClass(\"modal-lg\");\r\n if (turnAllocationDialogOn) $(\"#alertModal\").modal(\"hide\");\r\n }\r\n\r\n function addToCart(data) {\r\n let itemToAdd = ProductToAdd(data);\r\n var selectedSupplyListID = AddToCartVM.getSelectedSupplyList()\r\n return new Promise((resolve, reject) => {\r\n return new AjaxPost({\r\n backdrop: true,\r\n endpoint: '/ShoppingCart/EditCart',\r\n payload: JSON.stringify({\r\n item: ko.toJS(itemToAdd),\r\n action: \"add\",\r\n supplyListID: selectedSupplyListID,\r\n }),\r\n cbFunction: (response) => {\r\n resolve({\r\n response: response,\r\n itemToAdd: itemToAdd,\r\n data: data\r\n });\r\n },\r\n errFunction: (err) => {\r\n reject(err);\r\n }\r\n });\r\n });\r\n }\r\n\r\n let onSale = \"N\";\r\n let addToContract = \"N\";\r\n let SpecialPrice = false;\r\n function processResult(result) {\r\n if (!result)\r\n return;\r\n let response = result.response;\r\n let itemToAdd = result.itemToAdd;\r\n let data = result.data;\r\n\r\n // Refresh models\r\n let cart: ICartData = response;\r\n let cartVM = (window).cartVM;\r\n let header: CartHeaders = (cartVM).header\r\n\r\n // Set the cart key\r\n localStorage.setItem(\"CartSessionKey\", cart.CartOrderNo.toString());\r\n header.LocalKey(cart.CartOrderNo.toString());\r\n\r\n console.debug(\"Cart to be passed in as new header\", cart); \r\n header.ParseCartData(cart).then(() => {\r\n header.UpdateRequestID();\r\n });\r\n console.log(\"DATA\", data);\r\n // Flags to work with\r\n let msgHeader: string = response.Messages.split(':')[0].toString().trim(),\r\n msgBody: string = response.Messages.split(':')[1].toString().trim(),\r\n msgSuccess: boolean = msgHeader === 'Success',\r\n msgError: boolean = msgHeader === 'Error',\r\n //isContract: boolean = msgBody != \"AddToContract\" ? true : false;\r\n isContract: boolean = msgBody.indexOf(\"AddToContract\") >= 0 ? false : true;\r\n onSale = data.OnSale;\r\n addToContract = data.AddToContract;\r\n if (onSale === undefined || addToContract == undefined) {\r\n // get the OnSale/AddtoContract\r\n $.ajax({\r\n url: '/ShoppingCart/GetSaleContractItemInfo/' + data.ItemID,\r\n async: false,\r\n success: function (res) {\r\n onSale = res.split(\":\")[0];\r\n addToContract = res.split(\":\")[1];\r\n }\r\n })\r\n }\r\n //console.log(\"DATA:\", data);\r\n SpecialPrice = msgBody.indexOf(\"SPECIALPRICE\") >= 0 ? true : false;\r\n console.log(onSale + \":\" + addToContract + \":\" + isContract + \":\" + SpecialPrice + '\\n' + response.Messages);\r\n if (response.Messages.indexOf(\" has been removed\") >= 0) {\r\n AskReviewCart(data.ItemID + \" has been removed from your shopping cart.\", \"Shopping Cart Item Removal Information.\");\r\n return;\r\n }\r\n return new Promise((resolve) => {\r\n if (msgError) {\r\n localStorage.setItem(\"CartSessionKey\", response.CartOrderNo.toString());\r\n header.LocalKey(response.CartOrderNo.toString());\r\n if (msgBody !== \"QuoteProvided\") {\r\n self.ShowRetrictionModal(product, msgBody, context); \r\n //for single add item push to the failedItemList, we will sort it out in the backend what email to send\r\n failedItemList = [];\r\n failedItemNotTakingOrder = [];\r\n failedItemList.push(product)\r\n }\r\n else {\r\n self.AlertModal.Title(\"Cart Locked\");\r\n\r\n let alertContent = \"We're sorry, but this cart is locked to modifications.\";\r\n alertContent += \"

Please start a new cart or contact \";\r\n alertContent += \"quotes@life-assist.com \"\r\n alertContent += \"or Customer Care at 800-824-6016 \"\r\n alertContent += \"to request additions or modifications to this cart.

\";\r\n alertContent += \"

We'd be happy to assist you!

\";\r\n alertContent += \"

Please reference Cart #\" + itemToAdd.CartOrderID.toString().trim() + \"

\";\r\n self.AlertModal.Content(alertContent);\r\n $(\"#alertModal\").modal('show');\r\n }\r\n }\r\n else if (msgSuccess) {\r\n localStorage.setItem(\"CartSessionKey\", response.CartOrderNo.toString());\r\n header.LocalKey(response.CartOrderNo.toString());\r\n resolve(response);\r\n console.log(\"From Product Page: automatic just 1\");\r\n let qtyOrdered = (data.QuantityOrdered == undefined) ? 1 :\r\n (data.QuantityOrdered > 0) ? data.QuantityOrdered : data.Quantity();\r\n console.log(\"qtyOrdered:\" + qtyOrdered);\r\n let prompt = (qtyOrdered == 1) ? (\"1 unit of \") : (qtyOrdered + \" units of \");\r\n prompt += \"\" + data.Description + \"\";\r\n if (!isContract) {\r\n $.getJSON('/ShoppingCart/GetContractItemInfo/' + data.ItemID)\r\n .done((result) => {\r\n if (!result)\r\n return;\r\n let err = result.toString().split(':')[0] === \"Error\" ? true : false;\r\n if (!err && SpecialPrice == true) {\r\n self.ContractPricingLevels(result);\r\n }\r\n })\r\n .then(function () {\r\n // find the item's OnSale and AddToContract\r\n let title = \"Add to your Cart | \" + data.ItemID; // + \"====> \" + (isContract === true ? \"Y\" : \"N\") + \":\" + onSale + \":\" + addToContract;\r\n if (addToContract == \"Y\") {\r\n self.ContractItems = [];\r\n if (onSale == \"N\") self.ContractItems.push({ ItemID: data.ItemID });\r\n }\r\n let modal = $(\"#modal-add-to-contract\")\r\n if (onSale == \"N\" && addToContract == \"N\") {\r\n prompt += \" has successfully been added to your cart but cannot be added to your Contract Pricing Online.\"\r\n prompt += \"
Please contact our Customer Care team or your Life Assist Account Manager for pricing assistance.
\";\r\n AskReviewCart(prompt, title);\r\n return;\r\n }\r\n /*\r\n else\r\n if (onSale == \"Y\" && addToContract == \"Y\") {\r\n modal.find(\".modal-title\").html(prompt + \" has successfully been added to your cart at sale price .
Sale items cannot be added to contract. \");\r\n modal.find(\".modal-body\").show();\r\n modal.find(\"#AllowContract\").hide()\r\n modal.find(\".footer1\").hide();\r\n modal.find(\".footer2\").hide();\r\n }\r\n */\r\n else\r\n if (onSale == \"Y\" && (addToContract == \"N\" || addToContract == \"Y\")) {\r\n AskReviewCart(prompt + \" has successfully been added to your cart at Current Sale Price.\", title);\r\n return;\r\n }\r\n else { // N and Y\r\n if (SpecialPrice == false) {\r\n AskReviewCart(prompt + \" has successfully been added to your cart.\", title);\r\n return;\r\n }\r\n else {\r\n modal.find(\".modal-title\").html(prompt + \" has successfully been added to your cart.\");\r\n modal.find(\"#AllowContract\").show()\r\n modal.find(\".footer1\").show();\r\n modal.find(\".footer2\").hide();\r\n }\r\n\r\n }\r\n $('#modal-add-to-contract').modal('show');\r\n })\r\n }\r\n\r\n }\r\n\r\n }).then((headers: ICartData) => {\r\n if (msgSuccess && isContract) {\r\n modalConfirmAdd(product);\r\n } \r\n header.ParseCartData(headers);\r\n console.debug(\"Items in cart after update\", headers.CartItems);\r\n header.UpdateRequestID();\r\n });\r\n };\r\n\r\n if (init) {\r\n addToCart(product).then(processResult);\r\n init = false;\r\n }\r\n\r\n };\r\n\r\n static AddChoicesToCart = (viewModel) => {\r\n let self = viewModel;\r\n let items = [];\r\n let ContractItemsAll = [];\r\n if (self.ItemsToAdd)\r\n $.each(self.ItemsToAdd(), function (index, item) {\r\n if (item.QtySelected() === item.QtySelected.originalValue) {\r\n return;\r\n }\r\n item.QtyOrdered = item.QtySelected();\r\n console.log(\"HERE IS THE ITEM: \" + item);\r\n items.push(item);\r\n })\r\n if (items.length < 1) {\r\n self.AlertModal.Title(\"Life-Assist Notification\")\r\n self.AlertModal.Content(\"You don't have any item to update.\\nPlease select items from our products.\");\r\n $('#alertModal').modal('show');\r\n return;\r\n }\r\n\r\n let itemsAdded = [];\r\n items.forEach(function (item) {\r\n if (item.QtySelected() > item.QtySelected.originalValue) {\r\n item.added = item.QtySelected() - item.QtySelected.originalValue;\r\n itemsAdded.push(item);\r\n }\r\n })\r\n\r\n let itemsRemoved = [];\r\n items.forEach(function (item) {\r\n if (item.QtySelected() < item.QtySelected.originalValue) {\r\n item.removed = item.QtySelected.originalValue - item.QtySelected();\r\n itemsRemoved.push(item);\r\n }\r\n })\r\n\r\n //console.log(\"AddChoicesToCart items: \", items);\r\n\r\n let dataLayerItem = (obj) => {\r\n\r\n let item = Object.assign({}, obj);\r\n let allProducts = [];\r\n\r\n if (typeof (self.ItemRows) === 'function') {\r\n allProducts = self.ItemRows();\r\n }\r\n else {\r\n allProducts = self.ItemRowModel().concat(self.AccessoryRowModel());\r\n }\r\n\r\n if (!obj.UoMPrices) {\r\n obj = allProducts.find(function (item) {\r\n return item.ItemID === obj.ItemID;\r\n });\r\n };\r\n\r\n let UoMSelected = obj.UoMPrices().find(function (item) {\r\n return item.UMQty === obj.UMQtySelected();\r\n });\r\n\r\n let index = allProducts.findIndex((item) => {\r\n return item.ItemID === obj.ItemID;\r\n })\r\n\r\n return {\r\n brand: obj.Name || obj.VendName,\r\n category: obj.Heading || obj.Description,\r\n id: obj.ItemID,\r\n name: obj.SDname || obj.Description,\r\n price: UoMSelected.Price,\r\n variant: UoMSelected.UoM,\r\n quantity: item.added || item.removed || obj.Quantity(),\r\n position: index\r\n }\r\n }\r\n\r\n let addDataLayerArray = itemsAdded.map(dataLayerItem);\r\n let removeDataLayerArray = itemsRemoved.map(dataLayerItem);\r\n console.debug(\"dataLayer items array: \", { addDataLayerArray, removeDataLayerArray });\r\n let SpecialPriceShown = true;\r\n function addManyToCart(itemsArray) {\r\n let cartVM = (window).cartVM;\r\n let header = (cartVM).header;\r\n console.info(\"Adding multiple items to cart...\")\r\n\r\n function itemToAdd(item) {\r\n return {\r\n CartOrderID: parseInt(header.LocalKey()),\r\n ItemID: item.ItemID,\r\n UoM: item.UoM,\r\n QtyOrdered: item.QtySelected(),\r\n UoMPackSize: item.UMQty\r\n };\r\n }\r\n\r\n var selectedSupplyListID = AddToCartVM.getSelectedSupplyList()\r\n let payload = itemsArray.map(itemToAdd);\r\n var data = { items: payload, supplyListID: selectedSupplyListID };\r\n return new Promise(function (resolve, reject) {\r\n return new AjaxPost({\r\n backdrop: true,\r\n endpoint: '/ShoppingCart/AddManyItems',\r\n payload: JSON.stringify(data),\r\n cbFunction: function (response) { \r\n if (addDataLayerArray.length > 0)\r\n window.dataLayer.push(new DataLayerModelFactory().addToCart(addDataLayerArray));\r\n if (removeDataLayerArray.length > 0)\r\n window.dataLayer.push(new DataLayerModelFactory().removeFromCart(removeDataLayerArray));\r\n resolve(response);\r\n },\r\n errFunction: function (err) {\r\n reject(err);\r\n }\r\n });\r\n });\r\n } ////=== addManyToCart\r\n\r\n function processResults(results) { \r\n self.ContractItems = [];\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n if (!results) {\r\n reject(\"No results to process.\");\r\n }\r\n let success = 0,\r\n fail = 0,\r\n successItems = [],\r\n failItems = [];\r\n\r\n results.ItemList.forEach(function (result, index) {\r\n if (result.Message.split(':')[1].trim() === \"AddToContract\" || result.Message.split(':')[1].trim() === \"AddToContractSPECIALPRICE\") {\r\n ContractItemsAll.push(result);\r\n }\r\n if (result.Message.split(':')[0].trim() !== \"Error\") {\r\n success += 1;\r\n successItems.push(result);\r\n } else {\r\n fail += 1;\r\n failItems.push(result);\r\n }\r\n\r\n });\r\n\r\n self.ContractItems = ContractItemsAll.reduce(function (a, b) {\r\n function indexOfProperty(a, b) {\r\n for (var i = 0; i < a.length; i++) {\r\n if (a[i].ItemID == b.ItemID) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n if (indexOfProperty(a, b) < 0) a.push(b);\r\n return a;\r\n }, []);\r\n\r\n\r\n let message = success + (success > 1 ? \" items \" : \" item \") + \"added to / updated in cart. \";\r\n if (fail > 0) {\r\n message += fail + (fail > 1 ? \" items \" : \" item \") + \"were not added to / updated in cart. \";\r\n };\r\n\r\n let returnObj = { message: message, failItems: failItems, successItems: successItems };\r\n\r\n resolve(returnObj);\r\n })\r\n\r\n }\r\n\r\n function getContractPrices() {\r\n console.info(\"Getting contract pricing for items...\")\r\n return new Promise(function (resolve, reject) {\r\n let contractPromises = [];\r\n\r\n $.each(self.ContractItems, function (index, item) {\r\n contractPromises.push(getSpecialPrice(item.ItemID));\r\n })\r\n\r\n if (contractPromises.length < 1) {\r\n console.info(\"No special pricing available\")\r\n reject(\"No special pricing available.\");\r\n SpecialPriceShown = false;\r\n\r\n return;\r\n }\r\n\r\n Promise.all(contractPromises)\r\n .then(function (results) {\r\n SpecialPriceShown = true;\r\n resolve(results);\r\n });\r\n })\r\n }\r\n\r\n function displaySpecialPrice(results) {\r\n if (results) {\r\n $('#page-preloader').hide();\r\n self.ContractPricingLevels([]);\r\n var ContractPricingLength = 0;\r\n results.forEach(function (result, index) {\r\n // Display only the UoMs that were added\r\n ContractItemsAll.forEach(function (item, index) {\r\n result.forEach(function (row, i) {\r\n if (row.ItemID === item.ItemID && row.UMQty === item.UoMPackSize) {\r\n $.ajax({\r\n url: '/ShoppingCart/GetSaleContractItemInfo/' + item.ItemID,\r\n async: false,\r\n success: function (res) {\r\n if (res === \"N:Y\") { ///=== or should it be || res === \"Y:Y\" ) AMR\r\n self.ContractPricingLevels.push(row);\r\n ContractPricingLength++;\r\n }\r\n }\r\n })\r\n }\r\n })\r\n })\r\n });\r\n var modal = $('#modal-add-choices-to-contract');\r\n if (ContractPricingLength === 0) {\r\n modal.modal('hide');\r\n SpecialPriceShown = false;\r\n }\r\n else {\r\n if (ContractPricingLength === 1) {\r\n modal.find(\"#numItems\").html(\"this item\");\r\n }\r\n else {\r\n modal.find(\"#numItems\").html(\"these items\");\r\n }\r\n modal.find(\".modal-body\").show();\r\n modal.find(\"#noItemToContract\").hide();\r\n modal.find(\".modal-footer\").show();\r\n modal.modal('show');\r\n $(\"#alertModal\").modal('hide');\r\n SpecialPriceShown = true;\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n let OnlySupplyList = [],\r\n OnlyContractPrice = [],\r\n QuotaExceeded = [],\r\n QuoteProvided = false,\r\n AllocationExceeded = [],\r\n AllocationExceededNoOrder = [],\r\n SuccessItemsResponse = [];\r\n\r\n function sortRestrictions(results) {\r\n // Reset arrays\r\n OnlySupplyList = [];\r\n OnlyContractPrice = [];\r\n QuotaExceeded = [];\r\n AllocationExceeded = [];\r\n AllocationExceededNoOrder = [],\r\n SuccessItemsResponse = results.ItemList;\r\n \r\n if (results.Cart.LastActivity === \"Requested Quote\") {\r\n QuoteProvided = true;\r\n } else {\r\n results.ItemList.forEach(function (item, indx) {\r\n if (item.Message === \"Error: OnlySupplyList\") {\r\n item.Message = \"Not on any supply list\";\r\n OnlySupplyList.push(item);\r\n }\r\n if (item.Message === \"Error: OnlyContractPrice\") {\r\n item.Message = \"Not on contract pricing list\";\r\n OnlyContractPrice.push(item);\r\n }\r\n if (item.Message === \"Error: Quota Exceeded\") {\r\n item.Message = \"Quota for item has exceeded\";\r\n QuotaExceeded.push(item);\r\n }\r\n if (item.Message === \"Error: Allocation Limit Reached.\") {\r\n item.Message = \"Allocation Limit Reached.\";\r\n AllocationExceeded.push(item);\r\n }\r\n\r\n if (item.Message === \"Error: Allocation Not Taking Orders.\") {\r\n item.Message = \"Allocation Not Taking Orders.\"; \r\n AllocationExceededNoOrder.push(item);\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n function getRestrictAdmins() {\r\n return new Promise(function (resolve, reject) {\r\n return $.getJSON('/ShoppingCart/GetRestrictAdmins/OnlySupplyList', function (response) {\r\n resolve(response);\r\n })\r\n })\r\n }\r\n\r\n function getSpecialPrice(ItemID) {\r\n return new Promise(function (resolve, reject) {\r\n $.getJSON('/ShoppingCart/GetContractItemInfo/' + ItemID, function (result) {\r\n if (!result)\r\n return reject(\"No results.\");\r\n if (result.toString().split(':')[0] !== \"Error\") {\r\n return resolve(result);\r\n }\r\n });\r\n })\r\n }\r\n\r\n \r\n\r\n addManyToCart(items)\r\n // Select contract items from result\r\n .then(function (results) {\r\n // Refresh models\r\n let cart: ICartData = (results).Cart;\r\n let cartVM = (window).cartVM;\r\n let header: CartHeaders = (cartVM).header\r\n // Set the cart key \r\n localStorage.setItem(\"CartSessionKey\", (results).Cart.CartOrderNo.toString());\r\n header.LocalKey((results).Cart.CartOrderNo.toString());\r\n console.debug(\"Cart to be passed in as new header\", cart);\r\n header.ParseCartData(cart).then(() => {\r\n header.UpdateRequestID();\r\n });\r\n\r\n // sort restricted item results into separate lists \r\n sortRestrictions(results);\r\n if (!QuoteProvided) {\r\n processResults(results)\r\n .then(((resolve: any) => {\r\n console.debug(\"processResults Message\", resolve.message);\r\n if (resolve.successItems.length > 0) {\r\n console.debug(\"Items added/updated\", resolve.successItems);\r\n }\r\n if (resolve.failItems.length > 0) {\r\n console.debug(\"Items that failed\", resolve.failItems);\r\n }\r\n }))\r\n .catch(function (reject) {\r\n $('#page-preloader').hide();\r\n });\r\n } else {\r\n self.AlertModal.Title(\"Cart Locked\");\r\n let alertContent = \"We're sorry, but this cart is locked to modifications.\";\r\n alertContent += \"

Please start a new cart or contact \";\r\n alertContent += \"quotes@life-assist.com \"\r\n alertContent += \"or Customer Care at 800-824-6016 \"\r\n alertContent += \"to request additions or modifications to this cart.

\";\r\n alertContent += \"

We'd be happy to assist you!

\";\r\n alertContent += \"

Please reference Cart #\" + header.LocalKey() + \"

\";\r\n self.AlertModal.Content(alertContent);\r\n $(\"#alertModal\").modal('show');\r\n }\r\n\r\n })\r\n\r\n // do stuff with restricted items list\r\n .then(function () { \r\n let cartVM = (window).cartVM;\r\n let header = (cartVM).header;\r\n let array = [];\r\n failedItemList = [];\r\n failedItemNotTakingOrder = [];\r\n \r\n let isAllocation = false;\r\n let isAllocation_NoOrderTaken = false;\r\n if (OnlySupplyList.length > 0) {\r\n OnlySupplyList.forEach((item, indx) => {\r\n array.push(item);\r\n })\r\n }\r\n if (QuotaExceeded.length > 0) {\r\n QuotaExceeded.forEach((item, indx) => { \r\n array.push(item);\r\n })\r\n }\r\n if (OnlyContractPrice.length > 0) {\r\n OnlyContractPrice.forEach((item, indx) => {\r\n array.push(item);\r\n })\r\n }\r\n if (AllocationExceeded.length > 0) {\r\n AllocationExceeded.forEach((item, indx) => { \r\n array.push(item);\r\n isAllocation = true;\r\n self.ApprovalType(\"A\");\r\n failedItemList.push(item)\r\n })\r\n }\r\n if (AllocationExceededNoOrder.length > 0) {\r\n AllocationExceededNoOrder.forEach((item, indx) => { \r\n array.push(item);\r\n isAllocation = true;\r\n isAllocation_NoOrderTaken = true;\r\n self.ApprovalType(\"N\");\r\n failedItemNotTakingOrder.push(item)\r\n })\r\n }\r\n\r\n\r\n if (array.length > 0) {\r\n if (!isAllocation) {\r\n getRestrictAdmins().then((results) => {\r\n\r\n self.AddressBook((results).RestrictAdmins);\r\n self.RestrictionItems(array);\r\n self.RestrictionItems.valueHasMutated();\r\n\r\n let message = array.length > 1 ? \"Some items you selected are have been restricted and therefore, \"\r\n + \"are not approved items. Please contact your administrator(s) to request the approval for these items.\" :\r\n \"The item you selected is restricted and therefore, is not an approved item. \"\r\n + \"Please contact your administrator(s) to request the approval for this item.\";\r\n let title = array.length > 1 ? \"Supply List Restrictions in Effect\" : \"Supply List Restriction in Effect\";\r\n $('#modal-add-item-restriction').find('.modal-title').first().text(title);\r\n $('#restriction-message').text(message);\r\n $('#modal-add-item-restriction').modal('show');\r\n }).catch((err) => {\r\n $('#page-preloader').hide();\r\n console.error(\"getRestrictAdmins error: \", err);\r\n })\r\n }\r\n else if (isAllocation) {\r\n getRestrictAdmins().then((results) => {\r\n\r\n self.AddressBook(GetAllocationsNoticeAddressBook)\r\n self.RestrictionItems(array);\r\n self.RestrictionItems.valueHasMutated();\r\n\r\n let message = isAllocation_NoOrderTaken ? GetAdvisoryNoOrderAllocation : GetAdvisoryAllocation; \r\n let title = isAllocation_NoOrderTaken ? GetAdvisoryNoOrderAllocationHeading : GetAdvisoryAllocationHeading;\r\n $('#modal-add-item-restriction').find('.modal-title').first().text(title);\r\n $('#restriction-message').html(message);\r\n $('#modal-add-item-restriction').modal('show');\r\n }).catch((err) => {\r\n $('#page-preloader').hide();\r\n console.error(\"getRestrictAdmins error: \", err);\r\n })\r\n }\r\n }\r\n })\r\n // Display results of special prices query\r\n .then(function () { \r\n getContractPrices()\r\n .then(function (results) {\r\n displaySpecialPrice(results)\r\n })\r\n .catch(function (reject) {\r\n $('#page-preloader').hide();\r\n });\r\n })\r\n .then(function () { \r\n function AskReviewCart(alertContent, info) {\r\n self.AlertModal.Title(info);\r\n alertContent += \"
Would you like to review your shopping cart?\";\r\n self.AlertModal.Content(alertContent);\r\n $(\"#alertModal\").modal('show');\r\n self.AlertModal.MainButtonText(\"Review Cart\");\r\n $('#main-button').on('click', function () {\r\n $(\"#alertModal\").modal('hide');\r\n return window.location.href = \"/ShoppingCart\";\r\n })\r\n self.AlertModal.SecondButtonText(\"Never Ask Again\");\r\n $(\"#secondary-button\").click(() => {\r\n window.localStorage.setItem(\"SuppressAddConfirm\", \"true\");\r\n $(\"#alertModal\").modal('hide');\r\n })\r\n $(\"#alertModal\").find(\"#main-button\").show();\r\n $(\"#alertModal\").find(\"#secondary-button\").show();\r\n $(\"#alertModal\").find(\".modal-dialog\").addClass(\"modal-lg\");\r\n }\r\n\r\n {\r\n \r\n let clickHereText = \"This item is on an extended backorder. Click here to view possible alternatives\";\r\n let cartItems = \"\";\r\n for (let x = 0; x < items.length; x++) { \r\n let removed = items[x].removed;\r\n let added = items[x].added;\r\n console.log(\"removed:\" + removed + \" | added:\" + added);\r\n let whatToDo = (removed === undefined || removed == 0) ? (added === 1 ? \"Added \" + added + \" unit\" : \"Added \" + added + \" units\")\r\n : (removed === 1 ? \"Removed \" + removed + \" unit\" : \"Removed \" + removed + \" units\")\r\n cartItems += \"\" + items[x].ItemID + \" (\" + whatToDo + \" of \" + items[x].Description;\r\n let logic = \"\"\r\n if (items[x].OnSale === \"Y\" && (items[0].AddToContract === \"N\" || items[0].AddToContract === \"Y\")) {\r\n logic = \" at Current Sale Price)\";\r\n }\r\n if (items[x].OnSale === \"N\" && items[0].AddToContract === \"Y\") {\r\n logic = \")\";\r\n }\r\n cartItems += logic + \" \" + (items[x].QtySelected() === 0 ? \" Nothing left!\" : \"\") + \"
\";\r\n $('#quantity-field-' + items[x].ItemID).attr(\"old-value\", items[x].QtySelected());\r\n items[x].removed = 0; items[x].added = 0; /// clear values\r\n \r\n if (added != undefined && added > 0)\r\n { \r\n let index = SuccessItemsResponse.findIndex(z => z.ItemID === items[x].ItemID); \r\n if (index >= 0)\r\n { \r\n if (SuccessItemsResponse[index]) {\r\n if (SuccessItemsResponse[index].AltItemList.length > 0) {\r\n let AltItemsString = AddToCartVM.AltItemsHtml(clickHereText, SuccessItemsResponse[index]);\r\n cartItems += AltItemsString\r\n }\r\n }\r\n } \r\n }\r\n\r\n }\r\n if (items.length == 1) {\r\n if (cartItems.indexOf(\"Nothing left\") >= 0) {\r\n AskReviewCart(items[0].ItemID + \" has been removed from your shopping cart.\",\r\n \"Shopping Cart Item Removal Information.\");\r\n return;\r\n }\r\n let extraPrice = \".\"\r\n if (items[0].OnSale == \"Y\" && (items[0].AddToContract === \"N\" || items[0].AddToContract === \"Y\")) {\r\n extraPrice = \" at Current Sale Price.\"\r\n }\r\n if (items[0].OnSale == \"N\" && items[0].AddToContract === \"Y\") {\r\n extraPrice = \".\"\r\n }\r\n AskReviewCart(items[0].QtySelected() + ((items[0].QtySelected() === 1) ? \" unit of \" : \" units of \") + \"\" + items[0].Description\r\n + \" has successfully been added to your cart\" + extraPrice, \"Add to your Cart | \" + items[0].ItemID);\r\n }\r\n else {\r\n AskReviewCart(cartItems, items.length + \" Items updated on your cart.\");\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n };\r\n\r\n static EventListeners = ((vm) => {\r\n\r\n let self = vm;\r\n\r\n $('#create-new-supply-list').on('click', () => {\r\n\r\n let SupplyListName = $('#new-list-name').val().toString().trim();\r\n\r\n\r\n if (SupplyListName.length === 0) {\r\n $(\"#new-list-err\").text(\"List name cannot be empty!\");\r\n return;\r\n }\r\n\r\n self.CreateNewList(SupplyListName, vm);\r\n\r\n let endpoint = \"/ShoppingCart/CreateSupplyList\";\r\n\r\n $(document).ajaxSuccess((event, xhr, options) => {\r\n if (options.url === endpoint) {\r\n $(\"#new-list-err\").empty();\r\n $('#create-new-list-modal').modal('hide');\r\n $('#new-list-name').val(\"\")\r\n }\r\n })\r\n\r\n $(document).ajaxError((evt, xhr, opt, exc) => {\r\n if (opt.url === endpoint) {\r\n $('#new-list-name').val(\"\")\r\n $(\"#new-list-err\").text(exc);\r\n }\r\n })\r\n\r\n });\r\n $(\"#alertModal\").modal(\"hide\")\r\n\r\n $('#modal-add-item-restriction').on(\"hidden.bs.modal\", function () {\r\n //$(\"#alertModal\").modal(\"show\"); // the isse is the cart will report wrong items has been added\r\n //turnAllocationDialogOn = false; we will revisit this feature if needed --- AMR\r\n });\r\n\r\n $('#modal-add-item-restriction').on(\"show.bs.modal\", function () {\r\n turnAllocationDialogOn = true;\r\n // I will cheat on this one to give time for the other modal to even create -- AMR \r\n setTimeout(function () {\r\n $(\"#alertModal\").modal(\"hide\")\r\n }, 100);\r\n\r\n\r\n });\r\n\r\n $('#create-new-list-back').click(function () {\r\n\r\n $('#create-new-list-modal').modal('hide');\r\n $('#add-to-list-modal').modal('show');\r\n });\r\n\r\n $('#add-to-contract-button').click(function () {\r\n let contractItem = self.ContractItems[0].ItemID;\r\n self.AddToContractFunction(contractItem, vm.ArrayToUpdate(contractItem), vm);\r\n $('#modal-add-to-contract').modal('hide');\r\n });\r\n\r\n $('#add-choices-to-contract-button').click(function () {\r\n if (self.ContractItems.length < 1) {\r\n $('#modal-add-choices-to-contract').modal('hide');\r\n return;\r\n }\r\n\r\n console.debug(\"Contract Items to submit\", self.ContractItems);\r\n\r\n let promises = [];\r\n\r\n self.ContractItems.forEach((item) => {\r\n promises.push(self.AddToContractFunction(item.ItemID, self.ArrayToUpdate(item.ItemID), self));\r\n });\r\n\r\n if (promises.length < 1) {\r\n $('#modal-add-choices-to-contract').modal('hide');\r\n return;\r\n }\r\n\r\n $('#page-preloader').show();\r\n Promise.all(promises)\r\n .then(function () {\r\n $('#page-preloader').hide();\r\n $('#modal-add-choices-to-contract').modal('hide');\r\n });\r\n\r\n })\r\n\r\n })\r\n\r\n}","import { ICartRowItem } from \"../../../Cart/types/ICartRowItem\";\r\n\r\nexport class ItemRowModel {\r\n\r\n public PopupImage: KnockoutObservable = ko.observable('imagenotavailable.jpg');\r\n public LoadPopupImage = (data) => {\r\n console.debug(\"LoadPopupImage: \", { data });\r\n if (!data) {\r\n return this.PopupImage('imagenotavailable.jpg');\r\n }\r\n if (typeof data == 'string') {\r\n this.PopupImage(data);\r\n } else {\r\n if (data.ItemImagePrimary) {\r\n let popupImage = document.getElementById('popup-image');\r\n if (data.ItemAltText) {\r\n popupImage.setAttribute(\"alt\", data.ItemAltText);\r\n }\r\n else if (data.Description) {\r\n popupImage.setAttribute(\"alt\", data.Description);\r\n }\r\n\r\n if (data.SDname) {\r\n popupImage.setAttribute(\"title\", data.SDname);\r\n } else if (data.Description){\r\n popupImage.setAttribute(\"title\", data.Description);\r\n }\r\n this.PopupImage(data.ItemImagePrimary);\r\n }\r\n else {\r\n return this.PopupImage('imagenotavailable.jpg');\r\n }\r\n }\r\n }\r\n\r\n public QtyOrdered = (data: ICartRowItem) => {\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return 0;\r\n if (data.QtyOrdered != null)\r\n return data.QtyOrdered;\r\n else\r\n return 0;\r\n }\r\n }, this);\r\n }\r\n\r\n public AddToContract = (data: ICartRowItem) => {\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return 0;\r\n if (data.AddToContract != null)\r\n return data.AddToContract;\r\n else\r\n return \"\";\r\n }\r\n }, this);\r\n }\r\n\r\n public OnSale = (data: ICartRowItem) => {\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return 0;\r\n if (data.OnSale != null)\r\n return data.OnSale;\r\n else\r\n return \"\";\r\n }\r\n }, this);\r\n }\r\n\r\n public OnContract = (data: ICartRowItem) => {\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return 0;\r\n if (data.OnContract != null)\r\n return data.OnContract;\r\n else\r\n return false;\r\n }\r\n }, this);\r\n }\r\n\r\n \r\n public StockStatus = (data: ICartRowItem) => // Add popover stock status\r\n {\r\n if (!data) {\r\n return;\r\n }\r\n let alertStatus = \"\",\r\n alertExpStatus = \"\";\r\n if (data.ALERTStatus !== null) {\r\n let tmpdata = data.ALERTStatus.replace(/\"/g, \""\");\r\n alertStatus = tmpdata.replace(/'/g, \"'\");\r\n }\r\n if (data.ALERTExpStatus !== null) {\r\n let tmpdata = data.ALERTExpStatus.replace(/\"/g, \""\");\r\n alertExpStatus = tmpdata.replace(/'/g, \"'\");\r\n } \r\n let htmlShipping =\r\n `
Est. Ship Date:` + data.INFOEstShipDate + `
`;\r\n let htmlBackorder =\r\n `
\r\n
Backorder Status:`\r\n + alertStatus + `
\r\n
Origination Date:` + data.ALERTOrgDate + `
\r\n
Last Updated:` + data.ALERTUpdateDate + `
\r\n
`;\r\n let htmlExpiring =\r\n `\r\n
Please Note:`\r\n + alertExpStatus + `
\r\n `;\r\n let alertString = \"\";\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return;\r\n\r\n switch (data.Status) { \r\n case 'IN STOCK':\r\n return '';\r\n case 'ALERT':\r\n if (data.AlertType === \"Expiring\")\r\n {\r\n alertString = htmlExpiring;\r\n return '';\r\n } \r\n if (data.AlertType === \"Backorder\")\r\n alertString = htmlBackorder;\r\n if (data.AlertType === \"Allocation\")\r\n {\r\n alertString = htmlBackorder; \r\n return '';\r\n } \r\n return '';\r\n case 'INFO':\r\n return ''; \r\n case 'DIRECTSHIP':\r\n return '';\r\n }\r\n }\r\n }, this);\r\n }\r\n public IsRx = (data: ICartRowItem) => {\r\n return ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!data)\r\n return;\r\n if (data.Rx)\r\n return '';\r\n }\r\n }, this);\r\n }\r\n\r\n public GetSelectionQty = (data, context) => {\r\n if (!data || !context)\r\n return;\r\n context.UMQtySelected(data.UMQty);\r\n context.Quantity(data.QtySelected());\r\n context.Quantity.setOriginalValue(data.QtySelected());\r\n }\r\n\r\n public MatchUMQty = (umqty, item) => {\r\n if (!umqty || !item)\r\n return;\r\n $.each(item.UoMPrices(), (index, uom) => {\r\n // Find UoM Qty match\r\n if (uom.UMQty === umqty) {\r\n item.Quantity(uom.QtySelected())\r\n }\r\n })\r\n\r\n }\r\n public UpdateQty = (data: any, event) => {\r\n let button = $(event.currentTarget);\r\n let input = $(button).parent().parent().find('input[name=Quantity]');\r\n let btn = \"\";\r\n if ($(input).attr(\"shopCart\") == \"1\") {\r\n let btn = ($(button).attr(\"id\")).replace(\"2-\", \"-\").replace(\"1-\", \"-\");\r\n btn = btn.replace(\"add-to-cart-btn-\", \"quantity-field-\");\r\n btn = $(\"#\" + btn).attr(\"old-value\");\r\n }\r\n let baseValue = (btn > \"\") ? btn : $(\"#\" + $(input).attr(\"id\").replace(\"add-to-cart-btn-\", \"quantity-field-\")).attr(\"old-value\");\r\n let qty: KnockoutObservable;\r\n qty = (data.Quantity) ? (data.Quantity) : data.QuantityOrdered\r\n var currentValue = parseInt(input.val().toString());\r\n var maxValue = parseInt(input.attr('max'));\r\n var minValue = parseInt(input.attr('min'));\r\n var newValue = currentValue;\r\n console.log(\"UpdateQty values: \", { data, event, qty, currentValue });\r\n if (button.data('action') === 'increment') {\r\n newValue++;\r\n newValue = (newValue <= maxValue) ? newValue : currentValue;\r\n }\r\n else if (button.data('action') === 'decrement') {\r\n newValue--;\r\n newValue = (newValue > minValue) ? newValue : 0;\r\n }\r\n data.QuantityOrdered = newValue;\r\n if (newValue != parseInt(baseValue)) {\r\n data.QuantityOrdered = newValue;\r\n data.QtyOrdered = newValue;\r\n } \r\n qty(newValue);\r\n \r\n if($('#items-repeater').children().length <= 2 && newValue == 0){\r\n // No items left in cart\r\n let link = $('our product categories.').attr({\r\n 'href': '/products/',\r\n 'style': 'text-decoration:underline'\r\n }),\r\n msg = $('Cart is empty. Start browsing ').append(link);\r\n\r\n $('#empty-cart-alert').empty().append(msg);\r\n $('#active-cart').hide();\r\n\r\n $('#cart-order-number').text('');\r\n $('#cart-order-number-label').hide();\r\n localStorage.removeItem(\"CartSessionKey\");\r\n }\r\n\r\n console.log(button.data('action') + data.ItemID, { data, currentValue, baseValue, newValue, qty })\r\n }\r\n}","export function CustomPopover() {\r\n\r\n let templateEngine = new ko.nativeTemplateEngine();\r\n\r\n ko.bindingHandlers.customPopover = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var placement = allBindings.get(\"placement\") || \"top\",\r\n trigger = allBindings.get(\"trigger\") || \"click\",\r\n templateName = allBindings.get(\"customPopover\") || null,\r\n $element = $(element);\r\n\r\n let template = '
';\r\n template += '

';\r\n template += '
';\r\n\r\n $element.popover({\r\n placement: placement,\r\n trigger: trigger,\r\n html: true,\r\n content: \" \",\r\n template: template\r\n });\r\n\r\n $element.on(\"inserted.bs.popover\", function () {\r\n var container = $(\".popover\")[0];\r\n\r\n if (templateName) {\r\n\r\n ko.renderTemplate(templateName, viewModel, { templateEngine: templateEngine }, container);\r\n }\r\n else {\r\n container.innerHTML = $element.attr(\"data-content\");\r\n }\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n $element.popover(\"dispose\");\r\n });\r\n }\r\n };\r\n}"," import { AjaxPost } from \"../../../Services/index\";\r\n\r\nexport class ItemListModels {\r\n public SelectedItem: KnockoutObservable = ko.observable(null);\r\n public SupplyLists: KnockoutObservableArray = ko.observableArray([]);\r\n\r\n public AddToList = (product, vm) => {\r\n \r\n if (!product)\r\n return;\r\n \r\n let self = vm;\r\n self.SelectedItem(product);\r\n\r\n\r\n\r\n\r\n\r\n let listRecNo = 0;\r\n\r\n function AddToList(itemToAdd) {\r\n \r\n return new Promise((resolve, reject) => {\r\n return new AjaxPost({\r\n endpoint: '/ShoppingCart/AddItemToSupplyList',\r\n payload: JSON.stringify(ko.toJS(itemToAdd)),\r\n cbFunction: function (response) {\r\n if (!response)\r\n return;\r\n\r\n let error = response.split(':')[0] === 'Error',\r\n msgBody = error ? response : response.split(':')[1];\r\n\r\n $('#add-to-new-list-button').hide();\r\n\r\n resolve(response);\r\n },\r\n\r\n errFunction: function (err) {\r\n\r\n reject(err);\r\n }\r\n });\r\n }).then(() => { \r\n $(\"#add-to-list-modal\").modal('hide');\r\n $(\"#create-new-list-modal\").modal('hide');\r\n })\r\n }\r\n\r\n\r\n $('#new-list-name').val(\"\");\r\n\r\n \r\n console.log(\"AddToList data: \", { product, vm });\r\n\r\n let init = true;\r\n \r\n \r\n $(document).on('click', '#add-to-list-button', function () { \r\n \r\n \r\n let DefaultUMDescription = $('#DefaultUMDescription').val(),\r\n SelectedList = $('#SelectedList').val();\r\n\r\n let payload = {\r\n SupplyListRecNo: SelectedList === \"null\" ? null : SelectedList,\r\n ItemID: product.ItemID,\r\n DefaultUMDescription: DefaultUMDescription,\r\n ItemGroupRecNo: product.ItemGroupRecNo\r\n }\r\n\r\n if (init) {\r\n if (SelectedList === \"null\") {\r\n // handle this later.\r\n }\r\n\r\n AddToList(payload);\r\n init = false;\r\n }\r\n });\r\n \r\n $('#create-new-list-button').click(function () {\r\n \r\n let DefaultUMDescription = $('#DefaultUMDescription').val();\r\n let desc = product.Description + \" - \" || \"\";\r\n let itemToAddDesc = desc + \"(Default UoM: \" + DefaultUMDescription.toString().trim() + \")\";\r\n\r\n $('#selected-item').text(itemToAddDesc);\r\n $('#add-to-list-modal').modal('hide');\r\n \r\n $(\"#new-list-err\").empty();\r\n $('#create-new-list-modal').modal('show');\r\n\r\n $('#create-new-list-back').show();\r\n $('#add-to-new-list-button').click(function () {\r\n \r\n let payload = {\r\n SupplyListRecNo: listRecNo,\r\n ItemID: product.ItemID,\r\n DefaultUMDescription: DefaultUMDescription.toString().trim(),\r\n ItemGroupRecNo: product.ItemGroupRecNo\r\n }\r\n\r\n if (init) {\r\n AddToList(payload);\r\n init = false;\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n var hasAnySupplyListItems = $(\"#hdn_HasAnySupplyListItems\").val() == \"True\" ? true : false; \r\n if (!hasAnySupplyListItems) { // Account has no supply list\r\n $('#create-new-list-modal').modal('show'); \r\n return;\r\n }\r\n $('#add-to-list-modal').modal('show');\r\n \r\n };\r\n public CreateNewList = (listname: string, vm) => {\r\n let self = vm;\r\n \r\n return new Promise((resolve, reject) => {\r\n\r\n $('#create-new-list-modal').on('hidden.bs.modal', () => {\r\n \r\n $('#add-to-list-modal').modal('show');\r\n $(\"#SelectedList option:last\").attr(\"selected\", \"selected\");\r\n })\r\n\r\n return new AjaxPost({\r\n endpoint: '/ShoppingCart/CreateSupplyList',\r\n payload: JSON.stringify({ SupplyListName: listname }),\r\n cbFunction: function (response) {\r\n if (!response)\r\n return;\r\n\r\n let success = response.split(':')[0] === 'Success',\r\n error = response.split(':')[0] === 'Error',\r\n msgBody = error ? response : response.split(':')[1];\r\n\r\n\r\n if (success) {\r\n\r\n \r\n let SupplyListRecNo = response.split(':')[2];\r\n\r\n let listObj = {\r\n SupplyListRecNo: parseInt(SupplyListRecNo),\r\n Display: listname.toString().trim()\r\n };\r\n\r\n console.debug(\"New list object: \", listObj);\r\n\r\n self.SupplyLists.push(listObj);\r\n self.SupplyLists.valueHasMutated();\r\n $('#create-new-list-modal').modal('hide');\r\n\r\n \r\n\r\n //append to our dropdown if it did not already exist \r\n //this should be captured in an event listener and responded to by the model instead of right here \r\n var optionExists = ($('#SelectedList option[value=' + SupplyListRecNo + ']').length > 0);\r\n if (!optionExists) { \r\n $('#SelectedList').append(\"\");\r\n }\r\n if ($(\"#hdn_HasAnySupplyListItems\").length > 0)\r\n { \r\n var HasAnySupplyListItems = $('#SelectedList option').length > 0 ? \"True\": \"False\";\r\n $(\"#hdn_HasAnySupplyListItems\").val(HasAnySupplyListItems);\r\n }\r\n \r\n } else {\r\n console.error(\"CreateSupplyList error: \", msgBody);\r\n $(\"#new-list-err\").text(\"An error occured. Our tech team has been notified.\");\r\n }\r\n\r\n resolve(response);\r\n },\r\n\r\n errFunction: function (err) {\r\n\r\n reject(err);\r\n }\r\n });\r\n });\r\n\r\n };\r\n}","import { ICartRowItem } from \"../../../Cart/types/ICartRowItem\";\r\n\r\nexport interface IProductRowItem extends ICartRowItem {\r\n IsInCart?: KnockoutObservable;\r\n UoMSelected: KnockoutObservable;\r\n Quantity: KnockoutObservable;\r\n UMQtySelected: KnockoutObservable;\r\n}\r\n\r\n\r\nclass ProductRowPayLoad {\r\n CartOrderID: string;\r\n ItemID: string;\r\n QtyOrdered: number;\r\n UoMPackSize: number;\r\n \r\n constructor(data: any) {\r\n let self = this;\r\n\r\n if (localStorage.getItem(\"CartSessionKey\")) {\r\n self.CartOrderID = localStorage.getItem(\"CartSessionKey\").toString();\r\n } else {\r\n self.CartOrderID = \"RequestNewKey\";\r\n }\r\n \r\n self.ItemID = data.ItemID;\r\n self.QtyOrdered = ko.toJS(data.Quantity) || data.QtyOrdered;\r\n self.UoMPackSize = ko.toJS(data.UMQtySelected) || data.UoMPackSize;\r\n }\r\n}\r\n\r\nexport function ProductToAdd(data: any) {\r\n let payload = new ProductRowPayLoad(data);\r\n console.debug(\"ItemRowPayLoad\", payload);\r\n return payload;\r\n}"],"sourceRoot":""}